Commit 76c67583 authored by wjmaclean's avatar wjmaclean Committed by Commit bot

Move RulesRegistryService to //extensions.

This CL moves RulesRegistryService to //extensions. Since it was dependent on ContentRulesRegistry, we move the essential elements of that interface to //extensions as well, renaming what remains as ChromeContentRulesRegistry.

BUG=352293

Review URL: https://codereview.chromium.org/590573002

Cr-Commit-Position: refs/heads/master@{#296255}
parent 4003c4ff
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include "chrome/browser/extensions/api/chrome_extensions_api_client.h" #include "chrome/browser/extensions/api/chrome_extensions_api_client.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h" #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h"
#include "chrome/browser/extensions/api/storage/sync_value_store_cache.h" #include "chrome/browser/extensions/api/storage/sync_value_store_cache.h"
#include "chrome/browser/extensions/api/web_request/chrome_extension_web_request_event_router_delegate.h" #include "chrome/browser/extensions/api/web_request/chrome_extension_web_request_event_router_delegate.h"
#include "chrome/browser/guest_view/app_view/chrome_app_view_guest_delegate.h" #include "chrome/browser/guest_view/app_view/chrome_app_view_guest_delegate.h"
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h" #include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "extensions/browser/api/declarative/rules_registry_service.h"
#include "extensions/browser/guest_view/web_view/web_view_guest.h" #include "extensions/browser/guest_view/web_view/web_view_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h"
...@@ -87,4 +88,12 @@ ChromeExtensionsAPIClient::CreateWebRequestEventRouterDelegate() const { ...@@ -87,4 +88,12 @@ ChromeExtensionsAPIClient::CreateWebRequestEventRouterDelegate() const {
return new ChromeExtensionWebRequestEventRouterDelegate(); return new ChromeExtensionWebRequestEventRouterDelegate();
} }
scoped_refptr<ContentRulesRegistry>
ChromeExtensionsAPIClient::CreateContentRulesRegistry(
content::BrowserContext* browser_context,
RulesCacheDelegate* cache_delegate) const {
return scoped_refptr<ContentRulesRegistry>(
new ChromeContentRulesRegistry(browser_context, cache_delegate));
}
} // namespace extensions } // namespace extensions
...@@ -40,6 +40,9 @@ class ChromeExtensionsAPIClient : public ExtensionsAPIClient { ...@@ -40,6 +40,9 @@ class ChromeExtensionsAPIClient : public ExtensionsAPIClient {
const std::string& event_name) OVERRIDE; const std::string& event_name) OVERRIDE;
virtual WebRequestEventRouterDelegate* CreateWebRequestEventRouterDelegate() virtual WebRequestEventRouterDelegate* CreateWebRequestEventRouterDelegate()
const OVERRIDE; const OVERRIDE;
virtual scoped_refptr<ContentRulesRegistry> CreateContentRulesRegistry(
content::BrowserContext* browser_context,
RulesCacheDelegate* cache_delegate) const OVERRIDE;
private: private:
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsAPIClient); DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsAPIClient);
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/test/thread_test_helper.h" #include "base/test/thread_test_helper.h"
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
#include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/test_extension_dir.h" #include "chrome/browser/extensions/test_extension_dir.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "extensions/browser/api/declarative/rules_registry_service.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_constants.h" #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h" #include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
#include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_prefs.h"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h" #include "extensions/browser/api/declarative/rules_registry_service.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H_ #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_REGISTRY_H_
#define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H_ #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_REGISTRY_H_
#include <map> #include <map>
#include <set> #include <set>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_registrar.h"
#include "extensions/browser/api/declarative/declarative_rule.h" #include "extensions/browser/api/declarative/declarative_rule.h"
#include "extensions/browser/api/declarative/rules_registry.h" #include "extensions/browser/api/declarative_content/content_rules_registry.h"
#include "extensions/browser/info_map.h" #include "extensions/browser/info_map.h"
class ContentPermissions; class ContentPermissions;
...@@ -47,7 +47,7 @@ class RulesRegistryService; ...@@ -47,7 +47,7 @@ class RulesRegistryService;
typedef DeclarativeRule<ContentCondition, ContentAction> ContentRule; typedef DeclarativeRule<ContentCondition, ContentAction> ContentRule;
// The ContentRulesRegistry is responsible for managing // The ChromeContentRulesRegistry is responsible for managing
// the internal representation of rules for the Declarative Content API. // the internal representation of rules for the Declarative Content API.
// //
// Here is the high level overview of this functionality: // Here is the high level overview of this functionality:
...@@ -59,23 +59,26 @@ typedef DeclarativeRule<ContentCondition, ContentAction> ContentRule; ...@@ -59,23 +59,26 @@ typedef DeclarativeRule<ContentCondition, ContentAction> ContentRule;
// The evaluation of URL related condition attributes (host_suffix, path_prefix) // The evaluation of URL related condition attributes (host_suffix, path_prefix)
// is delegated to a URLMatcher, because this is capable of evaluating many // is delegated to a URLMatcher, because this is capable of evaluating many
// of such URL related condition attributes in parallel. // of such URL related condition attributes in parallel.
class ContentRulesRegistry : public RulesRegistry, class ChromeContentRulesRegistry : public ContentRulesRegistry,
public content::NotificationObserver { public content::NotificationObserver {
public: public:
// For testing, |ui_part| can be NULL. In that case it constructs the // For testing, |ui_part| can be NULL. In that case it constructs the
// registry with storage functionality suspended. // registry with storage functionality suspended.
ContentRulesRegistry(content::BrowserContext* browser_context, ChromeContentRulesRegistry(content::BrowserContext* browser_context,
RulesCacheDelegate* cache_delegate); RulesCacheDelegate* cache_delegate);
// ChromeContentRulesRegistry implementation:
// Applies all content rules given an update (CSS match change or // Applies all content rules given an update (CSS match change or
// page navigation, for now) from the renderer. // page navigation, for now) from the renderer.
void Apply(content::WebContents* contents, virtual void Apply(
const std::vector<std::string>& matching_css_selectors); content::WebContents* contents,
const std::vector<std::string>& matching_css_selectors) OVERRIDE;
// Applies all content rules given that a tab was just navigated. // Applies all content rules given that a tab was just navigated.
void DidNavigateMainFrame(content::WebContents* tab, virtual void DidNavigateMainFrame(
const content::LoadCommittedDetails& details, content::WebContents* tab,
const content::FrameNavigateParams& params); const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) OVERRIDE;
// Implementation of RulesRegistry: // Implementation of RulesRegistry:
virtual std::string AddRulesImpl( virtual std::string AddRulesImpl(
...@@ -96,17 +99,17 @@ class ContentRulesRegistry : public RulesRegistry, ...@@ -96,17 +99,17 @@ class ContentRulesRegistry : public RulesRegistry,
bool IsEmpty() const; bool IsEmpty() const;
protected: protected:
virtual ~ContentRulesRegistry(); virtual ~ChromeContentRulesRegistry();
// Virtual for testing: // Virtual for testing:
virtual base::Time GetExtensionInstallationTime( virtual base::Time GetExtensionInstallationTime(
const std::string& extension_id) const; const std::string& extension_id) const;
private: private:
friend class DeclarativeContentRulesRegistryTest; friend class DeclarativeChromeContentRulesRegistryTest;
std::set<ContentRule*> std::set<ContentRule*> GetMatches(
GetMatches(const RendererContentMatchData& renderer_data) const; const RendererContentMatchData& renderer_data) const;
// Scans the rules for the set of conditions they're watching. If the set has // Scans the rules for the set of conditions they're watching. If the set has
// changed, calls InstructRenderProcess() for each RenderProcessHost in the // changed, calls InstructRenderProcess() for each RenderProcessHost in the
...@@ -143,9 +146,9 @@ class ContentRulesRegistry : public RulesRegistry, ...@@ -143,9 +146,9 @@ class ContentRulesRegistry : public RulesRegistry,
scoped_refptr<InfoMap> extension_info_map_; scoped_refptr<InfoMap> extension_info_map_;
DISALLOW_COPY_AND_ASSIGN(ContentRulesRegistry); DISALLOW_COPY_AND_ASSIGN(ChromeContentRulesRegistry);
}; };
} // namespace extensions } // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H_ #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_CHROME_CONTENT_RULES_REGISTRY_H_
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h" #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h"
#include <string> #include <string>
...@@ -24,21 +24,21 @@ using content::WebContents; ...@@ -24,21 +24,21 @@ using content::WebContents;
// Must be outside the anonymous namespace to be a friend of // Must be outside the anonymous namespace to be a friend of
// ContentRulesRegistry. // ContentRulesRegistry.
class DeclarativeContentRulesRegistryTest : public testing::Test { class DeclarativeChromeContentRulesRegistryTest : public testing::Test {
protected: protected:
static const std::map<int, std::set<ContentRule*> >& active_rules( static const std::map<int, std::set<ContentRule*> >& active_rules(
const ContentRulesRegistry& registry) { const ChromeContentRulesRegistry& registry) {
return registry.active_rules_; return registry.active_rules_;
} }
}; };
namespace { namespace {
TEST_F(DeclarativeContentRulesRegistryTest, ActiveRulesDoesntGrow) { TEST_F(DeclarativeChromeContentRulesRegistryTest, ActiveRulesDoesntGrow) {
TestExtensionEnvironment env; TestExtensionEnvironment env;
scoped_refptr<ContentRulesRegistry> registry( scoped_refptr<ChromeContentRulesRegistry> registry(
new ContentRulesRegistry(env.profile(), NULL)); new ChromeContentRulesRegistry(env.profile(), NULL));
EXPECT_EQ(0u, active_rules(*registry.get()).size()); EXPECT_EQ(0u, active_rules(*registry.get()).size());
......
...@@ -10,8 +10,7 @@ ...@@ -10,8 +10,7 @@
#include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/active_script_controller.h" #include "chrome/browser/extensions/active_script_controller.h"
#include "chrome/browser/extensions/activity_log/activity_log.h" #include "chrome/browser/extensions/activity_log/activity_log.h"
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h" #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h"
#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h"
#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
#include "chrome/browser/extensions/api/webstore/webstore_api.h" #include "chrome/browser/extensions/api/webstore/webstore_api.h"
#include "chrome/browser/extensions/bookmark_app_helper.h" #include "chrome/browser/extensions/bookmark_app_helper.h"
...@@ -46,6 +45,7 @@ ...@@ -46,6 +45,7 @@
#include "content/public/browser/render_view_host.h" #include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/common/frame_navigate_params.h" #include "content/public/common/frame_navigate_params.h"
#include "extensions/browser/api/declarative/rules_registry_service.h"
#include "extensions/browser/extension_error.h" #include "extensions/browser/extension_error.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h" #include "extensions/browser/extension_system.h"
......
...@@ -170,16 +170,14 @@ ...@@ -170,16 +170,14 @@
'browser/extensions/api/debugger/debugger_api.h', 'browser/extensions/api/debugger/debugger_api.h',
'browser/extensions/api/debugger/debugger_api_constants.cc', 'browser/extensions/api/debugger/debugger_api_constants.cc',
'browser/extensions/api/debugger/debugger_api_constants.h', 'browser/extensions/api/debugger/debugger_api_constants.h',
'browser/extensions/api/declarative/rules_registry_service.cc',
'browser/extensions/api/declarative/rules_registry_service.h',
'browser/extensions/api/declarative_content/content_action.cc', 'browser/extensions/api/declarative_content/content_action.cc',
'browser/extensions/api/declarative_content/content_action.h', 'browser/extensions/api/declarative_content/content_action.h',
'browser/extensions/api/declarative_content/content_condition.cc', 'browser/extensions/api/declarative_content/content_condition.cc',
'browser/extensions/api/declarative_content/content_condition.h', 'browser/extensions/api/declarative_content/content_condition.h',
'browser/extensions/api/declarative_content/content_constants.cc', 'browser/extensions/api/declarative_content/content_constants.cc',
'browser/extensions/api/declarative_content/content_constants.h', 'browser/extensions/api/declarative_content/content_constants.h',
'browser/extensions/api/declarative_content/content_rules_registry.cc', 'browser/extensions/api/declarative_content/chrome_content_rules_registry.cc',
'browser/extensions/api/declarative_content/content_rules_registry.h', 'browser/extensions/api/declarative_content/chrome_content_rules_registry.h',
'browser/extensions/api/desktop_capture/desktop_capture_api.cc', 'browser/extensions/api/desktop_capture/desktop_capture_api.cc',
'browser/extensions/api/desktop_capture/desktop_capture_api.h', 'browser/extensions/api/desktop_capture/desktop_capture_api.h',
'browser/extensions/api/developer_private/developer_private_api.cc', 'browser/extensions/api/developer_private/developer_private_api.cc',
......
...@@ -311,7 +311,7 @@ ...@@ -311,7 +311,7 @@
'browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc', 'browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc',
'browser/extensions/api/declarative_content/content_action_unittest.cc', 'browser/extensions/api/declarative_content/content_action_unittest.cc',
'browser/extensions/api/declarative_content/content_condition_unittest.cc', 'browser/extensions/api/declarative_content/content_condition_unittest.cc',
'browser/extensions/api/declarative_content/content_rules_registry_unittest.cc', 'browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc',
'browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc', 'browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc',
'browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc', 'browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc',
'browser/extensions/api/dial/dial_device_data_unittest.cc', 'browser/extensions/api/dial/dial_device_data_unittest.cc',
......
...@@ -103,8 +103,11 @@ source_set("browser") { ...@@ -103,8 +103,11 @@ source_set("browser") {
"api/declarative/rules_cache_delegate.h", "api/declarative/rules_cache_delegate.h",
"api/declarative/rules_registry.cc", "api/declarative/rules_registry.cc",
"api/declarative/rules_registry.h", "api/declarative/rules_registry.h",
"api/declarative/rules_registry_service.cc",
"api/declarative/rules_registry_service.h",
"api/declarative/test_rules_registry.cc", "api/declarative/test_rules_registry.cc",
"api/declarative/test_rules_registry.h", "api/declarative/test_rules_registry.h",
"api/declarative_content/content_rules_registry.h",
"api/declarative_webrequest/request_stage.cc", "api/declarative_webrequest/request_stage.cc",
"api/declarative_webrequest/request_stage.h", "api/declarative_webrequest/request_stage.h",
"api/declarative_webrequest/webrequest_action.cc", "api/declarative_webrequest/webrequest_action.cc",
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h" #include "extensions/browser/api/declarative/rules_registry_service.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_details.h" #include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
...@@ -16,8 +15,10 @@ ...@@ -16,8 +15,10 @@
#include "content/public/browser/notification_types.h" #include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "extensions/browser/api/declarative/rules_cache_delegate.h" #include "extensions/browser/api/declarative/rules_cache_delegate.h"
#include "extensions/browser/api/declarative_content/content_rules_registry.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_constants.h" #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h" #include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "extensions/browser/api/web_request/web_request_api.h" #include "extensions/browser/api/web_request/web_request_api.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
...@@ -91,9 +92,9 @@ void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered( ...@@ -91,9 +92,9 @@ void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered(
RulesCacheDelegate* content_rules_cache_delegate = RulesCacheDelegate* content_rules_cache_delegate =
new RulesCacheDelegate(false /*log_storage_init_delay*/); new RulesCacheDelegate(false /*log_storage_init_delay*/);
cache_delegates_.push_back(content_rules_cache_delegate); cache_delegates_.push_back(content_rules_cache_delegate);
scoped_refptr<ContentRulesRegistry> content_rules_registry( scoped_refptr<ContentRulesRegistry> content_rules_registry =
new ContentRulesRegistry(browser_context_, ExtensionsAPIClient::Get()->CreateContentRulesRegistry(
content_rules_cache_delegate)); browser_context_, content_rules_cache_delegate);
RegisterRulesRegistry(content_rules_registry); RegisterRulesRegistry(content_rules_registry);
content_rules_registry_ = content_rules_registry.get(); content_rules_registry_ = content_rules_registry.get();
} }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__ #ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__
#define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__ #define EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__
#include <map> #include <map>
#include <string> #include <string>
...@@ -153,4 +153,4 @@ class RulesRegistryService : public BrowserContextKeyedAPI, ...@@ -153,4 +153,4 @@ class RulesRegistryService : public BrowserContextKeyedAPI,
} // namespace extensions } // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__ #endif // EXTENSIONS_BROWSER_API_DECLARATIVE_RULES_REGISTRY_SERVICE_H__
// Copyright (c) 2014 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.
#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__
#define EXTENSIONS_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__
#include <string>
#include "content/public/browser/browser_thread.h"
#include "extensions/browser/api/declarative/rules_registry.h"
namespace content {
class BrowserContext;
class WebContents;
struct FrameNavigateParams;
struct LoadCommittedDetails;
}
namespace extensions {
// This class acts as an //extensions-side interface for ContentRulesRegistry
// to allow RulesRegistryService to be moved to //extensions.
// TODO(wjmaclean): Remove this once ContentRulesRegistry moves to
// //extensions.
class ContentRulesRegistry : public RulesRegistry {
public:
ContentRulesRegistry(content::BrowserContext* browser_context,
const std::string& event_name,
content::BrowserThread::ID owner_thread,
RulesCacheDelegate* cache_delegate,
const WebViewKey& webview_key)
: RulesRegistry(browser_context,
event_name,
owner_thread,
cache_delegate,
webview_key) {}
// Applies all content rules given an update (CSS match change or
// page navigation, for now) from the renderer.
virtual void Apply(
content::WebContents* contents,
const std::vector<std::string>& matching_css_selectors) = 0;
// Applies all content rules given that a tab was just navigated.
virtual void DidNavigateMainFrame(
content::WebContents* tab,
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) = 0;
protected:
virtual ~ContentRulesRegistry() {}
private:
DISALLOW_COPY_AND_ASSIGN(ContentRulesRegistry);
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_DECLARATIVE_CONTENT_CONTENT_RULES_REGISTRY_H__
...@@ -67,4 +67,11 @@ ExtensionsAPIClient::CreateWebRequestEventRouterDelegate() const { ...@@ -67,4 +67,11 @@ ExtensionsAPIClient::CreateWebRequestEventRouterDelegate() const {
return NULL; return NULL;
} }
scoped_refptr<ContentRulesRegistry>
ExtensionsAPIClient::CreateContentRulesRegistry(
content::BrowserContext* browser_context,
RulesCacheDelegate* cache_delegate) const {
return scoped_refptr<ContentRulesRegistry>();
}
} // namespace extensions } // namespace extensions
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "extensions/browser/api/declarative/rules_registry.h" #include "extensions/browser/api/declarative_content/content_rules_registry.h"
#include "extensions/browser/api/storage/settings_namespace.h" #include "extensions/browser/api/storage/settings_namespace.h"
class GURL; class GURL;
...@@ -24,6 +24,7 @@ class BrowserContext; ...@@ -24,6 +24,7 @@ class BrowserContext;
namespace extensions { namespace extensions {
class AppViewGuestDelegate; class AppViewGuestDelegate;
class ContentRulesRegistry;
class ExtensionOptionsGuest; class ExtensionOptionsGuest;
class ExtensionOptionsGuestDelegate; class ExtensionOptionsGuestDelegate;
class MimeHandlerViewGuest; class MimeHandlerViewGuest;
...@@ -33,6 +34,7 @@ class WebViewGuestDelegate; ...@@ -33,6 +34,7 @@ class WebViewGuestDelegate;
class WebViewPermissionHelper; class WebViewPermissionHelper;
class WebViewPermissionHelperDelegate; class WebViewPermissionHelperDelegate;
class WebRequestEventRouterDelegate; class WebRequestEventRouterDelegate;
class RulesCacheDelegate;
class SettingsObserver; class SettingsObserver;
class SettingsStorageFactory; class SettingsStorageFactory;
class ValueStoreCache; class ValueStoreCache;
...@@ -95,6 +97,12 @@ class ExtensionsAPIClient { ...@@ -95,6 +97,12 @@ class ExtensionsAPIClient {
virtual WebRequestEventRouterDelegate* CreateWebRequestEventRouterDelegate() virtual WebRequestEventRouterDelegate* CreateWebRequestEventRouterDelegate()
const; const;
// TODO(wjmaclean): Remove this when (if) ContentRulesRegistry code moves
// to extensions/browser/api.
virtual scoped_refptr<ContentRulesRegistry> CreateContentRulesRegistry(
content::BrowserContext* browser_context,
RulesCacheDelegate* cache_delegate) const;
// NOTE: If this interface gains too many methods (perhaps more than 20) it // NOTE: If this interface gains too many methods (perhaps more than 20) it
// should be split into one interface per API. // should be split into one interface per API.
}; };
......
...@@ -372,9 +372,11 @@ ...@@ -372,9 +372,11 @@
'browser/api/declarative/rules_cache_delegate.h', 'browser/api/declarative/rules_cache_delegate.h',
'browser/api/declarative/rules_registry.cc', 'browser/api/declarative/rules_registry.cc',
'browser/api/declarative/rules_registry.h', 'browser/api/declarative/rules_registry.h',
'browser/api/declarative/rules_registry_service_interface_.h', 'browser/api/declarative/rules_registry_service.cc',
'browser/api/declarative/rules_registry_service.h',
'browser/api/declarative/test_rules_registry.cc', 'browser/api/declarative/test_rules_registry.cc',
'browser/api/declarative/test_rules_registry.h', 'browser/api/declarative/test_rules_registry.h',
'browser/api/declarative_content/content_rules_registry.h',
'browser/api/declarative_webrequest/request_stage.cc', 'browser/api/declarative_webrequest/request_stage.cc',
'browser/api/declarative_webrequest/request_stage.h', 'browser/api/declarative_webrequest/request_stage.h',
'browser/api/declarative_webrequest/webrequest_action.cc', 'browser/api/declarative_webrequest/webrequest_action.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment