summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authorjuncai <juncai@chromium.org>2015-06-03 17:14:04 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-04 00:14:37 +0000
commitcf52333148db8abf73adbb739480edaca3646fe5 (patch)
tree0c50247857c81587682dba497496abf0921093d7 /chrome/browser/extensions
parentb6e2e1cf2ab03954db07966f4bfd9f03763f6084 (diff)
downloadchromium_src-cf52333148db8abf73adbb739480edaca3646fe5.zip
chromium_src-cf52333148db8abf73adbb739480edaca3646fe5.tar.gz
chromium_src-cf52333148db8abf73adbb739480edaca3646fe5.tar.bz2
Extract EventRouter from ExtensionSystem.
This patch removes event_router accessor from ExtensionSystem. EventRouter is now a browser context keyed service. BUG=496281 Review URL: https://codereview.chromium.org/1148983004 Cr-Commit-Position: refs/heads/master@{#332745}
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/activity_log/activity_log.cc8
-rw-r--r--chrome/browser/extensions/activity_log/activity_log.h4
-rw-r--r--chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc28
-rw-r--r--chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc2
-rw-r--r--chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc11
-rw-r--r--chrome/browser/extensions/api/device_permissions_manager_unittest.cc1
-rw-r--r--chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api_chromeos_unittest.cc46
-rw-r--r--chrome/browser/extensions/api/identity/web_auth_flow.cc2
-rw-r--r--chrome/browser/extensions/api/image_writer_private/operation_manager_unittest.cc28
-rw-r--r--chrome/browser/extensions/api/management/management_api_unittest.cc11
-rw-r--r--chrome/browser/extensions/api/mdns/mdns_api_unittest.cc40
-rw-r--r--chrome/browser/extensions/api/storage/settings_sync_unittest.cc18
-rw-r--r--chrome/browser/extensions/extension_service.cc4
-rw-r--r--chrome/browser/extensions/extension_service_test_base.cc7
-rw-r--r--chrome/browser/extensions/extension_system_factory.cc2
-rw-r--r--chrome/browser/extensions/extension_system_impl.cc11
-rw-r--r--chrome/browser/extensions/extension_system_impl.h6
-rw-r--r--chrome/browser/extensions/menu_manager_unittest.cc33
-rw-r--r--chrome/browser/extensions/permission_message_combinations_unittest.cc2
-rw-r--r--chrome/browser/extensions/permission_messages_unittest.cc2
-rw-r--r--chrome/browser/extensions/test_extension_environment.cc7
-rw-r--r--chrome/browser/extensions/test_extension_system.cc24
-rw-r--r--chrome/browser/extensions/test_extension_system.h3
23 files changed, 111 insertions, 189 deletions
diff --git a/chrome/browser/extensions/activity_log/activity_log.cc b/chrome/browser/extensions/activity_log/activity_log.cc
index b03a171..9963a25 100644
--- a/chrome/browser/extensions/activity_log/activity_log.cc
+++ b/chrome/browser/extensions/activity_log/activity_log.cc
@@ -382,9 +382,7 @@ ActivityLog::ActivityLog(content::BrowserContext* context)
switches::kEnableExtensionActivityLogging) ||
watchdog_apps_active_);
- ExtensionSystem::Get(profile_)->ready().Post(
- FROM_HERE,
- base::Bind(&ActivityLog::StartObserving, base::Unretained(this)));
+ extension_registry_observer_.Add(ExtensionRegistry::Get(profile_));
if (!profile_->IsOffTheRecord())
uma_policy_ = new UmaPolicy(profile_);
@@ -433,10 +431,6 @@ ActivityLog::~ActivityLog() {
// MAINTAIN STATUS. ------------------------------------------------------------
-void ActivityLog::StartObserving() {
- extension_registry_observer_.Add(ExtensionRegistry::Get(profile_));
-}
-
void ActivityLog::ChooseDatabasePolicy() {
if (!(IsDatabaseEnabled() || IsWatchdogAppActive()))
return;
diff --git a/chrome/browser/extensions/activity_log/activity_log.h b/chrome/browser/extensions/activity_log/activity_log.h
index e7f4025..8c63b01 100644
--- a/chrome/browser/extensions/activity_log/activity_log.h
+++ b/chrome/browser/extensions/activity_log/activity_log.h
@@ -139,10 +139,6 @@ class ActivityLog : public BrowserContextKeyedAPI,
// --enable-extension-activity-logging flag is set.
bool IsDatabaseEnabled();
- // Delayed initialization of ExtensionRegistry which waits until after the
- // ExtensionSystem/ExtensionService are done with their own setup.
- void StartObserving();
-
// ScriptExecutionObserver implementation.
// Fires when a ContentScript is executed.
void OnScriptsExecuted(const content::WebContents* web_contents,
diff --git a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc b/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
index f1fa5ac..3728e67 100644
--- a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
+++ b/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
@@ -19,6 +19,7 @@
#include "components/audio_modem/test/stub_whispernet_client.h"
#include "extensions/browser/api_test_utils.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/event_router_factory.h"
using audio_modem::AUDIBLE;
using audio_modem::AudioToken;
@@ -109,15 +110,18 @@ class StubEventRouter : public EventRouter {
using EventCallback = base::Callback<void(const std::string&,
scoped_ptr<Event>)>;
- StubEventRouter(BrowserContext* context, EventCallback event_callback)
- : EventRouter(context, nullptr),
- event_callback_(event_callback) {}
+ explicit StubEventRouter(BrowserContext* context)
+ : EventRouter(context, nullptr) {}
void DispatchEventToExtension(const std::string& extension_id,
scoped_ptr<Event> event) override {
event_callback_.Run(extension_id, event.Pass());
}
+ void SetEventCallBack(EventCallback event_callback) {
+ event_callback_ = event_callback;
+ }
+
void ClearEventCallback() {
event_callback_.Reset();
}
@@ -126,6 +130,11 @@ class StubEventRouter : public EventRouter {
EventCallback event_callback_;
};
+// StubEventRouter factory function
+KeyedService* StubEventRouterFactoryFunction(content::BrowserContext* context) {
+ return new StubEventRouter(context);
+}
+
} // namespace
class AudioModemApiUnittest : public ExtensionApiUnittest {
@@ -192,14 +201,11 @@ class AudioModemApiUnittest : public ExtensionApiUnittest {
AudioModemAPI::GetFactoryInstance()->SetTestingFactory(
profile(), &ApiFactoryFunction);
- scoped_ptr<EventRouter> router(new StubEventRouter(
- profile(),
- // The EventRouter is deleted in TearDown().
- // It will lose this callback before we are destructed.
- base::Bind(&AudioModemApiUnittest::CaptureEvent,
- base::Unretained(this))));
- static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile()))
- ->SetEventRouter(router.Pass());
+ StubEventRouter* stub_event_router = static_cast<StubEventRouter*>(
+ extensions::EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile(), &StubEventRouterFactoryFunction));
+ stub_event_router->SetEventCallBack(base::Bind(
+ &AudioModemApiUnittest::CaptureEvent, base::Unretained(this)));
}
void CaptureEvent(const std::string& extension_id,
diff --git a/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc b/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
index e0cb6cc..f5d01e9 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
+++ b/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
@@ -49,10 +49,8 @@ class RulesRegistryWithCacheTest : public testing::Test {
kRulesRegistryID)) {}
void SetUp() override {
- env_.GetExtensionPrefs(); // Force creation before adding extensions.
// Note that env_.MakeExtension below also forces the creation of
// ExtensionService.
-
base::DictionaryValue manifest_extra;
std::string key;
CHECK(Extension::ProducePEM("test extension 1", &key));
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
index f7e239e..97ac5c2 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
@@ -20,6 +20,7 @@
#include "chrome/test/base/test_browser_window.h"
#include "components/crx_file/id_util.h"
#include "content/public/test/test_web_contents_factory.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_error_test_util.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
@@ -41,6 +42,10 @@ KeyedService* BuildAPI(content::BrowserContext* context) {
return new DeveloperPrivateAPI(context);
}
+KeyedService* BuildEventRouter(content::BrowserContext* profile) {
+ return new EventRouter(profile, ExtensionPrefs::Get(profile));
+}
+
} // namespace
class DeveloperPrivateApiUnitTest : public ExtensionServiceTestBase {
@@ -221,9 +226,9 @@ void DeveloperPrivateApiUnitTest::SetUp() {
browser_.reset(new Browser(params));
// Allow the API to be created.
- static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile()))->
- SetEventRouter(make_scoped_ptr(
- new EventRouter(profile(), ExtensionPrefs::Get(profile()))));
+ EventRouterFactory::GetInstance()->SetTestingFactory(profile(),
+ &BuildEventRouter);
+
DeveloperPrivateAPI::GetFactoryInstance()->SetTestingFactory(
profile(), &BuildAPI);
}
diff --git a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
index 86c1803..9863443 100644
--- a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
+++ b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
@@ -92,7 +92,6 @@ class DevicePermissionsManagerTest : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
env_.reset(new extensions::TestExtensionEnvironment());
- env_->GetExtensionPrefs(); // Force creation before adding extensions.
extension_ =
env_->MakeExtension(*base::test::ParseJson(
"{"
diff --git a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api_chromeos_unittest.cc b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api_chromeos_unittest.cc
index 388c331..6a3de13 100644
--- a/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api_chromeos_unittest.cc
+++ b/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api_chromeos_unittest.cc
@@ -22,6 +22,8 @@
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/fake_easy_unlock_client.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/event_router_factory.h"
+#include "extensions/browser/extension_prefs.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -429,8 +431,10 @@ KeyedService* BuildTestEasyUnlockService(content::BrowserContext* context) {
// A fake EventRouter that logs event it dispatches for testing.
class FakeEventRouter : public extensions::EventRouter {
public:
- FakeEventRouter(Profile* profile, extensions::ExtensionPrefs* extension_prefs)
- : EventRouter(profile, extension_prefs),
+ FakeEventRouter(Profile* profile,
+ scoped_ptr<extensions::TestExtensionPrefs> extension_prefs)
+ : EventRouter(profile, extension_prefs->prefs()),
+ extension_prefs_(extension_prefs.Pass()),
event_count_(0) {}
void DispatchEventToExtension(const std::string& extension_id,
@@ -445,42 +449,24 @@ class FakeEventRouter : public extensions::EventRouter {
const std::string& last_event_name() const { return last_event_name_; }
private:
+ scoped_ptr<extensions::TestExtensionPrefs> extension_prefs_;
int event_count_;
std::string last_extension_id_;
std::string last_event_name_;
};
-// A fake ExtensionSystem that returns a FakeEventRouter for event_router().
-class FakeExtensionSystem : public extensions::TestExtensionSystem {
- public:
- explicit FakeExtensionSystem(Profile* profile)
- : TestExtensionSystem(profile),
- prefs_(new extensions::TestExtensionPrefs(
- base::ThreadTaskRunnerHandle::Get())) {
- fake_event_router_.reset(new FakeEventRouter(profile, prefs_->prefs()));
- }
-
- extensions::EventRouter* event_router() override {
- return fake_event_router_.get();
- }
-
- private:
- scoped_ptr<extensions::TestExtensionPrefs> prefs_;
- scoped_ptr<FakeEventRouter> fake_event_router_;
-};
-
-// Factory function to register for the ExtensionSystem.
-KeyedService* BuildFakeExtensionSystem(content::BrowserContext* profile) {
- return new FakeExtensionSystem(static_cast<Profile*>(profile));
+// FakeEventRouter factory function
+KeyedService* FakeEventRouterFactoryFunction(content::BrowserContext* profile) {
+ scoped_ptr<extensions::TestExtensionPrefs> extension_prefs(
+ new extensions::TestExtensionPrefs(base::ThreadTaskRunnerHandle::Get()));
+ return new FakeEventRouter(static_cast<Profile*>(profile),
+ extension_prefs.Pass());
}
TEST_F(EasyUnlockPrivateApiTest, AutoPairing) {
- FakeExtensionSystem* fake_extension_system =
- static_cast<FakeExtensionSystem*>(
- extensions::ExtensionSystemFactory::GetInstance()
- ->SetTestingFactoryAndUse(profile(), &BuildFakeExtensionSystem));
- FakeEventRouter* event_router =
- static_cast<FakeEventRouter*>(fake_extension_system->event_router());
+ FakeEventRouter* event_router = static_cast<FakeEventRouter*>(
+ extensions::EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile(), &FakeEventRouterFactoryFunction));
EasyUnlockServiceFactory::GetInstance()->SetTestingFactoryAndUse(
profile(), &BuildTestEasyUnlockService);
diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.cc b/chrome/browser/extensions/api/identity/web_auth_flow.cc
index ac4d1aa..8af05bb 100644
--- a/chrome/browser/extensions/api/identity/web_auth_flow.cc
+++ b/chrome/browser/extensions/api/identity/web_auth_flow.cc
@@ -101,7 +101,7 @@ void WebAuthFlow::Start() {
base::FilePath(FILE_PATH_LITERAL("identity_scope_approval_dialog")));
}
- system->event_router()->DispatchEventWithLazyListener(
+ EventRouter::Get(profile_)->DispatchEventWithLazyListener(
extension_misc::kIdentityApiUiAppId, event.Pass());
}
diff --git a/chrome/browser/extensions/api/image_writer_private/operation_manager_unittest.cc b/chrome/browser/extensions/api/image_writer_private/operation_manager_unittest.cc
index 1dbe937..bec81903 100644
--- a/chrome/browser/extensions/api/image_writer_private/operation_manager_unittest.cc
+++ b/chrome/browser/extensions/api/image_writer_private/operation_manager_unittest.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/test/base/testing_profile.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/event_router_factory.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h"
@@ -33,23 +34,9 @@ class FakeEventRouter : public extensions::EventRouter {
}
};
-// A fake ExtensionSystem that returns a FakeEventRouter for event_router().
-class FakeExtensionSystem : public extensions::TestExtensionSystem {
- public:
- explicit FakeExtensionSystem(Profile* profile)
- : TestExtensionSystem(profile) {
- fake_event_router_.reset(new FakeEventRouter(profile));
- }
-
- EventRouter* event_router() override { return fake_event_router_.get(); }
-
- private:
- scoped_ptr<FakeEventRouter> fake_event_router_;
-};
-
-// Factory function to register for the ExtensionSystem.
-KeyedService* BuildFakeExtensionSystem(content::BrowserContext* profile) {
- return new FakeExtensionSystem(static_cast<Profile*>(profile));
+// FakeEventRouter factory function
+KeyedService* FakeEventRouterFactoryFunction(content::BrowserContext* context) {
+ return new FakeEventRouter(static_cast<Profile*>(context));
}
namespace {
@@ -76,11 +63,9 @@ class ImageWriterOperationManagerTest : public ImageWriterUnitTestBase {
void SetUp() override {
ImageWriterUnitTestBase::SetUp();
- extension_system_ = static_cast<FakeExtensionSystem*>(
- ExtensionSystemFactory::GetInstance()->
- SetTestingFactoryAndUse(&test_profile_, &BuildFakeExtensionSystem));
event_router_ = static_cast<FakeEventRouter*>(
- extension_system_->event_router());
+ extensions::EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
+ &test_profile_, &FakeEventRouterFactoryFunction));
}
bool started_;
@@ -92,7 +77,6 @@ class ImageWriterOperationManagerTest : public ImageWriterUnitTestBase {
std::string cancel_error_;
TestingProfile test_profile_;
- FakeExtensionSystem* extension_system_;
FakeEventRouter* event_router_;
#if defined(OS_CHROMEOS)
diff --git a/chrome/browser/extensions/api/management/management_api_unittest.cc b/chrome/browser/extensions/api/management/management_api_unittest.cc
index 771bd42..a4845ba 100644
--- a/chrome/browser/extensions/api/management/management_api_unittest.cc
+++ b/chrome/browser/extensions/api/management/management_api_unittest.cc
@@ -11,6 +11,7 @@
#include "chrome/test/base/test_browser_window.h"
#include "extensions/browser/api/management/management_api.h"
#include "extensions/browser/api/management/management_api_constants.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
@@ -29,6 +30,10 @@ KeyedService* BuildManagementApi(content::BrowserContext* context) {
return new ManagementAPI(context);
}
+KeyedService* BuildEventRouter(content::BrowserContext* profile) {
+ return new extensions::EventRouter(profile, ExtensionPrefs::Get(profile));
+}
+
} // namespace
namespace constants = extension_management_api_constants;
@@ -74,9 +79,9 @@ void ManagementApiUnitTest::SetUp() {
InitializeEmptyExtensionService();
ManagementAPI::GetFactoryInstance()->SetTestingFactory(profile(),
&BuildManagementApi);
- static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile()))->
- SetEventRouter(make_scoped_ptr(
- new EventRouter(profile(), ExtensionPrefs::Get(profile()))));
+
+ EventRouterFactory::GetInstance()->SetTestingFactory(profile(),
+ &BuildEventRouter);
browser_window_.reset(new TestBrowserWindow());
Browser::CreateParams params(profile(), chrome::HOST_DESKTOP_TYPE_NATIVE);
diff --git a/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc b/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
index 86c0c86..84e1f08 100644
--- a/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
+++ b/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
@@ -9,6 +9,7 @@
#include "chrome/common/extensions/api/mdns.h"
#include "content/public/browser/browser_context.h"
#include "content/public/test/mock_render_process_host.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_prefs_factory.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/manifest_constants.h"
@@ -23,6 +24,12 @@ KeyedService* MDnsAPITestingFactoryFunction(content::BrowserContext* context) {
return new MDnsAPI(context);
}
+KeyedService* BuildEventRouter(content::BrowserContext* profile) {
+ return new extensions::EventRouter(
+ profile,
+ ExtensionPrefsFactory::GetInstance()->GetForBrowserContext((profile)));
+}
+
// For ExtensionService interface when it requires a path that is not used.
base::FilePath bogus_file_pathname(const std::string& name) {
return base::FilePath(FILE_PATH_LITERAL("//foobar_nonexistent"))
@@ -62,15 +69,12 @@ class MDnsAPITest : public extensions::ExtensionServiceTestBase {
browser_context(),
MDnsAPITestingFactoryFunction);
- // Create an event router and associate it with the context.
- extensions::EventRouter* event_router = CreateEventRouter_();
- static_cast<TestExtensionSystem*>(
- ExtensionSystem::Get(browser_context()))->SetEventRouter(
- scoped_ptr<extensions::EventRouter>(event_router));
+ EventRouterFactory::GetInstance()->SetTestingFactory(browser_context(),
+ &BuildEventRouter);
// Do some sanity checking
- ASSERT_EQ(event_router, EventRouter::Get(browser_context()));
ASSERT_TRUE(MDnsAPI::Get(browser_context())); // constructs MDnsAPI
+ ASSERT_TRUE(EventRouter::Get(browser_context())); // constructs EventRouter
registry_ = new MockDnsSdRegistry(MDnsAPI::Get(browser_context()));
EXPECT_CALL(*dns_sd_registry(),
@@ -130,14 +134,6 @@ class MDnsAPITest : public extensions::ExtensionServiceTestBase {
return render_process_host_.get();
}
- protected:
- virtual extensions::EventRouter* CreateEventRouter_() {
- return new extensions::EventRouter(
- browser_context(),
- ExtensionPrefsFactory::GetInstance()->GetForBrowserContext(
- browser_context()));
- }
-
private:
// The registry is owned by MDnsAPI, but MDnsAPI does not have an accessor
// for it, so use a private member.
@@ -230,18 +226,17 @@ class MockEventRouter : public EventRouter {
MOCK_METHOD1(BroadcastEventPtr, void(Event* event));
};
+KeyedService* MockEventRouterFactoryFunction(content::BrowserContext* profile) {
+ return new MockEventRouter(
+ profile,
+ ExtensionPrefsFactory::GetInstance()->GetForBrowserContext((profile)));
+}
+
class MDnsAPIMaxServicesTest : public MDnsAPITest {
public:
MockEventRouter* event_router() {
return static_cast<MockEventRouter*>(EventRouter::Get(browser_context()));
}
- protected:
- extensions::EventRouter* CreateEventRouter_() override {
- return new MockEventRouter(
- browser_context(),
- ExtensionPrefsFactory::GetInstance()->GetForBrowserContext(
- browser_context()));
- }
};
class EventServiceListSizeMatcher :
@@ -296,6 +291,9 @@ inline testing::Matcher<const Event&> EventServiceListSize(
}
TEST_F(MDnsAPIMaxServicesTest, OnServiceListDoesNotExceedLimit) {
+ EventRouterFactory::GetInstance()->SetTestingFactory(
+ browser_context(), &MockEventRouterFactoryFunction);
+
// This check should change when the [value=64] changes in the IDL file.
EXPECT_EQ(64, api::mdns::MAX_SERVICE_INSTANCES_PER_EVENT);
diff --git a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
index be3de09..100303e 100644
--- a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
+++ b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
@@ -19,6 +19,8 @@
#include "extensions/browser/api/storage/settings_storage_factory.h"
#include "extensions/browser/api/storage/settings_test_util.h"
#include "extensions/browser/api/storage/storage_frontend.h"
+#include "extensions/browser/event_router.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/mock_extension_system.h"
#include "extensions/browser/value_store/testing_value_store.h"
@@ -193,6 +195,15 @@ class TestingValueStoreFactory : public SettingsStorageFactory {
std::map<std::string, TestingValueStore*> created_;
};
+KeyedService* MockExtensionSystemFactoryFunction(
+ content::BrowserContext* context) {
+ return new MockExtensionSystem(context);
+}
+
+KeyedService* BuildEventRouter(content::BrowserContext* profile) {
+ return new extensions::EventRouter(profile, nullptr);
+}
+
} // namespace
class ExtensionSettingsSyncTest : public testing::Test {
@@ -214,8 +225,11 @@ class ExtensionSettingsSyncTest : public testing::Test {
ExtensionsBrowserClient::Get()
->GetExtensionSystemFactory()
- ->SetTestingFactoryAndUse(
- profile_.get(), &util::MockExtensionSystemWithEventRouter::Build);
+ ->SetTestingFactoryAndUse(profile_.get(),
+ &MockExtensionSystemFactoryFunction);
+
+ EventRouterFactory::GetInstance()->SetTestingFactory(profile_.get(),
+ &BuildEventRouter);
}
void TearDown() override {
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 160ac64..a59eeb9 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -2410,8 +2410,8 @@ bool ExtensionService::ShouldDelayExtensionUpdate(
if (extensions::BackgroundInfo::HasPersistentBackgroundPage(old)) {
// Delay installation if the extension listens for the onUpdateAvailable
// event.
- return system_->event_router()->ExtensionHasEventListener(
- extension_id, kOnUpdateAvailableEvent);
+ return extensions::EventRouter::Get(profile_)
+ ->ExtensionHasEventListener(extension_id, kOnUpdateAvailableEvent);
} else {
// Delay installation if the extension is not idle.
return !extensions::util::IsExtensionIdle(extension_id, profile_);
diff --git a/chrome/browser/extensions/extension_service_test_base.cc b/chrome/browser/extensions/extension_service_test_base.cc
index e2b455f..f89098e 100644
--- a/chrome/browser/extensions/extension_service_test_base.cc
+++ b/chrome/browser/extensions/extension_service_test_base.cc
@@ -210,11 +210,8 @@ void ExtensionServiceTestBase::CreateExtensionService(
const ExtensionServiceInitParams& params) {
TestExtensionSystem* system =
static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile_.get()));
- if (!params.is_first_run) {
- ExtensionPrefs* prefs = system->CreateExtensionPrefs(
- base::CommandLine::ForCurrentProcess(), params.extensions_install_dir);
- prefs->SetAlertSystemFirstRun();
- }
+ if (!params.is_first_run)
+ ExtensionPrefs::Get(profile_.get())->SetAlertSystemFirstRun();
service_ =
system->CreateExtensionService(base::CommandLine::ForCurrentProcess(),
diff --git a/chrome/browser/extensions/extension_system_factory.cc b/chrome/browser/extensions/extension_system_factory.cc
index 3014401..bea8cfb 100644
--- a/chrome/browser/extensions/extension_system_factory.cc
+++ b/chrome/browser/extensions/extension_system_factory.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/ui/global_error/global_error_service_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "extensions/browser/declarative_user_script_manager_factory.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_prefs_factory.h"
#include "extensions/browser/extension_registry_factory.h"
#include "extensions/browser/extension_system.h"
@@ -52,6 +53,7 @@ ExtensionSystemSharedFactory::ExtensionSystemSharedFactory()
DependsOn(RendererStartupHelperFactory::GetInstance());
DependsOn(BlacklistFactory::GetInstance());
DependsOn(DeclarativeUserScriptManagerFactory::GetInstance());
+ DependsOn(EventRouterFactory::GetInstance());
// This depends on ExtensionDownloader which depends on
// ProfileIdentityProvider which depends on SigninManager.
DependsOn(SigninManagerFactory::GetInstance());
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
index d59553d..31a79a8 100644
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -39,14 +39,12 @@
#include "content/public/browser/url_data_source.h"
#include "extensions/browser/content_verifier.h"
#include "extensions/browser/content_verifier_delegate.h"
-#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_pref_store.h"
#include "extensions/browser/extension_pref_value_map.h"
#include "extensions/browser/extension_pref_value_map_factory.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/info_map.h"
-#include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/browser/management_policy.h"
#include "extensions/browser/quota_service.h"
#include "extensions/browser/runtime_data.h"
@@ -99,7 +97,6 @@ ExtensionSystemImpl::Shared::~Shared() {
}
void ExtensionSystemImpl::Shared::InitPrefs() {
- event_router_.reset(new EventRouter(profile_, ExtensionPrefs::Get(profile_)));
// Two state stores. The latter, which contains declarative rules, must be
// loaded immediately so that the rules are ready before we issue network
// requests.
@@ -449,10 +446,6 @@ InfoMap* ExtensionSystemImpl::Shared::info_map() {
return extension_info_map_.get();
}
-EventRouter* ExtensionSystemImpl::Shared::event_router() {
- return event_router_.get();
-}
-
QuotaService* ExtensionSystemImpl::Shared::quota_service() {
return quota_service_.get();
}
@@ -517,10 +510,6 @@ StateStore* ExtensionSystemImpl::rules_store() {
InfoMap* ExtensionSystemImpl::info_map() { return shared_->info_map(); }
-EventRouter* ExtensionSystemImpl::event_router() {
- return shared_->event_router();
-}
-
const OneShotEvent& ExtensionSystemImpl::ready() const {
return shared_->ready();
}
diff --git a/chrome/browser/extensions/extension_system_impl.h b/chrome/browser/extensions/extension_system_impl.h
index f4b19c4..92e2457 100644
--- a/chrome/browser/extensions/extension_system_impl.h
+++ b/chrome/browser/extensions/extension_system_impl.h
@@ -16,7 +16,6 @@ namespace extensions {
class ContentVerifier;
class ExtensionSystemSharedFactory;
-class InstallVerifier;
class NavigationObserver;
class SharedUserScriptMaster;
class StateStoreNotificationObserver;
@@ -43,7 +42,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
StateStore* state_store() override; // shared
StateStore* rules_store() override; // shared
InfoMap* info_map() override; // shared
- EventRouter* event_router() override; // shared
QuotaService* quota_service() override; // shared
void RegisterExtensionWithRequestContexts(
@@ -84,7 +82,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
ManagementPolicy* management_policy();
SharedUserScriptMaster* shared_user_script_master();
InfoMap* info_map();
- EventRouter* event_router();
QuotaService* quota_service();
const OneShotEvent& ready() const { return ready_; }
ContentVerifier* content_verifier();
@@ -98,9 +95,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
scoped_ptr<StateStoreNotificationObserver>
state_store_notification_observer_;
scoped_ptr<StateStore> rules_store_;
- // LazyBackgroundTaskQueue is a dependency of
- // MessageService and EventRouter.
- scoped_ptr<EventRouter> event_router_;
scoped_ptr<NavigationObserver> navigation_observer_;
// Shared memory region manager for scripts statically declared in extension
// manifests. This region is shared between all extensions.
diff --git a/chrome/browser/extensions/menu_manager_unittest.cc b/chrome/browser/extensions/menu_manager_unittest.cc
index f0cf049..8b1ec7d 100644
--- a/chrome/browser/extensions/menu_manager_unittest.cc
+++ b/chrome/browser/extensions/menu_manager_unittest.cc
@@ -24,6 +24,7 @@
#include "content/public/common/context_menu_params.h"
#include "content/public/test/test_browser_thread.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
@@ -481,26 +482,9 @@ class MockEventRouter : public EventRouter {
DISALLOW_COPY_AND_ASSIGN(MockEventRouter);
};
-// A mock ExtensionSystem to serve our MockEventRouter.
-class MockExtensionSystem : public TestExtensionSystem {
- public:
- explicit MockExtensionSystem(Profile* profile)
- : TestExtensionSystem(profile) {}
-
- EventRouter* event_router() override {
- if (!mock_event_router_)
- mock_event_router_.reset(new MockEventRouter(profile_));
- return mock_event_router_.get();
- }
-
- private:
- scoped_ptr<MockEventRouter> mock_event_router_;
-
- DISALLOW_COPY_AND_ASSIGN(MockExtensionSystem);
-};
-
-KeyedService* BuildMockExtensionSystem(content::BrowserContext* profile) {
- return new MockExtensionSystem(static_cast<Profile*>(profile));
+// MockEventRouter factory function
+KeyedService* MockEventRouterFactoryFunction(content::BrowserContext* profile) {
+ return new MockEventRouter(static_cast<Profile*>(profile));
}
} // namespace
@@ -561,12 +545,9 @@ TEST_F(MenuManagerTest, RemoveOneByOne) {
TEST_F(MenuManagerTest, ExecuteCommand) {
TestingProfile profile;
-
- MockExtensionSystem* mock_extension_system =
- static_cast<MockExtensionSystem*>(ExtensionSystemFactory::GetInstance()->
- SetTestingFactoryAndUse(&profile, &BuildMockExtensionSystem));
- MockEventRouter* mock_event_router =
- static_cast<MockEventRouter*>(mock_extension_system->event_router());
+ MockEventRouter* mock_event_router = static_cast<MockEventRouter*>(
+ EventRouterFactory::GetInstance()->SetTestingFactoryAndUse(
+ &profile, &MockEventRouterFactoryFunction));
content::ContextMenuParams params;
params.media_type = blink::WebContextMenuData::MediaTypeImage;
diff --git a/chrome/browser/extensions/permission_message_combinations_unittest.cc b/chrome/browser/extensions/permission_message_combinations_unittest.cc
index d4024e5..5e46a53 100644
--- a/chrome/browser/extensions/permission_message_combinations_unittest.cc
+++ b/chrome/browser/extensions/permission_message_combinations_unittest.cc
@@ -31,8 +31,6 @@ class PermissionMessageCombinationsUnittest : public testing::Test {
// Overridden from testing::Test:
void SetUp() override {
testing::Test::SetUp();
- // Force creation of ExtensionPrefs before adding extensions.
- env_.GetExtensionPrefs();
}
protected:
diff --git a/chrome/browser/extensions/permission_messages_unittest.cc b/chrome/browser/extensions/permission_messages_unittest.cc
index 1164f3f..0b45bac 100644
--- a/chrome/browser/extensions/permission_messages_unittest.cc
+++ b/chrome/browser/extensions/permission_messages_unittest.cc
@@ -46,8 +46,6 @@ class PermissionMessagesUnittest : public testing::Test {
// Overridden from testing::Test:
void SetUp() override {
testing::Test::SetUp();
- // Force creation of ExtensionPrefs before adding extensions.
- env_.GetExtensionPrefs();
}
protected:
diff --git a/chrome/browser/extensions/test_extension_environment.cc b/chrome/browser/extensions/test_extension_environment.cc
index 6914ab0..5faf752 100644
--- a/chrome/browser/extensions/test_extension_environment.cc
+++ b/chrome/browser/extensions/test_extension_environment.cc
@@ -14,6 +14,7 @@
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_utils.h"
#include "content/public/test/web_contents_tester.h"
+#include "extensions/browser/extension_prefs.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/value_builder.h"
@@ -81,10 +82,8 @@ ExtensionService* TestExtensionEnvironment::GetExtensionService() {
}
ExtensionPrefs* TestExtensionEnvironment::GetExtensionPrefs() {
- if (extension_prefs_ == NULL) {
- extension_prefs_ = GetExtensionSystem()->CreateExtensionPrefs(
- base::CommandLine::ForCurrentProcess(), base::FilePath());
- }
+ if (extension_prefs_ == NULL)
+ extension_prefs_ = ExtensionPrefs::Get(profile_.get());
return extension_prefs_;
}
diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc
index 9b9ea70..14835f1 100644
--- a/chrome/browser/extensions/test_extension_system.cc
+++ b/chrome/browser/extensions/test_extension_system.cc
@@ -9,21 +9,17 @@
#include "chrome/browser/extensions/blacklist.h"
#include "chrome/browser/extensions/extension_management.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/install_verifier.h"
#include "chrome/browser/extensions/shared_module_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_switches.h"
#include "content/public/browser/browser_thread.h"
-#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_pref_value_map.h"
#include "extensions/browser/extension_pref_value_map_factory.h"
#include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_prefs_factory.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/info_map.h"
-#include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/browser/management_policy.h"
#include "extensions/browser/quota_service.h"
#include "extensions/browser/runtime_data.h"
@@ -59,25 +55,17 @@ ExtensionPrefs* TestExtensionSystem::CreateExtensionPrefs(
// are not reflected in the pref service. One would need to
// inject a new ExtensionPrefStore(extension_pref_value_map, false).
- ExtensionPrefs* extension_prefs = ExtensionPrefs::Create(
- profile_->GetPrefs(),
- install_directory,
+ return ExtensionPrefs::Create(
+ profile_->GetPrefs(), install_directory,
ExtensionPrefValueMapFactory::GetForBrowserContext(profile_),
ExtensionsBrowserClient::Get()->CreateAppSorting().Pass(),
- extensions_disabled,
- std::vector<ExtensionPrefsObserver*>());
- ExtensionPrefsFactory::GetInstance()->SetInstanceForTesting(
- profile_,
- extension_prefs);
- return extension_prefs;
+ extensions_disabled, std::vector<ExtensionPrefsObserver*>());
}
ExtensionService* TestExtensionSystem::CreateExtensionService(
const base::CommandLine* command_line,
const base::FilePath& install_directory,
bool autoupdate_enabled) {
- if (!ExtensionPrefs::Get(profile_))
- CreateExtensionPrefs(command_line, install_directory);
// The ownership of |value_store_| is immediately transferred to state_store_,
// but we keep a naked pointer to the TestingValueStore.
scoped_ptr<TestingValueStore> value_store(new TestingValueStore());
@@ -130,12 +118,6 @@ StateStore* TestExtensionSystem::rules_store() {
InfoMap* TestExtensionSystem::info_map() { return info_map_.get(); }
-void TestExtensionSystem::SetEventRouter(scoped_ptr<EventRouter> event_router) {
- event_router_.reset(event_router.release());
-}
-
-EventRouter* TestExtensionSystem::event_router() { return event_router_.get(); }
-
QuotaService* TestExtensionSystem::quota_service() {
return quota_service_.get();
}
diff --git a/chrome/browser/extensions/test_extension_system.h b/chrome/browser/extensions/test_extension_system.h
index 06a5761..7efd930 100644
--- a/chrome/browser/extensions/test_extension_system.h
+++ b/chrome/browser/extensions/test_extension_system.h
@@ -63,8 +63,6 @@ class TestExtensionSystem : public ExtensionSystem {
StateStore* rules_store() override;
TestingValueStore* value_store() { return value_store_; }
InfoMap* info_map() override;
- void SetEventRouter(scoped_ptr<EventRouter> event_router);
- EventRouter* event_router() override;
QuotaService* quota_service() override;
const OneShotEvent& ready() const override;
ContentVerifier* content_verifier() override;
@@ -89,7 +87,6 @@ class TestExtensionSystem : public ExtensionSystem {
scoped_ptr<RuntimeData> runtime_data_;
scoped_ptr<ExtensionService> extension_service_;
scoped_refptr<InfoMap> info_map_;
- scoped_ptr<EventRouter> event_router_;
scoped_ptr<QuotaService> quota_service_;
OneShotEvent ready_;
};