summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/tab_helper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/tab_helper.cc')
-rw-r--r--chrome/browser/extensions/tab_helper.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc
index 8fe31dd..7763f1a 100644
--- a/chrome/browser/extensions/tab_helper.cc
+++ b/chrome/browser/extensions/tab_helper.cc
@@ -5,11 +5,14 @@
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/extensions/activity_log.h"
+#include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
+#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h"
#include "chrome/browser/extensions/app_notify_channel_ui.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_action.h"
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/page_action_controller.h"
@@ -84,6 +87,10 @@ TabHelper::TabHelper(content::WebContents* web_contents)
pending_web_app_action_(NONE),
script_executor_(new ScriptExecutor(web_contents,
&script_execution_observers_)),
+ rules_registry_service_(
+ ExtensionSystem::Get(
+ Profile::FromBrowserContext(web_contents->GetBrowserContext()))->
+ rules_registry_service()),
ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_ptr_factory_(this)) {
// The ActiveTabPermissionManager requires a session ID; ensure this
// WebContents has one.
@@ -188,6 +195,13 @@ void TabHelper::RenderViewCreated(RenderViewHost* render_view_host) {
void TabHelper::DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {
+#if defined(ENABLE_EXTENSIONS)
+ if (rules_registry_service_) {
+ rules_registry_service_->content_rules_registry()->DidNavigateMainFrame(
+ web_contents(), details, params);
+ }
+#endif // defined(ENABLE_EXTENSIONS)
+
if (details.is_in_page)
return;
@@ -229,6 +243,8 @@ bool TabHelper::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
IPC_MESSAGE_HANDLER(ExtensionHostMsg_ContentScriptsExecuting,
OnContentScriptsExecuting)
+ IPC_MESSAGE_HANDLER(ExtensionHostMsg_OnWatchedPageChange,
+ OnWatchedPageChange)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -417,6 +433,16 @@ void TabHelper::OnContentScriptsExecuting(
on_url));
}
+void TabHelper::OnWatchedPageChange(
+ const std::vector<std::string>& css_selectors) {
+#if defined(ENABLE_EXTENSIONS)
+ if (rules_registry_service_) {
+ rules_registry_service_->content_rules_registry()->Apply(
+ web_contents(), css_selectors);
+ }
+#endif // defined(ENABLE_EXTENSIONS)
+}
+
const Extension* TabHelper::GetExtension(const std::string& extension_app_id) {
if (extension_app_id.empty())
return NULL;