summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/api/declarative
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-05 08:21:36 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-05 08:21:36 +0000
commitb813ed790aa8a212b197c231b883bdf193595aa3 (patch)
tree833830e3a6fd5895485efbada982ba36dcbc625f /chrome/browser/extensions/api/declarative
parentb3ee317ffd1621d89a8ce1b330586667d5f9ba41 (diff)
downloadchromium_src-b813ed790aa8a212b197c231b883bdf193595aa3.zip
chromium_src-b813ed790aa8a212b197c231b883bdf193595aa3.tar.gz
chromium_src-b813ed790aa8a212b197c231b883bdf193595aa3.tar.bz2
Hook up WebRequestRulesRegistry into old WebRequest API
BUG=112155 TEST=no Review URL: https://chromiumcodereview.appspot.com/9965019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@130867 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api/declarative')
-rw-r--r--chrome/browser/extensions/api/declarative/declarative_api.cc5
-rw-r--r--chrome/browser/extensions/api/declarative/declarative_apitest.cc35
-rw-r--r--chrome/browser/extensions/api/declarative/rules_registry_service.cc26
-rw-r--r--chrome/browser/extensions/api/declarative/rules_registry_service.h3
4 files changed, 45 insertions, 24 deletions
diff --git a/chrome/browser/extensions/api/declarative/declarative_api.cc b/chrome/browser/extensions/api/declarative/declarative_api.cc
index 8f09411..72d9fc1 100644
--- a/chrome/browser/extensions/api/declarative/declarative_api.cc
+++ b/chrome/browser/extensions/api/declarative/declarative_api.cc
@@ -8,7 +8,7 @@
#include "base/bind_helpers.h"
#include "base/values.h"
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
-#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_system_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/experimental.declarative.h"
#include "content/public/browser/browser_thread.h"
@@ -46,7 +46,8 @@ bool RulesFunction::RunImpl() {
EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
RulesRegistryService* rules_registry_service =
- profile()->GetExtensionService()->GetRulesRegistryService();
+ ExtensionSystemFactory::GetForProfile(profile())->
+ rules_registry_service();
rules_registry_ = rules_registry_service->GetRulesRegistry(event_name);
// Raw access to this function is not available to extensions, therefore
// there should never be a request for a nonexisting rules registry.
diff --git a/chrome/browser/extensions/api/declarative/declarative_apitest.cc b/chrome/browser/extensions/api/declarative/declarative_apitest.cc
index d40a401..3e56f45 100644
--- a/chrome/browser/extensions/api/declarative/declarative_apitest.cc
+++ b/chrome/browser/extensions/api/declarative/declarative_apitest.cc
@@ -7,9 +7,10 @@
#include "base/command_line.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
+#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h"
#include "chrome/browser/extensions/extension_apitest.h"
-#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_system_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_switches.h"
@@ -21,35 +22,18 @@ using extensions::RulesRegistry;
using extensions::RulesRegistryService;
using extensions::WebRequestRulesRegistry;
-namespace {
-const char kTestEvent[] = "experimental.webRequest.onRequest";
-} // namespace
-
class DeclarativeApiTest : public ExtensionApiTest {
public:
- DeclarativeApiTest() : rules_registry_(NULL) {}
+ DeclarativeApiTest() {}
virtual ~DeclarativeApiTest() {}
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
ExtensionApiTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
}
-
- void RegisterTestRuleRegistry() {
- Profile* profile = browser()->profile();
- RulesRegistryService* rules_registry_service =
- profile->GetExtensionService()->GetRulesRegistryService();
- rules_registry_ = new WebRequestRulesRegistry();
- // TODO(battre): The registry should register itself when the
- // RulesRegistryService is instantiated.
- rules_registry_service->RegisterRulesRegistry(kTestEvent, rules_registry_);
- }
-
- scoped_refptr<RulesRegistry> rules_registry_;
};
IN_PROC_BROWSER_TEST_F(DeclarativeApiTest, DeclarativeApi) {
- RegisterTestRuleRegistry();
ASSERT_TRUE(RunExtensionTest("declarative/api")) << message_;
// Check that unloading the page has removed all rules.
@@ -60,15 +44,22 @@ IN_PROC_BROWSER_TEST_F(DeclarativeApiTest, DeclarativeApi) {
// to process this unloading. The next task to retrive all rules
// is therefore processed after the UnloadExtension task has been executed.
+ RulesRegistryService* rules_registry_service =
+ ExtensionSystemFactory::GetForProfile(browser()->profile())->
+ rules_registry_service();
+ scoped_refptr<RulesRegistry> rules_registry =
+ rules_registry_service->GetRulesRegistry(
+ extensions::declarative_webrequest_constants::kOnRequest);
+
std::vector<linked_ptr<RulesRegistry::Rule> > known_rules;
content::BrowserThread::PostTask(
- rules_registry_->GetOwnerThread(),
+ rules_registry->GetOwnerThread(),
FROM_HERE,
base::Bind(base::IgnoreResult(&RulesRegistry::GetAllRules),
- rules_registry_, extension_id, &known_rules));
+ rules_registry, extension_id, &known_rules));
- ui_test_utils::RunAllPendingInMessageLoop(rules_registry_->GetOwnerThread());
+ ui_test_utils::RunAllPendingInMessageLoop(rules_registry->GetOwnerThread());
EXPECT_TRUE(known_rules.empty());
}
diff --git a/chrome/browser/extensions/api/declarative/rules_registry_service.cc b/chrome/browser/extensions/api/declarative/rules_registry_service.cc
index 40d5c12..dcd1746 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry_service.cc
+++ b/chrome/browser/extensions/api/declarative/rules_registry_service.cc
@@ -6,7 +6,11 @@
#include "base/bind.h"
#include "base/logging.h"
+#include "content/public/browser/browser_thread.h"
#include "chrome/browser/extensions/api/declarative/initializing_rules_registry.h"
+#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
+#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h"
+#include "chrome/browser/extensions/api/web_request/web_request_api.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "content/public/browser/notification_details.h"
@@ -14,6 +18,17 @@
namespace extensions {
+namespace {
+
+// Registers |web_request_rules_registry| on the IO thread.
+void RegisterToExtensionWebRequestEventRouterOnIO(
+ scoped_refptr<WebRequestRulesRegistry> web_request_rules_registry) {
+ ExtensionWebRequestEventRouter::GetInstance()->RegisterRulesRegistry(
+ web_request_rules_registry);
+}
+
+} // namespace
+
RulesRegistryService::RulesRegistryService(Profile* profile) {
if (profile) {
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
@@ -23,6 +38,17 @@ RulesRegistryService::RulesRegistryService(Profile* profile) {
RulesRegistryService::~RulesRegistryService() {}
+void RulesRegistryService::RegisterDefaultRulesRegistries() {
+ scoped_refptr<WebRequestRulesRegistry> web_request_rules_registry(
+ new WebRequestRulesRegistry);
+ RegisterRulesRegistry(declarative_webrequest_constants::kOnRequest,
+ web_request_rules_registry);
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&RegisterToExtensionWebRequestEventRouterOnIO,
+ web_request_rules_registry));
+}
+
void RulesRegistryService::RegisterRulesRegistry(
const std::string& event_name,
scoped_refptr<RulesRegistry> rule_registry) {
diff --git a/chrome/browser/extensions/api/declarative/rules_registry_service.h b/chrome/browser/extensions/api/declarative/rules_registry_service.h
index 145f62d..92bb166 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry_service.h
+++ b/chrome/browser/extensions/api/declarative/rules_registry_service.h
@@ -34,6 +34,9 @@ class RulesRegistryService : public content::NotificationObserver {
explicit RulesRegistryService(Profile* profile);
virtual ~RulesRegistryService();
+ // Registers the default RulesRegistries used in Chromium.
+ void RegisterDefaultRulesRegistries();
+
// Registers a RulesRegistry and wraps it in an InitializingRulesRegistry.
void RegisterRulesRegistry(const std::string& event_name,
scoped_refptr<RulesRegistry> rule_registry);