blob: 1020609c17f7c7367ab81d317a3e80f833d534b5 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/devtools/protocol/page_handler.h"
#include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h"
PageHandler::PageHandler(content::WebContents* web_contents,
protocol::UberDispatcher* dispatcher)
: content::WebContentsObserver(web_contents) {
DCHECK(web_contents);
protocol::Page::Dispatcher::wire(dispatcher, this);
}
PageHandler::~PageHandler() {
ToggleAdBlocking(false /* enabled */);
}
void PageHandler::ToggleAdBlocking(bool enabled) {
if (!web_contents())
return;
if (auto* client =
ChromeSubresourceFilterClient::FromWebContents(web_contents())) {
client->ToggleForceActivationInCurrentWebContents(enabled);
}
}
protocol::Response PageHandler::Enable() {
enabled_ = true;
// Do not mark the command as handled. Let it fall through instead, so that
// the handler in content gets a chance to process the command.
return protocol::Response::FallThrough();
}
protocol::Response PageHandler::Disable() {
enabled_ = false;
ToggleAdBlocking(false /* enable */);
// Do not mark the command as handled. Let it fall through instead, so that
// the handler in content gets a chance to process the command.
return protocol::Response::FallThrough();
}
protocol::Response PageHandler::SetAdBlockingEnabled(bool enabled) {
if (!enabled_)
return protocol::Response::Error("Page domain is disabled.");
ToggleAdBlocking(enabled);
return protocol::Response::OK();
}