diff options
author | reillyg <reillyg@chromium.org> | 2014-11-11 15:17:12 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-11 23:17:36 +0000 |
commit | a3acbc189be0d9d5d7f37f218d8d8c124273d917 (patch) | |
tree | a7e692762cc5e2d1b62958493ce1fff97141afc7 | |
parent | 5cf0ba70de7419ae008fdc89c62dbb8c69c003af (diff) | |
download | chromium_src-a3acbc189be0d9d5d7f37f218d8d8c124273d917.zip chromium_src-a3acbc189be0d9d5d7f37f218d8d8c124273d917.tar.gz chromium_src-a3acbc189be0d9d5d7f37f218d8d8c124273d917.tar.bz2 |
Remove the deprecated function ExtensionService::extensions().
This function has been deprecated in favor of
ExtensionRegistry::enabled_extensions(). Some caller were
immediately calling ExtensionSet::GetByID() and so these callers have
been converted to ExtensionRegistry::GetExtensionById() instead.
Cleaning up usage of this deprecated function removes a number of
files which pull in ExtensionService that really only need to use
ExtensionRegistry.
BUG=
Review URL: https://codereview.chromium.org/709813004
Cr-Commit-Position: refs/heads/master@{#303742}
72 files changed, 613 insertions, 752 deletions
diff --git a/chrome/browser/apps/app_shim/app_shim_quit_interactive_uitest_mac.mm b/chrome/browser/apps/app_shim/app_shim_quit_interactive_uitest_mac.mm index 15b3f35..556005e 100644 --- a/chrome/browser/apps/app_shim/app_shim_quit_interactive_uitest_mac.mm +++ b/chrome/browser/apps/app_shim/app_shim_quit_interactive_uitest_mac.mm @@ -70,7 +70,7 @@ class AppShimQuitTest : public PlatformAppBrowserTest { extensions::ExtensionRegistry* registry = extensions::ExtensionRegistry::Get(profile()); extension_id_ = - GetExtensionByPath(®istry->enabled_extensions(), app_path_)->id(); + GetExtensionByPath(registry->enabled_extensions(), app_path_)->id(); host_.reset(new FakeHost(profile()->GetPath().BaseName(), extension_id_, handler_)); diff --git a/chrome/browser/background/background_application_list_model_unittest.cc b/chrome/browser/background/background_application_list_model_unittest.cc index ffd65d0..cac265f 100644 --- a/chrome/browser/background/background_application_list_model_unittest.cc +++ b/chrome/browser/background/background_application_list_model_unittest.cc @@ -21,7 +21,7 @@ #include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_types.h" #include "extensions/browser/extension_prefs.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/uninstall_reason.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_constants.h" @@ -36,6 +36,7 @@ using extensions::APIPermission; using extensions::Extension; +using extensions::ExtensionRegistry; // For ExtensionService interface when it requires a path that is not used. base::FilePath bogus_file_pathname(const std::string& name) { @@ -184,12 +185,8 @@ void AddEphemeralApp(const Extension* extension, ExtensionService* service) { // extensions, of which some are Background Apps and others are not. TEST_F(BackgroundApplicationListModelTest, MAYBE_ExplicitTest) { InitializeAndLoadEmptyExtensionService(); - ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> - extension_service(); - ASSERT_TRUE(service); - ASSERT_TRUE(service->is_ready()); - ASSERT_TRUE(service->extensions()); - ASSERT_TRUE(service->extensions()->is_empty()); + ASSERT_TRUE(service()->is_ready()); + ASSERT_TRUE(registry()->enabled_extensions().is_empty()); scoped_ptr<BackgroundApplicationListModel> model( new BackgroundApplicationListModel(profile_.get())); ASSERT_EQ(0U, model->size()); @@ -199,67 +196,61 @@ TEST_F(BackgroundApplicationListModelTest, MAYBE_ExplicitTest) { scoped_refptr<Extension> ext3 = CreateExtension("charlie", false); scoped_refptr<Extension> bgapp1 = CreateExtension("delta", true); scoped_refptr<Extension> bgapp2 = CreateExtension("echo", true); - ASSERT_TRUE(service->extensions() != NULL); - ASSERT_EQ(0U, service->extensions()->size()); + ASSERT_EQ(0U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); // Add alternating Extensions and Background Apps ASSERT_FALSE(IsBackgroundApp(*ext1.get())); - service->AddExtension(ext1.get()); - ASSERT_EQ(1U, service->extensions()->size()); + service()->AddExtension(ext1.get()); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); - service->AddExtension(bgapp1.get()); - ASSERT_EQ(2U, service->extensions()->size()); + service()->AddExtension(bgapp1.get()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_FALSE(IsBackgroundApp(*ext2.get())); - service->AddExtension(ext2.get()); - ASSERT_EQ(3U, service->extensions()->size()); + service()->AddExtension(ext2.get()); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); - service->AddExtension(bgapp2.get()); - ASSERT_EQ(4U, service->extensions()->size()); + service()->AddExtension(bgapp2.get()); + ASSERT_EQ(4U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); ASSERT_FALSE(IsBackgroundApp(*ext3.get())); - service->AddExtension(ext3.get()); - ASSERT_EQ(5U, service->extensions()->size()); + service()->AddExtension(ext3.get()); + ASSERT_EQ(5U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); // Remove in FIFO order. ASSERT_FALSE(IsBackgroundApp(*ext1.get())); - service->UninstallExtension(ext1->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(4U, service->extensions()->size()); + service()->UninstallExtension(ext1->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(4U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); - service->UninstallExtension(bgapp1->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(3U, service->extensions()->size()); + service()->UninstallExtension(bgapp1->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_FALSE(IsBackgroundApp(*ext2.get())); - service->UninstallExtension(ext2->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(2U, service->extensions()->size()); + service()->UninstallExtension(ext2->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); - service->UninstallExtension(bgapp2->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(1U, service->extensions()->size()); + service()->UninstallExtension(bgapp2->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); ASSERT_FALSE(IsBackgroundApp(*ext3.get())); - service->UninstallExtension(ext3->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(0U, service->extensions()->size()); + service()->UninstallExtension(ext3->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(0U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); } @@ -267,12 +258,8 @@ TEST_F(BackgroundApplicationListModelTest, MAYBE_ExplicitTest) { // when extension is in a whitelist. TEST_F(BackgroundApplicationListModelTest, PushMessagingTest) { InitializeAndLoadEmptyExtensionService(); - ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> - extension_service(); - ASSERT_TRUE(service); - ASSERT_TRUE(service->is_ready()); - ASSERT_TRUE(service->extensions()); - ASSERT_TRUE(service->extensions()->is_empty()); + ASSERT_TRUE(service()->is_ready()); + ASSERT_TRUE(registry()->enabled_extensions().is_empty()); scoped_ptr<BackgroundApplicationListModel> model( new BackgroundApplicationListModel(profile_.get())); ASSERT_EQ(0U, model->size()); @@ -286,80 +273,70 @@ TEST_F(BackgroundApplicationListModelTest, PushMessagingTest) { CreateExtensionBase("delta", true, PUSH_MESSAGING_PERMISSION); scoped_refptr<Extension> bgapp3 = CreateExtensionBase("echo", true, PUSH_MESSAGING_BUT_NOT_BACKGROUND); - ASSERT_TRUE(service->extensions() != NULL); - ASSERT_EQ(0U, service->extensions()->size()); + ASSERT_EQ(0U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); // Add alternating Extensions and Background Apps ASSERT_FALSE(IsBackgroundApp(*ext1.get())); - service->AddExtension(ext1.get()); - ASSERT_EQ(1U, service->extensions()->size()); + service()->AddExtension(ext1.get()); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); - service->AddExtension(bgapp1.get()); - ASSERT_EQ(2U, service->extensions()->size()); + service()->AddExtension(bgapp1.get()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_FALSE(IsBackgroundApp(*ext2.get())); - service->AddExtension(ext2.get()); - ASSERT_EQ(3U, service->extensions()->size()); + service()->AddExtension(ext2.get()); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); - service->AddExtension(bgapp2.get()); - ASSERT_EQ(4U, service->extensions()->size()); + service()->AddExtension(bgapp2.get()); + ASSERT_EQ(4U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); // Need to remove ext2 because it uses same id as bgapp3. ASSERT_FALSE(IsBackgroundApp(*ext2.get())); - service->UninstallExtension(ext2->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(3U, service->extensions()->size()); + service()->UninstallExtension(ext2->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp3.get())); - service->AddExtension(bgapp3.get()); - ASSERT_EQ(4U, service->extensions()->size()); + service()->AddExtension(bgapp3.get()); + ASSERT_EQ(4U, registry()->enabled_extensions().size()); ASSERT_EQ(3U, model->size()); // Remove in FIFO order. ASSERT_FALSE(IsBackgroundApp(*ext1.get())); - service->UninstallExtension(ext1->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(3U, service->extensions()->size()); + service()->UninstallExtension(ext1->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(3U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp1.get())); - service->UninstallExtension(bgapp1->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(2U, service->extensions()->size()); + service()->UninstallExtension(bgapp1->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp2.get())); - service->UninstallExtension(bgapp2->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(1U, service->extensions()->size()); + service()->UninstallExtension(bgapp2->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp3.get())); - service->UninstallExtension(bgapp3->id(), - extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(0U, service->extensions()->size()); + service()->UninstallExtension(bgapp3->id(), + extensions::UNINSTALL_REASON_FOR_TESTING, + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(0U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); } // Verifies that an ephemeral app cannot trigger background mode. TEST_F(BackgroundApplicationListModelTest, EphemeralAppTest) { InitializeAndLoadEmptyExtensionService(); - ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> - extension_service(); - ASSERT_TRUE(service); - ASSERT_TRUE(service->is_ready()); - ASSERT_TRUE(service->extensions()); - ASSERT_TRUE(service->extensions()->is_empty()); + ASSERT_TRUE(service()->is_ready()); + ASSERT_TRUE(registry()->enabled_extensions().is_empty()); scoped_ptr<BackgroundApplicationListModel> model( new BackgroundApplicationListModel(profile_.get())); ASSERT_EQ(0U, model->size()); @@ -372,39 +349,35 @@ TEST_F(BackgroundApplicationListModelTest, EphemeralAppTest) { // Installed app with push messaging permissions can trigger background mode. ASSERT_TRUE(IsBackgroundApp(*installed.get())); - service->AddExtension(installed.get()); - ASSERT_EQ(1U, service->extensions()->size()); + service()->AddExtension(installed.get()); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); // An ephemeral app with push messaging permissions should not trigger // background mode. - AddEphemeralApp(ephemeral.get(), service); + AddEphemeralApp(ephemeral.get(), service()); ASSERT_FALSE(IsBackgroundApp(*ephemeral.get())); - ASSERT_EQ(2U, service->extensions()->size()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); // An ephemeral app with the background permission should not trigger // background mode. - AddEphemeralApp(background.get(), service); + AddEphemeralApp(background.get(), service()); ASSERT_FALSE(IsBackgroundApp(*background.get())); - ASSERT_EQ(3U, service->extensions()->size()); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); // If the ephemeral app becomes promoted to an installed app, it can now // trigger background mode. - service->PromoteEphemeralApp(ephemeral.get(), false /*from sync*/); + service()->PromoteEphemeralApp(ephemeral.get(), false /*from sync*/); ASSERT_TRUE(IsBackgroundApp(*ephemeral.get())); - ASSERT_EQ(3U, service->extensions()->size()); + ASSERT_EQ(3U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); } // With minimal test logic, verifies behavior with dynamic permissions. TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { InitializeAndLoadEmptyExtensionService(); - ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> - extension_service(); - ASSERT_TRUE(service); - ASSERT_TRUE(service->is_ready()); - ASSERT_TRUE(service->extensions()); - ASSERT_TRUE(service->extensions()->is_empty()); + ASSERT_TRUE(service()->is_ready()); + ASSERT_TRUE(registry()->enabled_extensions().is_empty()); scoped_ptr<BackgroundApplicationListModel> model( new BackgroundApplicationListModel(profile_.get())); ASSERT_EQ(0U, model->size()); @@ -415,40 +388,39 @@ TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) { scoped_refptr<Extension> bgapp = CreateExtension("application", true); ASSERT_TRUE( bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); - ASSERT_TRUE(service->extensions() != NULL); - ASSERT_EQ(0U, service->extensions()->size()); + ASSERT_EQ(0U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); // Add one (non-background) extension and one background application ASSERT_FALSE(IsBackgroundApp(*ext.get())); - service->AddExtension(ext.get()); - ASSERT_EQ(1U, service->extensions()->size()); + service()->AddExtension(ext.get()); + ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); ASSERT_TRUE(IsBackgroundApp(*bgapp.get())); - service->AddExtension(bgapp.get()); - ASSERT_EQ(2U, service->extensions()->size()); + service()->AddExtension(bgapp.get()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); // Change permissions back and forth - AddBackgroundPermission(service, ext.get()); + AddBackgroundPermission(service(), ext.get()); ASSERT_TRUE( ext->permissions_data()->HasAPIPermission(APIPermission::kBackground)); - ASSERT_EQ(2U, service->extensions()->size()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(2U, model->size()); - RemoveBackgroundPermission(service, bgapp.get()); + RemoveBackgroundPermission(service(), bgapp.get()); ASSERT_FALSE( bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); - ASSERT_EQ(2U, service->extensions()->size()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); - RemoveBackgroundPermission(service, ext.get()); + RemoveBackgroundPermission(service(), ext.get()); ASSERT_FALSE( ext->permissions_data()->HasAPIPermission(APIPermission::kBackground)); - ASSERT_EQ(2U, service->extensions()->size()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); - AddBackgroundPermission(service, bgapp.get()); + AddBackgroundPermission(service(), bgapp.get()); ASSERT_TRUE( bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground)); - ASSERT_EQ(2U, service->extensions()->size()); + ASSERT_EQ(2U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, model->size()); } @@ -460,6 +432,7 @@ void AddExtension(ExtensionService* service, BackgroundApplicationListModel* model, size_t* expected, size_t* count) { + ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile()); bool create_background = false; if (rand() % 2) { create_background = true; @@ -474,7 +447,7 @@ void AddExtension(ExtensionService* service, ++*count; ASSERT_EQ(*count, extensions->size()); service->AddExtension(extension.get()); - ASSERT_EQ(*count, service->extensions()->size()); + ASSERT_EQ(*count, registry->enabled_extensions().size()); ASSERT_EQ(*expected, model->size()); } @@ -483,12 +456,13 @@ void RemoveExtension(ExtensionService* service, BackgroundApplicationListModel* model, size_t* expected, size_t* count) { // Maybe remove an extension. + ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile()); ExtensionCollection::iterator cursor = extensions->begin(); if (cursor == extensions->end()) { // Nothing to remove. Just verify accounting. ASSERT_EQ(0U, *count); ASSERT_EQ(0U, *expected); - ASSERT_EQ(0U, service->extensions()->size()); + ASSERT_EQ(0U, registry->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); } else { // Randomly select which extension to remove @@ -508,9 +482,8 @@ void RemoveExtension(ExtensionService* service, ASSERT_EQ(*count, extensions->size()); service->UninstallExtension(extension->id(), extensions::UNINSTALL_REASON_FOR_TESTING, - base::Bind(&base::DoNothing), - NULL); - ASSERT_EQ(*count, service->extensions()->size()); + base::Bind(&base::DoNothing), NULL); + ASSERT_EQ(*count, registry->enabled_extensions().size()); ASSERT_EQ(*expected, model->size()); } } @@ -520,12 +493,13 @@ void TogglePermission(ExtensionService* service, BackgroundApplicationListModel* model, size_t* expected, size_t* count) { + ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile()); ExtensionCollection::iterator cursor = extensions->begin(); if (cursor == extensions->end()) { // Nothing to toggle. Just verify accounting. ASSERT_EQ(0U, *count); ASSERT_EQ(0U, *expected); - ASSERT_EQ(0U, service->extensions()->size()); + ASSERT_EQ(0U, registry->enabled_extensions().size()); ASSERT_EQ(0U, model->size()); } else { // Randomly select which extension to toggle. @@ -541,13 +515,13 @@ void TogglePermission(ExtensionService* service, --*expected; ASSERT_EQ(*count, extensions->size()); RemoveBackgroundPermission(service, extension.get()); - ASSERT_EQ(*count, service->extensions()->size()); + ASSERT_EQ(*count, registry->enabled_extensions().size()); ASSERT_EQ(*expected, model->size()); } else { ++*expected; ASSERT_EQ(*count, extensions->size()); AddBackgroundPermission(service, extension.get()); - ASSERT_EQ(*count, service->extensions()->size()); + ASSERT_EQ(*count, registry->enabled_extensions().size()); ASSERT_EQ(*expected, model->size()); } } @@ -558,12 +532,8 @@ void TogglePermission(ExtensionService* service, // removing extensions, of which some are Background Apps and others are not. TEST_F(BackgroundApplicationListModelTest, RandomTest) { InitializeAndLoadEmptyExtensionService(); - ExtensionService* service = extensions::ExtensionSystem::Get(profile_.get())-> - extension_service(); - ASSERT_TRUE(service); - ASSERT_TRUE(service->is_ready()); - ASSERT_TRUE(service->extensions()); - ASSERT_TRUE(service->extensions()->is_empty()); + ASSERT_TRUE(service()->is_ready()); + ASSERT_TRUE(registry()->enabled_extensions().is_empty()); scoped_ptr<BackgroundApplicationListModel> model( new BackgroundApplicationListModel(profile_.get())); ASSERT_EQ(0U, model->size()); @@ -576,13 +546,14 @@ TEST_F(BackgroundApplicationListModelTest, RandomTest) { for (int index = 0; index < kIterations; ++index) { switch (rand() % 3) { case 0: - AddExtension(service, &extensions, model.get(), &expected, &count); + AddExtension(service(), &extensions, model.get(), &expected, &count); break; case 1: - RemoveExtension(service, &extensions, model.get(), &expected, &count); + RemoveExtension(service(), &extensions, model.get(), &expected, &count); break; case 2: - TogglePermission(service, &extensions, model.get(), &expected, &count); + TogglePermission(service(), &extensions, model.get(), &expected, + &count); break; default: NOTREACHED(); diff --git a/chrome/browser/background/background_contents_service.cc b/chrome/browser/background/background_contents_service.cc index 3b87006..5f8a3e8 100644 --- a/chrome/browser/background/background_contents_service.cc +++ b/chrome/browser/background/background_contents_service.cc @@ -593,18 +593,13 @@ void BackgroundContentsService::LoadBackgroundContentsFromDictionary( void BackgroundContentsService::LoadBackgroundContentsFromManifests( Profile* profile) { - const extensions::ExtensionSet* extensions = - extensions::ExtensionSystem::Get(profile)-> - extension_service()->extensions(); - for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); - iter != extensions->end(); ++iter) { - const Extension* extension = iter->get(); + for (const scoped_refptr<const extensions::Extension>& extension : + extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { if (extension->is_hosted_app() && - BackgroundInfo::HasBackgroundPage(extension)) { - LoadBackgroundContents(profile, - BackgroundInfo::GetBackgroundURL(extension), - base::ASCIIToUTF16("background"), - base::UTF8ToUTF16(extension->id())); + BackgroundInfo::HasBackgroundPage(extension.get())) { + LoadBackgroundContents( + profile, BackgroundInfo::GetBackgroundURL(extension.get()), + base::ASCIIToUTF16("background"), base::UTF8ToUTF16(extension->id())); } } } diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 6727f57..47a6735 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -223,10 +223,9 @@ #if defined(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/chrome_content_browser_client_extensions_part.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/guest_view/guest_view_base.h" #include "extensions/browser/guest_view/guest_view_manager.h" #include "extensions/browser/guest_view/web_view/web_view_guest.h" @@ -2367,11 +2366,8 @@ bool ChromeContentBrowserClient::AllowPepperSocketAPI( Profile* profile = Profile::FromBrowserContext(browser_context); const extensions::ExtensionSet* extension_set = NULL; if (profile) { - const ExtensionService* ext_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - if (ext_service) { - extension_set = ext_service->extensions(); - } + extension_set = + &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); } if (private_api) { @@ -2604,11 +2600,8 @@ bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( Profile* profile = Profile::FromBrowserContext(browser_context); const extensions::ExtensionSet* extension_set = NULL; if (profile) { - const ExtensionService* ext_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - if (ext_service) { - extension_set = ext_service->extensions(); - } + extension_set = + &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); } return IsExtensionOrSharedModuleWhitelisted(url, extension_set, allowed_file_handle_origins_) || @@ -2632,11 +2625,8 @@ bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( Profile* profile = Profile::FromBrowserContext(browser_context); const extensions::ExtensionSet* extension_set = NULL; if (profile) { - const ExtensionService* ext_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - if (ext_service) { - extension_set = ext_service->extensions(); - } + extension_set = + &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); } // Allow access for whitelisted applications. diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc index a795d09..620b591 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc @@ -48,6 +48,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/file_reader.h" #include "extensions/common/extension.h" @@ -198,8 +199,9 @@ void InjectChromeVoxContentScript( if (!render_view_host) return; const extensions::Extension* extension = - extension_service->extensions()->GetByID( - extension_misc::kChromeVoxExtensionId); + extensions::ExtensionRegistry::Get(extension_service->profile()) + ->enabled_extensions() + .GetByID(extension_misc::kChromeVoxExtensionId); // Set a flag to tell ChromeVox that it's just been enabled, // so that it won't interrupt our speech feedback enabled message. diff --git a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc index 7599c8b..27af32e 100644 --- a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc +++ b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc @@ -31,6 +31,7 @@ #include "content/public/browser/web_contents.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_host.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/extension_util.h" #include "extensions/browser/lazy_background_task_queue.h" @@ -103,10 +104,10 @@ std::string EscapedUtf8ToLower(const std::string& str) { FileBrowserHandlerList FindFileBrowserHandlersForURL( Profile* profile, const GURL& selected_file_url) { - ExtensionService* service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - // In unit-tests, we may not have an ExtensionService. - if (!service) + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile); + // In unit-tests, we may not have an ExtensionRegistry. + if (!registry) return FileBrowserHandlerList(); // We need case-insensitive matching, and pattern in the handler is already @@ -114,10 +115,8 @@ FileBrowserHandlerList FindFileBrowserHandlersForURL( const GURL lowercase_url(EscapedUtf8ToLower(selected_file_url.spec())); FileBrowserHandlerList results; - for (extensions::ExtensionSet::const_iterator iter = - service->extensions()->begin(); - iter != service->extensions()->end(); ++iter) { - const Extension* extension = iter->get(); + for (const scoped_refptr<const Extension>& extension : + registry->enabled_extensions()) { if (profile->IsOffTheRecord() && !extensions::util::IsIncognitoEnabled(extension->id(), profile)) continue; @@ -125,7 +124,7 @@ FileBrowserHandlerList FindFileBrowserHandlersForURL( continue; FileBrowserHandler::List* handler_list = - FileBrowserHandler::GetHandlers(extension); + FileBrowserHandler::GetHandlers(extension.get()); if (!handler_list) continue; for (FileBrowserHandler::List::const_iterator handler_iter = diff --git a/chrome/browser/chromeos/login/help_app_launcher.cc b/chrome/browser/chromeos/login/help_app_launcher.cc index 5dc70d4..dc9f473 100644 --- a/chrome/browser/chromeos/login/help_app_launcher.cc +++ b/chrome/browser/chromeos/login/help_app_launcher.cc @@ -10,16 +10,16 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/chromeos/login/helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/locale_settings.h" #include "content/public/browser/browser_thread.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/rect.h" #include "ui/gfx/size.h" using content::BrowserThread; +using extensions::ExtensionRegistry; namespace { @@ -39,18 +39,17 @@ HelpAppLauncher::HelpAppLauncher(gfx::NativeWindow parent_window) void HelpAppLauncher::ShowHelpTopic(HelpTopic help_topic_id) { Profile* profile = ProfileHelper::GetSigninProfile(); - ExtensionService* service = - extensions::ExtensionSystem::Get(profile)->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); - DCHECK(service); - if (!service) + DCHECK(registry); + if (!registry) return; GURL url(base::StringPrintf(kHelpAppFormat, static_cast<int>(help_topic_id))); // HelpApp component extension presents only in official builds so we can // show help only when the extensions is installed. - if (service->extensions()->GetByID(url.host())) + if (registry->enabled_extensions().GetByID(url.host())) ShowHelpTopicDialog(profile, GURL(url)); } diff --git a/chrome/browser/content_settings/content_settings_internal_extension_provider.cc b/chrome/browser/content_settings/content_settings_internal_extension_provider.cc index ab4f54d..68d970b 100644 --- a/chrome/browser/content_settings/content_settings_internal_extension_provider.cc +++ b/chrome/browser/content_settings/content_settings_internal_extension_provider.cc @@ -4,7 +4,7 @@ #include "chrome/browser/content_settings/content_settings_internal_extension_provider.h" -#include "chrome/browser/extensions/extension_service.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_content_client.h" #include "chrome/common/extensions/api/plugins/plugins_handler.h" #include "components/content_settings/core/browser/content_settings_rule.h" @@ -13,6 +13,7 @@ #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_service.h" #include "extensions/browser/extension_host.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/notification_types.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" @@ -23,17 +24,14 @@ using extensions::UnloadedExtensionInfo; namespace content_settings { -InternalExtensionProvider::InternalExtensionProvider( - ExtensionService* extension_service) +InternalExtensionProvider::InternalExtensionProvider(Profile* profile) : registrar_(new content::NotificationRegistrar) { // Whitelist all extensions loaded so far. - const extensions::ExtensionSet* extensions = extension_service->extensions(); - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - if (extensions::PluginInfo::HasPlugins(it->get())) - SetContentSettingForExtension(it->get(), CONTENT_SETTING_ALLOW); + for (const scoped_refptr<const extensions::Extension>& extension : + extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { + if (extensions::PluginInfo::HasPlugins(extension.get())) + SetContentSettingForExtension(extension.get(), CONTENT_SETTING_ALLOW); } - Profile* profile = extension_service->profile(); registrar_->Add(this, extensions::NOTIFICATION_EXTENSION_HOST_CREATED, content::Source<Profile>(profile)); diff --git a/chrome/browser/content_settings/content_settings_internal_extension_provider.h b/chrome/browser/content_settings/content_settings_internal_extension_provider.h index ddc91bf..2fcb498 100644 --- a/chrome/browser/content_settings/content_settings_internal_extension_provider.h +++ b/chrome/browser/content_settings/content_settings_internal_extension_provider.h @@ -13,7 +13,7 @@ #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" -class ExtensionService; +class Profile; namespace extensions { class Extension; @@ -25,7 +25,7 @@ namespace content_settings { class InternalExtensionProvider : public ObservableProvider, public content::NotificationObserver { public: - explicit InternalExtensionProvider(ExtensionService* extension_service); + explicit InternalExtensionProvider(Profile* profile); ~InternalExtensionProvider() override; diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc index c80de2c..ef572d7 100644 --- a/chrome/browser/devtools/devtools_sanity_browsertest.cc +++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc @@ -45,6 +45,7 @@ #include "content/public/browser/worker_service_observer.h" #include "content/public/common/content_switches.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/notification_types.h" #include "extensions/common/switches.h" @@ -315,7 +316,9 @@ class DevToolsExtensionTest : public DevToolsSanityTest, bool LoadExtensionFromPath(const base::FilePath& path) { ExtensionService* service = extensions::ExtensionSystem::Get( browser()->profile())->extension_service(); - size_t num_before = service->extensions()->size(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + size_t num_before = registry->enabled_extensions().size(); { content::NotificationRegistrar registrar; registrar.Add(this, @@ -329,7 +332,7 @@ class DevToolsExtensionTest : public DevToolsSanityTest, content::RunMessageLoop(); timeout.Cancel(); } - size_t num_after = service->extensions()->size(); + size_t num_after = registry->enabled_extensions().size(); if (num_after != (num_before + 1)) return false; diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc index c5dcca5..2dcdbe6 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chrome/browser/devtools/devtools_ui_bindings.cc @@ -16,7 +16,6 @@ #include "chrome/browser/chrome_page_zoom.h" #include "chrome/browser/devtools/devtools_target_impl.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/themes/theme_properties.h" @@ -45,8 +44,7 @@ #include "content/public/browser/web_contents_observer.h" #include "content/public/common/renderer_preferences.h" #include "content/public/common/url_constants.h" -#include "extensions/browser/extension_system.h" -#include "extensions/common/extension_set.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/permissions/permissions_data.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/page_transition_types.h" @@ -796,27 +794,26 @@ void DevToolsUIBindings::UpdateTheme() { } void DevToolsUIBindings::AddDevToolsExtensionsToClient() { - const ExtensionService* extension_service = extensions::ExtensionSystem::Get( - profile_->GetOriginalProfile())->extension_service(); - if (!extension_service) + const extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile_->GetOriginalProfile()); + if (!registry) return; - const extensions::ExtensionSet* extensions = extension_service->extensions(); base::ListValue results; - for (extensions::ExtensionSet::const_iterator extension(extensions->begin()); - extension != extensions->end(); ++extension) { - if (extensions::chrome_manifest_urls::GetDevToolsPage(extension->get()) + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { + if (extensions::chrome_manifest_urls::GetDevToolsPage(extension.get()) .is_empty()) continue; base::DictionaryValue* extension_info = new base::DictionaryValue(); extension_info->Set( "startPage", new base::StringValue(extensions::chrome_manifest_urls::GetDevToolsPage( - extension->get()).spec())); - extension_info->Set("name", new base::StringValue((*extension)->name())); + extension.get()).spec())); + extension_info->Set("name", new base::StringValue(extension->name())); extension_info->Set("exposeExperimentalAPIs", new base::FundamentalValue( - (*extension)->permissions_data()->HasAPIPermission( + extension->permissions_data()->HasAPIPermission( extensions::APIPermission::kExperimental))); results.Append(extension_info); } diff --git a/chrome/browser/extensions/all_urls_apitest.cc b/chrome/browser/extensions/all_urls_apitest.cc index 6422c64..b251d72 100644 --- a/chrome/browser/extensions/all_urls_apitest.cc +++ b/chrome/browser/extensions/all_urls_apitest.cc @@ -4,13 +4,12 @@ #include "base/command_line.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/test_switches.h" #include "chrome/test/base/ui_test_utils.h" #include "components/crx_file/id_util.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/extensions_client.h" #include "extensions/test/extension_test_message_listener.h" @@ -46,12 +45,12 @@ IN_PROC_BROWSER_TEST_F(AllUrlsApiTest, MAYBE_WhitelistedExtension) { extensions::ExtensionsClient::Get()->SetScriptingWhitelist(whitelist); // Then load extensions. - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - const size_t size_before = service->extensions()->size(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + const size_t size_before = registry->enabled_extensions().size(); ASSERT_TRUE(LoadExtension(extension_dir1)); ASSERT_TRUE(LoadExtension(extension_dir2)); - EXPECT_EQ(size_before + 2, service->extensions()->size()); + EXPECT_EQ(size_before + 2, registry->enabled_extensions().size()); std::string url; @@ -107,12 +106,12 @@ IN_PROC_BROWSER_TEST_F(AllUrlsApiTest, RegularExtensions) { base::FilePath extension_dir2 = test_data_dir_.AppendASCII("all_urls") .AppendASCII("execute_script"); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - const size_t size_before = service->extensions()->size(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + const size_t size_before = registry->enabled_extensions().size(); ASSERT_TRUE(LoadExtension(extension_dir1)); ASSERT_TRUE(LoadExtension(extension_dir2)); - EXPECT_EQ(size_before + 2, service->extensions()->size()); + EXPECT_EQ(size_before + 2, registry->enabled_extensions().size()); // Now verify we can script a regular http page. ASSERT_TRUE(StartEmbeddedTestServer()); 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 d557eb3..53744d7 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 @@ -20,6 +20,7 @@ #include "extensions/browser/api/declarative/rules_cache_delegate.h" #include "extensions/browser/api/declarative/test_rules_registry.h" #include "extensions/browser/extension_prefs.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/value_store/testing_value_store.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_constants.h" @@ -345,7 +346,9 @@ TEST_F(RulesRegistryWithCacheTest, RulesPreservedAcrossRestart) { &error)); ASSERT_TRUE(error.empty()); extension_service->AddExtension(extension.get()); - EXPECT_TRUE(extension_service->extensions()->Contains(extension->id())); + EXPECT_TRUE(extensions::ExtensionRegistry::Get(env_.profile()) + ->enabled_extensions() + .Contains(extension->id())); EXPECT_TRUE(extension->permissions_data()->HasAPIPermission( APIPermission::kDeclarativeWebRequest)); env_.GetExtensionSystem()->SetReady(); diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc index cf5c23d..bb47bd6 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc +++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_apitest_nss.cc @@ -8,7 +8,6 @@ #include "base/strings/stringprintf.h" #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/net/nss_context.h" #include "chrome/browser/net/url_request_mock_util.h" #include "chromeos/chromeos_switches.h" @@ -21,6 +20,7 @@ #include "content/public/test/test_utils.h" #include "crypto/nss_util_internal.h" #include "crypto/scoped_test_system_nss_key_slot.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/notification_types.h" #include "net/base/net_errors.h" #include "net/cert/nss_cert_database.h" @@ -373,10 +373,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, base::FilePath extension_path = test_data_dir_.AppendASCII("enterprise_platform_keys"); - ExtensionService* service = - extensions::ExtensionSystem::Get(profile())->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile()); const extensions::Extension* extension = - GetExtensionByPath(service->extensions(), extension_path); + GetExtensionByPath(registry->enabled_extensions(), extension_path); ASSERT_FALSE(extension->install_warnings().empty()); EXPECT_EQ( "'enterprise.platformKeys' is not allowed for specified install " diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc index 68fa086..19f72f0 100644 --- a/chrome/browser/extensions/api/messaging/message_service.cc +++ b/chrome/browser/extensions/api/messaging/message_service.cc @@ -31,6 +31,7 @@ #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/extension_host.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/lazy_background_task_queue.h" @@ -244,10 +245,9 @@ void MessageService::OpenChannelToExtension( return; BrowserContext* context = source->GetBrowserContext(); - ExtensionSystem* extension_system = ExtensionSystem::Get(context); - DCHECK(extension_system); - const Extension* target_extension = extension_system->extension_service()-> - extensions()->GetByID(target_extension_id); + ExtensionRegistry* registry = ExtensionRegistry::Get(context); + const Extension* target_extension = + registry->enabled_extensions().GetByID(target_extension_id); if (!target_extension) { DispatchOnDisconnect( source, receiver_port_id, kReceivingEndDoesntExistError); @@ -724,9 +724,9 @@ void MessageService::GotChannelID(scoped_ptr<OpenChannelParams> params, BrowserContext* context = params->source->GetBrowserContext(); + ExtensionRegistry* registry = ExtensionRegistry::Get(context); const Extension* target_extension = - ExtensionSystem::Get(context)->extension_service()->extensions()->GetByID( - params->target_extension_id); + registry->enabled_extensions().GetByID(params->target_extension_id); if (!target_extension) { pending_tls_channel_id_channels_.erase(channel_id); DispatchOnDisconnect( diff --git a/chrome/browser/extensions/api/preference/chrome_direct_setting_api.cc b/chrome/browser/extensions/api/preference/chrome_direct_setting_api.cc index fe1325a..93eb8d7 100644 --- a/chrome/browser/extensions/api/preference/chrome_direct_setting_api.cc +++ b/chrome/browser/extensions/api/preference/chrome_direct_setting_api.cc @@ -11,9 +11,8 @@ #include "base/prefs/pref_service.h" #include "base/strings/stringprintf.h" #include "chrome/browser/extensions/api/preference/preference_api_constants.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" namespace extensions { namespace chromedirectsetting { @@ -137,12 +136,9 @@ void ChromeDirectSettingAPI::OnPrefChanged( base::ListValue args; args.Append(result.release()); - ExtensionService* extension_service = - ExtensionSystem::Get(profile_)->extension_service(); - const ExtensionSet* extensions = extension_service->extensions(); - for (ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - const std::string& extension_id = (*it)->id(); + for (const scoped_refptr<const extensions::Extension>& extension : + ExtensionRegistry::Get(profile_)->enabled_extensions()) { + const std::string& extension_id = extension->id(); if (router->ExtensionHasEventListener(extension_id, event_name)) { scoped_ptr<base::ListValue> args_copy(args.DeepCopy()); scoped_ptr<Event> event(new Event(event_name, args_copy.Pass())); diff --git a/chrome/browser/extensions/api/preference/preference_helpers.cc b/chrome/browser/extensions/api/preference/preference_helpers.cc index 237e365..86f39d5 100644 --- a/chrome/browser/extensions/api/preference/preference_helpers.cc +++ b/chrome/browser/extensions/api/preference/preference_helpers.cc @@ -8,12 +8,11 @@ #include "base/prefs/pref_service.h" #include "base/values.h" #include "chrome/browser/extensions/api/preference/preference_api.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/profiles/profile.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_prefs.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/manifest_handlers/incognito_info.h" #include "extensions/common/permissions/permissions_data.h" @@ -93,23 +92,20 @@ void DispatchEventToExtensions( EventRouter* router = EventRouter::Get(profile); if (!router || !router->HasEventListener(event_name)) return; - ExtensionService* extension_service = - ExtensionSystem::Get(profile)->extension_service(); - const ExtensionSet* extensions = extension_service->extensions(); - for (ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - std::string extension_id = (*it)->id(); + + for (const scoped_refptr<const extensions::Extension>& extension : + ExtensionRegistry::Get(profile)->enabled_extensions()) { // TODO(bauerb): Only iterate over registered event listeners. - if (router->ExtensionHasEventListener(extension_id, event_name) && - (*it)->permissions_data()->HasAPIPermission(permission) && - (!incognito || IncognitoInfo::IsSplitMode(it->get()) || - util::CanCrossIncognito(it->get(), profile))) { + if (router->ExtensionHasEventListener(extension->id(), event_name) && + extension->permissions_data()->HasAPIPermission(permission) && + (!incognito || IncognitoInfo::IsSplitMode(extension.get()) || + util::CanCrossIncognito(extension.get(), profile))) { // Inject level of control key-value. base::DictionaryValue* dict; bool rv = args->GetDictionary(0, &dict); DCHECK(rv); std::string level_of_control = - GetLevelOfControl(profile, extension_id, browser_pref, incognito); + GetLevelOfControl(profile, extension->id(), browser_pref, incognito); dict->SetString(kLevelOfControlKey, level_of_control); // If the extension is in incognito split mode, @@ -118,15 +114,12 @@ void DispatchEventToExtensions( // incognito pref has not alredy been set Profile* restrict_to_profile = NULL; bool from_incognito = false; - if (IncognitoInfo::IsSplitMode(it->get())) { - if (incognito && - util::IsIncognitoEnabled(extension_id, profile)) { + if (IncognitoInfo::IsSplitMode(extension.get())) { + if (incognito && util::IsIncognitoEnabled(extension->id(), profile)) { restrict_to_profile = profile->GetOffTheRecordProfile(); } else if (!incognito && PreferenceAPI::Get(profile)->DoesExtensionControlPref( - extension_id, - browser_pref, - &from_incognito) && + extension->id(), browser_pref, &from_incognito) && from_incognito) { restrict_to_profile = profile; } @@ -135,7 +128,7 @@ void DispatchEventToExtensions( scoped_ptr<base::ListValue> args_copy(args->DeepCopy()); scoped_ptr<Event> event(new Event(event_name, args_copy.Pass())); event->restrict_to_browser_context = restrict_to_profile; - router->DispatchEventToExtension(extension_id, event.Pass()); + router->DispatchEventToExtension(extension->id(), event.Pass()); } } } diff --git a/chrome/browser/extensions/api/push_messaging/push_messaging_canary_test.cc b/chrome/browser/extensions/api/push_messaging/push_messaging_canary_test.cc index 76a3ef5..af48842 100644 --- a/chrome/browser/extensions/api/push_messaging/push_messaging_canary_test.cc +++ b/chrome/browser/extensions/api/push_messaging/push_messaging_canary_test.cc @@ -9,13 +9,12 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/api/push_messaging/sync_setup_helper.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/common/chrome_switches.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/render_frame_host.h" -#include "extensions/common/extension_set.h" +#include "extensions/browser/extension_registry.h" #include "extensions/test/result_catcher.h" #include "net/dns/mock_host_resolver.h" @@ -133,19 +132,19 @@ class PushMessagingCanaryTest : public ExtensionApiTest { IN_PROC_BROWSER_TEST_F(PushMessagingCanaryTest, MANUAL_ReceivesPush) { InitializeSync(); - const ExtensionSet* installed_extensions = extension_service()->extensions(); - if (!installed_extensions->Contains(kTestExtensionId)) { + ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); + if (!registry->enabled_extensions().GetByID(kTestExtensionId)) { const Extension* extension = LoadExtension(test_data_dir_.AppendASCII("push_messaging_canary")); ASSERT_TRUE(extension); } - ASSERT_TRUE(installed_extensions->Contains(kTestExtensionId)); + ASSERT_TRUE(registry->enabled_extensions().GetByID(kTestExtensionId)); ResultCatcher catcher; catcher.RestrictToBrowserContext(profile()); const Extension* extension = - extension_service()->extensions()->GetByID(kTestExtensionId); + registry->enabled_extensions().GetByID(kTestExtensionId); ASSERT_TRUE(extension); ui_test_utils::NavigateToURL( browser(), extension->GetResourceURL("push_messaging_canary.html")); diff --git a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc index fdc9df0..2d07290 100644 --- a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc +++ b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc @@ -8,14 +8,13 @@ #include "base/strings/string_number_conversions.h" #include "base/task_runner_util.h" #include "chrome/browser/extensions/api/tabs/tabs_constants.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/profiles/profile.h" #include "content/public/browser/media_device_id.h" #include "content/public/browser/resource_context.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/event_router.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/error_utils.h" #include "extensions/common/permissions/permissions_data.h" #include "media/audio/audio_manager_base.h" @@ -84,14 +83,12 @@ void WebrtcAudioPrivateEventService::SignalEvent() { EventRouter* router = EventRouter::Get(browser_context_); if (!router || !router->HasEventListener(kEventName)) return; - ExtensionService* extension_service = - ExtensionSystem::Get(browser_context_)->extension_service(); - const ExtensionSet* extensions = extension_service->extensions(); - for (ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - const std::string& extension_id = (*it)->id(); + + for (const scoped_refptr<const extensions::Extension>& extension : + ExtensionRegistry::Get(browser_context_)->enabled_extensions()) { + const std::string& extension_id = extension->id(); if (router->ExtensionHasEventListener(extension_id, kEventName) && - (*it)->permissions_data()->HasAPIPermission("webrtcAudioPrivate")) { + extension->permissions_data()->HasAPIPermission("webrtcAudioPrivate")) { scoped_ptr<Event> event( new Event(kEventName, make_scoped_ptr(new base::ListValue()).Pass())); router->DispatchEventToExtension(extension_id, event.Pass()); diff --git a/chrome/browser/extensions/bookmark_app_helper_unittest.cc b/chrome/browser/extensions/bookmark_app_helper_unittest.cc index 6850826..9092c51 100644 --- a/chrome/browser/extensions/bookmark_app_helper_unittest.cc +++ b/chrome/browser/extensions/bookmark_app_helper_unittest.cc @@ -53,7 +53,7 @@ class BookmarkAppHelperExtensionServiceTest extensions::ExtensionServiceTestBase::SetUp(); InitializeEmptyExtensionService(); service_->Init(); - EXPECT_EQ(0u, service_->extensions()->size()); + EXPECT_EQ(0u, registry()->enabled_extensions().size()); } void TearDown() override { @@ -171,7 +171,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { const Extension* extension = service_->GetInstalledExtension(helper.extension()->id()); EXPECT_TRUE(extension); - EXPECT_EQ(1u, service_->extensions()->size()); + EXPECT_EQ(1u, registry()->enabled_extensions().size()); EXPECT_TRUE(extension->from_bookmark()); EXPECT_EQ(kAppTitle, extension->name()); EXPECT_EQ(kAppDescription, extension->description()); @@ -203,7 +203,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppWithManifest) { const Extension* extension = service_->GetInstalledExtension(helper.extension()->id()); EXPECT_TRUE(extension); - EXPECT_EQ(1u, service_->extensions()->size()); + EXPECT_EQ(1u, registry()->enabled_extensions().size()); EXPECT_TRUE(extension->from_bookmark()); EXPECT_EQ(kAppTitle, extension->name()); EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); @@ -226,7 +226,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { const Extension* extension = service_->GetInstalledExtension(helper.extension()->id()); EXPECT_TRUE(extension); - EXPECT_EQ(1u, service_->extensions()->size()); + EXPECT_EQ(1u, registry()->enabled_extensions().size()); EXPECT_TRUE(extension->from_bookmark()); EXPECT_EQ(kAppTitle, extension->name()); EXPECT_EQ(kAppDescription, extension->description()); @@ -264,7 +264,8 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { { EXPECT_EQ(1u, registry()->enabled_extensions().size()); - const Extension* extension = service_->extensions()->begin()->get(); + const Extension* extension = + registry()->enabled_extensions().begin()->get(); EXPECT_TRUE(extension->from_bookmark()); EXPECT_EQ(kAppTitle, extension->name()); EXPECT_EQ(kAppDescription, extension->description()); @@ -282,7 +283,8 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { { EXPECT_EQ(1u, registry()->enabled_extensions().size()); - const Extension* extension = service_->extensions()->begin()->get(); + const Extension* extension = + registry()->enabled_extensions().begin()->get(); EXPECT_TRUE(extension->from_bookmark()); EXPECT_EQ(kAlternativeAppTitle, extension->name()); EXPECT_EQ(kAppDescription, extension->description()); @@ -313,10 +315,9 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, GetWebApplicationInfo) { EXPECT_EQ(1u, registry()->enabled_extensions().size()); base::RunLoop run_loop; extensions::GetWebApplicationInfoFromApp( - profile_.get(), - service_->extensions()->begin()->get(), - base::Bind( - &ValidateWebApplicationInfo, run_loop.QuitClosure(), web_app_info)); + profile_.get(), registry()->enabled_extensions().begin()->get(), + base::Bind(&ValidateWebApplicationInfo, run_loop.QuitClosure(), + web_app_info)); run_loop.Run(); } diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc index a807334..f2f95b0 100644 --- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc +++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc @@ -41,6 +41,7 @@ #include "extensions/common/manifest_handlers/web_accessible_resources_info.h" #include "extensions/common/switches.h" +using content::BrowserContext; using content::BrowserThread; using content::BrowserURLHandler; using content::RenderViewHost; @@ -65,7 +66,7 @@ enum RenderProcessHostPrivilege { RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( const GURL& url, - ExtensionService* service) { + ExtensionRegistry* registry) { // Default to a normal renderer cause it is lower privileged. This should only // occur if the URL on a site instance is either malformed, or uninitialized. // If it is malformed, then there is no need for better privileges anyways. @@ -78,7 +79,8 @@ RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( if (!url.SchemeIs(kExtensionScheme)) return PRIV_NORMAL; - const Extension* extension = service->extensions()->GetByID(url.host()); + const Extension* extension = + registry->enabled_extensions().GetByID(url.host()); if (extension && AppIsolationInfo::HasIsolatedStorage(extension)) return PRIV_ISOLATED; if (extension && extension->is_hosted_app()) @@ -89,15 +91,15 @@ RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( RenderProcessHostPrivilege GetProcessPrivilege( content::RenderProcessHost* process_host, ProcessMap* process_map, - ExtensionService* service) { + ExtensionRegistry* registry) { std::set<std::string> extension_ids = process_map->GetExtensionsInProcess(process_host->GetID()); if (extension_ids.empty()) return PRIV_NORMAL; - for (std::set<std::string>::iterator iter = extension_ids.begin(); - iter != extension_ids.end(); ++iter) { - const Extension* extension = service->GetExtensionById(*iter, false); + for (const std::string& extension_id : extension_ids) { + const Extension* extension = + registry->enabled_extensions().GetByID(extension_id); if (extension && AppIsolationInfo::HasIsolatedStorage(extension)) return PRIV_ISOLATED; if (extension && extension->is_hosted_app()) @@ -124,13 +126,12 @@ GURL ChromeContentBrowserClientExtensionsPart::GetEffectiveURL( // If the input |url| is part of an installed app, the effective URL is an // extension URL with the ID of that extension as the host. This has the // effect of grouping apps together in a common SiteInstance. - ExtensionService* extension_service = - ExtensionSystem::Get(profile)->extension_service(); - if (!extension_service) + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); + if (!registry) return url; const Extension* extension = - extension_service->extensions()->GetHostedAppByURL(url); + registry->enabled_extensions().GetHostedAppByURL(url); if (!extension) return url; @@ -150,13 +151,12 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldUseProcessPerSite( if (!effective_url.SchemeIs(kExtensionScheme)) return false; - ExtensionService* extension_service = - ExtensionSystem::Get(profile)->extension_service(); - if (!extension_service) + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); + if (!registry) return false; const Extension* extension = - extension_service->extensions()->GetExtensionOrAppByURL(effective_url); + registry->enabled_extensions().GetByID(effective_url.host()); if (!extension) return false; @@ -186,20 +186,17 @@ bool ChromeContentBrowserClientExtensionsPart::CanCommitURL( // load in any process (e.g., in an iframe). However, the Chrome Web Store // cannot be loaded in iframes and should never be requested outside its // process. - Profile* profile = - Profile::FromBrowserContext(process_host->GetBrowserContext()); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + ExtensionRegistry* registry = + ExtensionRegistry::Get(process_host->GetBrowserContext()); + if (!registry) return true; const Extension* new_extension = - service->extensions()->GetExtensionOrAppByURL(url); - if (new_extension && - new_extension->is_hosted_app() && + registry->enabled_extensions().GetExtensionOrAppByURL(url); + if (new_extension && new_extension->is_hosted_app() && new_extension->id() == extensions::kWebStoreAppId && - !ProcessMap::Get(profile)->Contains( - new_extension->id(), process_host->GetID())) { + !ProcessMap::Get(process_host->GetBrowserContext()) + ->Contains(new_extension->id(), process_host->GetID())) { return false; } return true; @@ -212,21 +209,20 @@ bool ChromeContentBrowserClientExtensionsPart::IsSuitableHost( const GURL& site_url) { DCHECK(profile); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); ProcessMap* process_map = ProcessMap::Get(profile); // These may be NULL during tests. In that case, just assume any site can // share any host. - if (!service || !process_map) + if (!registry || !process_map) return true; // Otherwise, just make sure the process privilege matches the privilege // required by the site. RenderProcessHostPrivilege privilege_required = - GetPrivilegeRequiredByUrl(site_url, service); - return GetProcessPrivilege(process_host, process_map, service) == - privilege_required; + GetPrivilegeRequiredByUrl(site_url, registry); + return GetProcessPrivilege(process_host, process_map, registry) == + privilege_required; } // static @@ -237,14 +233,14 @@ ChromeContentBrowserClientExtensionsPart::ShouldTryToUseExistingProcessHost( // with background pages. It uses a globally set percentage of processes to // run such extensions and if the limit is exceeded, it returns true, to // indicate to the content module to group extensions together. - ExtensionService* service = profile ? - ExtensionSystem::Get(profile)->extension_service() : NULL; - if (!service) + ExtensionRegistry* registry = + profile ? ExtensionRegistry::Get(profile) : NULL; + if (!registry) return false; // We have to have a valid extension with background page to proceed. const Extension* extension = - service->extensions()->GetExtensionOrAppByURL(url); + registry->enabled_extensions().GetExtensionOrAppByURL(url); if (!extension) return false; if (!BackgroundInfo::HasBackgroundPage(extension)) @@ -277,13 +273,11 @@ bool ChromeContentBrowserClientExtensionsPart:: ShouldSwapBrowsingInstancesForNavigation(SiteInstance* site_instance, const GURL& current_url, const GURL& new_url) { - // If we don't have an ExtensionService, then rely on the SiteInstance logic + // If we don't have an ExtensionRegistry, then rely on the SiteInstance logic // in RenderFrameHostManager to decide when to swap. - Profile* profile = - Profile::FromBrowserContext(site_instance->GetBrowserContext()); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + ExtensionRegistry* registry = + ExtensionRegistry::Get(site_instance->GetBrowserContext()); + if (!registry) return false; // We must use a new BrowsingInstance (forcing a process swap and disabling @@ -296,14 +290,14 @@ bool ChromeContentBrowserClientExtensionsPart:: // to/from a hosted app will still trigger a SiteInstance swap in // RenderFrameHostManager. const Extension* current_extension = - service->extensions()->GetExtensionOrAppByURL(current_url); + registry->enabled_extensions().GetExtensionOrAppByURL(current_url); if (current_extension && current_extension->is_hosted_app() && current_extension->id() != extensions::kWebStoreAppId) current_extension = NULL; const Extension* new_extension = - service->extensions()->GetExtensionOrAppByURL(new_url); + registry->enabled_extensions().GetExtensionOrAppByURL(new_url); if (new_extension && new_extension->is_hosted_app() && new_extension->id() != extensions::kWebStoreAppId) @@ -312,7 +306,7 @@ bool ChromeContentBrowserClientExtensionsPart:: // First do a process check. We should force a BrowsingInstance swap if the // current process doesn't know about new_extension, even if current_extension // is somehow the same as new_extension. - ProcessMap* process_map = ProcessMap::Get(profile); + ProcessMap* process_map = ProcessMap::Get(site_instance->GetBrowserContext()); if (new_extension && site_instance->HasProcess() && !process_map->Contains( @@ -349,20 +343,19 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldAllowOpenURL( (from_url.SchemeIsHTTPOrHTTPS() || from_url.SchemeIs(kExtensionScheme))) { Profile* profile = Profile::FromBrowserContext( site_instance->GetProcess()->GetBrowserContext()); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) { + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); + if (!registry) { *result = true; return true; } const Extension* extension = - service->extensions()->GetExtensionOrAppByURL(to_url); + registry->enabled_extensions().GetExtensionOrAppByURL(to_url); if (!extension) { *result = true; return true; } const Extension* from_extension = - service->extensions()->GetExtensionOrAppByURL( + registry->enabled_extensions().GetExtensionOrAppByURL( site_instance->GetSiteURL()); if (from_extension && from_extension->id() == extension->id()) { *result = true; @@ -404,68 +397,59 @@ void ChromeContentBrowserClientExtensionsPart::RenderProcessWillLaunch( void ChromeContentBrowserClientExtensionsPart::SiteInstanceGotProcess( SiteInstance* site_instance) { - Profile* profile = Profile::FromBrowserContext( - site_instance->GetProcess()->GetBrowserContext()); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + BrowserContext* context = site_instance->GetProcess()->GetBrowserContext(); + ExtensionRegistry* registry = ExtensionRegistry::Get(context); + if (!registry) return; - const Extension* extension = service->extensions()->GetExtensionOrAppByURL( - site_instance->GetSiteURL()); + const Extension* extension = + registry->enabled_extensions().GetExtensionOrAppByURL( + site_instance->GetSiteURL()); if (!extension) return; - ProcessMap::Get(profile)->Insert(extension->id(), + ProcessMap::Get(context)->Insert(extension->id(), site_instance->GetProcess()->GetID(), site_instance->GetId()); - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(&InfoMap::RegisterExtensionProcess, - ExtensionSystem::Get(profile)->info_map(), - extension->id(), - site_instance->GetProcess()->GetID(), - site_instance->GetId())); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&InfoMap::RegisterExtensionProcess, + ExtensionSystem::Get(context)->info_map(), extension->id(), + site_instance->GetProcess()->GetID(), site_instance->GetId())); } void ChromeContentBrowserClientExtensionsPart::SiteInstanceDeleting( SiteInstance* site_instance) { - Profile* profile = - Profile::FromBrowserContext(site_instance->GetBrowserContext()); - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + BrowserContext* context = site_instance->GetBrowserContext(); + ExtensionRegistry* registry = ExtensionRegistry::Get(context); + if (!registry) return; - const Extension* extension = service->extensions()->GetExtensionOrAppByURL( - site_instance->GetSiteURL()); + const Extension* extension = + registry->enabled_extensions().GetExtensionOrAppByURL( + site_instance->GetSiteURL()); if (!extension) return; - ProcessMap::Get(profile)->Remove(extension->id(), + ProcessMap::Get(context)->Remove(extension->id(), site_instance->GetProcess()->GetID(), site_instance->GetId()); - BrowserThread::PostTask(BrowserThread::IO, - FROM_HERE, - base::Bind(&InfoMap::UnregisterExtensionProcess, - ExtensionSystem::Get(profile)->info_map(), - extension->id(), - site_instance->GetProcess()->GetID(), - site_instance->GetId())); + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&InfoMap::UnregisterExtensionProcess, + ExtensionSystem::Get(context)->info_map(), extension->id(), + site_instance->GetProcess()->GetID(), site_instance->GetId())); } void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( RenderViewHost* rvh, const GURL& url, WebPreferences* web_prefs) { - Profile* profile = - Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); - - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + const ExtensionRegistry* registry = + ExtensionRegistry::Get(rvh->GetProcess()->GetBrowserContext()); + if (!registry) return; // Note: it's not possible for kExtensionsScheme to change during the lifetime @@ -481,7 +465,8 @@ void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( WebContents* web_contents = WebContents::FromRenderViewHost(rvh); ViewType view_type = GetViewType(web_contents); - const Extension* extension = service->extensions()->GetByID(site_url.host()); + const Extension* extension = + registry->enabled_extensions().GetByID(site_url.host()); extension_webkit_preferences::SetPreferences(extension, view_type, web_prefs); } diff --git a/chrome/browser/extensions/component_loader_unittest.cc b/chrome/browser/extensions/component_loader_unittest.cc index a608afb..55d592c 100644 --- a/chrome/browser/extensions/component_loader_unittest.cc +++ b/chrome/browser/extensions/component_loader_unittest.cc @@ -16,6 +16,7 @@ #include "chrome/test/base/testing_profile.h" #include "components/pref_registry/pref_registry_syncable.h" #include "content/public/test/test_browser_thread_bundle.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -30,23 +31,25 @@ class MockExtensionService : public TestExtensionService { private: bool ready_; size_t unloaded_count_; - ExtensionSet extension_set_; + ExtensionRegistry* registry_; public: - MockExtensionService() : ready_(false), unloaded_count_(0) { - } + explicit MockExtensionService(Profile* profile) + : ready_(false), + unloaded_count_(0), + registry_(ExtensionRegistry::Get(profile)) {} void AddComponentExtension(const Extension* extension) override { - EXPECT_FALSE(extension_set_.Contains(extension->id())); + EXPECT_FALSE(registry_->enabled_extensions().Contains(extension->id())); // ExtensionService must become the owner of the extension object. - extension_set_.Insert(extension); + registry_->AddEnabled(extension); } void UnloadExtension(const std::string& extension_id, UnloadedExtensionInfo::Reason reason) override { - ASSERT_TRUE(extension_set_.Contains(extension_id)); + ASSERT_TRUE(registry_->enabled_extensions().Contains(extension_id)); // Remove the extension with the matching id. - extension_set_.Remove(extension_id); + registry_->RemoveEnabled(extension_id); unloaded_count_++; } @@ -56,8 +59,6 @@ class MockExtensionService : public TestExtensionService { bool is_ready() override { return ready_; } - const ExtensionSet* extensions() const override { return &extension_set_; } - void set_ready(bool ready) { ready_ = ready; } @@ -66,9 +67,7 @@ class MockExtensionService : public TestExtensionService { return unloaded_count_; } - void clear_extensions() { - extension_set_.Clear(); - } + void clear_extensions() { registry_->ClearAll(); } }; } // namespace @@ -78,11 +77,11 @@ class ComponentLoaderTest : public testing::Test { ComponentLoaderTest() // Note: we pass the same pref service here, to stand in for both // user prefs and local state. - : component_loader_(&extension_service_, + : extension_service_(&profile_), + component_loader_(&extension_service_, &prefs_, &local_state_, - &profile_) { - } + &profile_) {} void SetUp() override { extension_path_ = @@ -104,10 +103,10 @@ class ComponentLoaderTest : public testing::Test { } protected: + TestingProfile profile_; MockExtensionService extension_service_; TestingPrefServiceSyncable prefs_; TestingPrefServiceSimple local_state_; - TestingProfile profile_; ComponentLoader component_loader_; // The root directory of the text extension. @@ -180,7 +179,8 @@ TEST_F(ComponentLoaderTest, AddWhenNotReady) { std::string extension_id = component_loader_.Add(manifest_contents_, extension_path_); EXPECT_NE("", extension_id); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + ExtensionRegistry* registry = ExtensionRegistry::Get(&profile_); + EXPECT_EQ(0u, registry->enabled_extensions().size()); } // Test that it *is* loaded when the extension service *is* ready. @@ -189,54 +189,57 @@ TEST_F(ComponentLoaderTest, AddWhenReady) { std::string extension_id = component_loader_.Add(manifest_contents_, extension_path_); EXPECT_NE("", extension_id); - EXPECT_EQ(1u, extension_service_.extensions()->size()); - EXPECT_TRUE(extension_service_.extensions()->GetByID(extension_id)); + ExtensionRegistry* registry = ExtensionRegistry::Get(&profile_); + EXPECT_EQ(1u, registry->enabled_extensions().size()); + EXPECT_TRUE(registry->enabled_extensions().GetByID(extension_id)); } TEST_F(ComponentLoaderTest, Remove) { extension_service_.set_ready(false); + ExtensionRegistry* registry = ExtensionRegistry::Get(&profile_); // Removing an extension that was never added should be ok. component_loader_.Remove(extension_path_); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + EXPECT_EQ(0u, registry->enabled_extensions().size()); // Try adding and removing before LoadAll() is called. component_loader_.Add(manifest_contents_, extension_path_); component_loader_.Remove(extension_path_); component_loader_.LoadAll(); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + EXPECT_EQ(0u, registry->enabled_extensions().size()); // Load an extension, and check that it's unloaded when Remove() is called. extension_service_.set_ready(true); std::string extension_id = component_loader_.Add(manifest_contents_, extension_path_); - EXPECT_EQ(1u, extension_service_.extensions()->size()); + EXPECT_EQ(1u, registry->enabled_extensions().size()); component_loader_.Remove(extension_path_); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + EXPECT_EQ(0u, registry->enabled_extensions().size()); // And after calling LoadAll(), it shouldn't get loaded. component_loader_.LoadAll(); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + EXPECT_EQ(0u, registry->enabled_extensions().size()); } TEST_F(ComponentLoaderTest, LoadAll) { extension_service_.set_ready(false); + ExtensionRegistry* registry = ExtensionRegistry::Get(&profile_); // No extensions should be loaded if none were added. component_loader_.LoadAll(); - EXPECT_EQ(0u, extension_service_.extensions()->size()); + EXPECT_EQ(0u, registry->enabled_extensions().size()); // Use LoadAll() to load the default extensions. component_loader_.AddDefaultComponentExtensions(false); component_loader_.LoadAll(); - unsigned int default_count = extension_service_.extensions()->size(); + unsigned int default_count = registry->enabled_extensions().size(); // Clear the list of loaded extensions, and reload with one more. extension_service_.clear_extensions(); component_loader_.Add(manifest_contents_, extension_path_); component_loader_.LoadAll(); - EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); + EXPECT_EQ(default_count + 1, registry->enabled_extensions().size()); } TEST_F(ComponentLoaderTest, AddOrReplace) { @@ -260,13 +263,14 @@ TEST_F(ComponentLoaderTest, AddOrReplace) { extension_service_.set_ready(true); component_loader_.LoadAll(); + ExtensionRegistry* registry = ExtensionRegistry::Get(&profile_); - EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); + EXPECT_EQ(default_count + 1, registry->enabled_extensions().size()); EXPECT_EQ(0u, extension_service_.unloaded_count()); // replace loaded component extension. component_loader_.AddOrReplace(known_extension); - EXPECT_EQ(default_count + 1, extension_service_.extensions()->size()); + EXPECT_EQ(default_count + 1, registry->enabled_extensions().size()); EXPECT_EQ(1u, extension_service_.unloaded_count()); // Add an invalid component extension. diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc index e269ead..788567e 100644 --- a/chrome/browser/extensions/crx_installer.cc +++ b/chrome/browser/extensions/crx_installer.cc @@ -39,6 +39,7 @@ #include "content/public/browser/resource_dispatcher_host.h" #include "content/public/browser/user_metrics.h" #include "extensions/browser/extension_prefs.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/install/crx_installer_error.h" #include "extensions/browser/install/extension_install_ui.h" @@ -597,8 +598,9 @@ void CrxInstaller::ConfirmInstall() { CheckUpdateFromSettingsPage(); GURL overlapping_url; + ExtensionRegistry* registry = ExtensionRegistry::Get(service->profile()); const Extension* overlapping_extension = - service->extensions()->GetHostedAppByOverlappingWebExtent( + registry->enabled_extensions().GetHostedAppByOverlappingWebExtent( extension()->web_extent()); if (overlapping_extension && overlapping_extension->id() != extension()->id()) { diff --git a/chrome/browser/extensions/extension_apitest.cc b/chrome/browser/extensions/extension_apitest.cc index 90be1ca..ecf88fd 100644 --- a/chrome/browser/extensions/extension_apitest.cc +++ b/chrome/browser/extensions/extension_apitest.cc @@ -14,6 +14,7 @@ #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/test/base/ui_test_utils.h" #include "extensions/browser/api/test/test_api.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -325,34 +326,33 @@ bool ExtensionApiTest::RunExtensionTestImpl(const std::string& extension_name, // Test that exactly one extension is loaded, and return it. const extensions::Extension* ExtensionApiTest::GetSingleLoadedExtension() { - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); - const extensions::Extension* extension = NULL; - for (extensions::ExtensionSet::const_iterator it = - service->extensions()->begin(); - it != service->extensions()->end(); ++it) { + const extensions::Extension* result = NULL; + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { // Ignore any component extensions. They are automatically loaded into all // profiles and aren't the extension we're looking for here. - if ((*it)->location() == extensions::Manifest::COMPONENT) + if (extension->location() == extensions::Manifest::COMPONENT) continue; - if (extension != NULL) { + if (result != NULL) { // TODO(yoz): this is misleading; it counts component extensions. message_ = base::StringPrintf( "Expected only one extension to be present. Found %u.", - static_cast<unsigned>(service->extensions()->size())); + static_cast<unsigned>(registry->enabled_extensions().size())); return NULL; } - extension = it->get(); + result = extension.get(); } - if (!extension) { + if (!result) { message_ = "extension pointer is NULL."; return NULL; } - return extension; + return result; } bool ExtensionApiTest::StartEmbeddedTestServer() { diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc index 579967c..d1ec36b 100644 --- a/chrome/browser/extensions/extension_browsertest.cc +++ b/chrome/browser/extensions/extension_browsertest.cc @@ -43,6 +43,7 @@ #include "content/public/test/test_utils.h" #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_prefs.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/notification_types.h" #include "extensions/browser/uninstall_reason.h" @@ -56,6 +57,7 @@ using extensions::Extension; using extensions::ExtensionCreator; +using extensions::ExtensionRegistry; using extensions::FeatureSwitch; using extensions::Manifest; @@ -97,13 +99,13 @@ Profile* ExtensionBrowserTest::profile() { // static const Extension* ExtensionBrowserTest::GetExtensionByPath( - const extensions::ExtensionSet* extensions, const base::FilePath& path) { + const extensions::ExtensionSet& extensions, + const base::FilePath& path) { base::FilePath extension_path = base::MakeAbsoluteFilePath(path); EXPECT_TRUE(!extension_path.empty()); - for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); - iter != extensions->end(); ++iter) { - if ((*iter)->path() == extension_path) { - return iter->get(); + for (const scoped_refptr<const Extension>& extension : extensions) { + if (extension->path() == extension_path) { + return extension.get(); } } return NULL; @@ -163,6 +165,7 @@ ExtensionBrowserTest::LoadExtensionWithInstallParam( const std::string& install_param) { ExtensionService* service = extensions::ExtensionSystem::Get( profile())->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); { observer_->Watch(extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, content::NotificationService::AllSources()); @@ -179,7 +182,8 @@ ExtensionBrowserTest::LoadExtensionWithInstallParam( // Find the loaded extension by its path. See crbug.com/59531 for why // we cannot just use last_loaded_extension_id(). - const Extension* extension = GetExtensionByPath(service->extensions(), path); + const Extension* extension = + GetExtensionByPath(registry->enabled_extensions(), path); if (!extension) return NULL; @@ -208,7 +212,7 @@ ExtensionBrowserTest::LoadExtensionWithInstallParam( extensions::ExtensionPrefs::Get(profile()) ->SetInstallParam(extension_id, install_param); // Re-enable the extension if needed. - if (service->extensions()->Contains(extension_id)) { + if (registry->enabled_extensions().Contains(extension_id)) { content::WindowedNotificationObserver load_signal( extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, content::Source<Profile>(profile())); @@ -264,6 +268,7 @@ const Extension* ExtensionBrowserTest::LoadExtensionAsComponentWithManifest( const base::FilePath::CharType* manifest_relative_path) { ExtensionService* service = extensions::ExtensionSystem::Get( profile())->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); std::string manifest; if (!base::ReadFileToString(path.Append(manifest_relative_path), &manifest)) { @@ -271,7 +276,8 @@ const Extension* ExtensionBrowserTest::LoadExtensionAsComponentWithManifest( } std::string extension_id = service->component_loader()->Add(manifest, path); - const Extension* extension = service->extensions()->GetByID(extension_id); + const Extension* extension = + registry->enabled_extensions().GetByID(extension_id); if (!extension) return NULL; observer_->set_last_loaded_extension_id(extension->id()); @@ -467,8 +473,9 @@ const Extension* ExtensionBrowserTest::InstallOrUpdateExtension( bool is_ephemeral) { ExtensionService* service = extensions::ExtensionSystem::Get(profile())->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); service->set_show_extensions_prompts(false); - size_t num_before = service->extensions()->size(); + size_t num_before = registry->enabled_extensions().size(); { scoped_ptr<ExtensionInstallPrompt> install_ui; @@ -512,17 +519,16 @@ const Extension* ExtensionBrowserTest::InstallOrUpdateExtension( observer_->Wait(); } - size_t num_after = service->extensions()->size(); + size_t num_after = registry->enabled_extensions().size(); EXPECT_EQ(num_before + expected_change, num_after); if (num_before + expected_change != num_after) { VLOG(1) << "Num extensions before: " << base::IntToString(num_before) << " num after: " << base::IntToString(num_after) << " Installed extensions follow:"; - for (extensions::ExtensionSet::const_iterator it = - service->extensions()->begin(); - it != service->extensions()->end(); ++it) - VLOG(1) << " " << (*it)->id(); + for (const scoped_refptr<const Extension>& extension : + registry->enabled_extensions()) + VLOG(1) << " " << extension->id(); VLOG(1) << "Errors follow:"; const std::vector<base::string16>* errors = diff --git a/chrome/browser/extensions/extension_browsertest.h b/chrome/browser/extensions/extension_browsertest.h index 7f41236..254aa1e 100644 --- a/chrome/browser/extensions/extension_browsertest.h +++ b/chrome/browser/extensions/extension_browsertest.h @@ -72,7 +72,8 @@ class ExtensionBrowserTest : virtual public InProcessBrowserTest { virtual Profile* profile(); static const extensions::Extension* GetExtensionByPath( - const extensions::ExtensionSet* extensions, const base::FilePath& path); + const extensions::ExtensionSet& extensions, + const base::FilePath& path); // InProcessBrowserTest void SetUp() override; diff --git a/chrome/browser/extensions/extension_functional_browsertest.cc b/chrome/browser/extensions/extension_functional_browsertest.cc index 079b638..6221e34 100644 --- a/chrome/browser/extensions/extension_functional_browsertest.cc +++ b/chrome/browser/extensions/extension_functional_browsertest.cc @@ -10,6 +10,7 @@ #include "chrome/browser/ui/browser_commands.h" #include "content/public/browser/notification_service.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/notification_types.h" @@ -20,7 +21,8 @@ class ExtensionFunctionalTest : public ExtensionBrowserTest { void InstallExtensionSilently(ExtensionService* service, const char* filename) { service->set_show_extensions_prompts(false); - size_t num_before = service->extensions()->size(); + ExtensionRegistry* registry = ExtensionRegistry::Get(profile()); + size_t num_before = registry->enabled_extensions().size(); base::FilePath path = test_data_dir_.AppendASCII(filename); @@ -43,23 +45,19 @@ class ExtensionFunctionalTest : public ExtensionBrowserTest { installer->InstallCrx(path); observer_->Wait(); - size_t num_after = service->extensions()->size(); + size_t num_after = registry->enabled_extensions().size(); EXPECT_EQ(num_before + 1, num_after); extension_loaded_observer.Wait(); - const Extension* extension = service->GetExtensionById( - last_loaded_extension_id(), false); - EXPECT_TRUE(extension != NULL); - } - - ExtensionService* GetExtensionService() { - return ExtensionSystem::Get(profile())->extension_service(); + const Extension* extension = + registry->enabled_extensions().GetByID(last_loaded_extension_id()); + EXPECT_TRUE(extension); } }; IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, PRE_TestAdblockExtensionCrash) { - InstallExtensionSilently(GetExtensionService(), "adblock.crx"); + InstallExtensionSilently(extension_service(), "adblock.crx"); } // Timing out on XP and Vista: http://crbug.com/387866 @@ -70,7 +68,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, #endif IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, MAYBE_TestAdblockExtensionCrash) { - ExtensionService* service = GetExtensionService(); + ExtensionService* service = extension_service(); // Verify that the extension is enabled and allowed in incognito // is disabled. EXPECT_TRUE(service->IsExtensionEnabled(last_loaded_extension_id())); @@ -84,11 +82,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, #define MAYBE_TestSetExtensionsState TestSetExtensionsState #endif IN_PROC_BROWSER_TEST_F(ExtensionFunctionalTest, MAYBE_TestSetExtensionsState) { - InstallExtensionSilently(GetExtensionService(), "google_talk.crx"); + InstallExtensionSilently(extension_service(), "google_talk.crx"); // Disable the extension and verify. util::SetIsIncognitoEnabled(last_loaded_extension_id(), profile(), false); - ExtensionService* service = GetExtensionService(); + ExtensionService* service = extension_service(); service->DisableExtension(last_loaded_extension_id(), Extension::DISABLE_USER_ACTION); EXPECT_FALSE(service->IsExtensionEnabled(last_loaded_extension_id())); diff --git a/chrome/browser/extensions/extension_keybinding_registry.cc b/chrome/browser/extensions/extension_keybinding_registry.cc index 40c7712..dae15fd 100644 --- a/chrome/browser/extensions/extension_keybinding_registry.cc +++ b/chrome/browser/extensions/extension_keybinding_registry.cc @@ -6,13 +6,11 @@ #include "base/values.h" #include "chrome/browser/extensions/active_tab_permission_granter.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/command.h" #include "content/public/browser/browser_context.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_registry.h" -#include "extensions/browser/extension_system.h" #include "extensions/browser/notification_types.h" #include "extensions/common/extension_set.h" #include "extensions/common/manifest_constants.h" @@ -75,16 +73,14 @@ void ExtensionKeybindingRegistry::RemoveExtensionKeybinding( } void ExtensionKeybindingRegistry::Init() { - ExtensionService* service = - ExtensionSystem::Get(browser_context_)->extension_service(); - if (!service) - return; // ExtensionService can be null during testing. - - const ExtensionSet* extensions = service->extensions(); - ExtensionSet::const_iterator iter = extensions->begin(); - for (; iter != extensions->end(); ++iter) - if (ExtensionMatchesFilter(iter->get())) - AddExtensionKeybinding(iter->get(), std::string()); + ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); + if (!registry) + return; // ExtensionRegistry can be null during testing. + + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) + if (ExtensionMatchesFilter(extension.get())) + AddExtensionKeybinding(extension.get(), std::string()); } bool ExtensionKeybindingRegistry::ShouldIgnoreCommand( @@ -100,10 +96,9 @@ bool ExtensionKeybindingRegistry::NotifyEventTargets( void ExtensionKeybindingRegistry::CommandExecuted( const std::string& extension_id, const std::string& command) { - ExtensionService* service = - ExtensionSystem::Get(browser_context_)->extension_service(); - - const Extension* extension = service->extensions()->GetByID(extension_id); + const Extension* extension = ExtensionRegistry::Get(browser_context_) + ->enabled_extensions() + .GetByID(extension_id); if (!extension) return; @@ -194,10 +189,9 @@ void ExtensionKeybindingRegistry::Observe( content::Details<std::pair<const std::string, const std::string> >( details).ptr(); - const Extension* extension = ExtensionSystem::Get(browser_context_) - ->extension_service() - ->extensions() - ->GetByID(payload->first); + const Extension* extension = ExtensionRegistry::Get(browser_context_) + ->enabled_extensions() + .GetByID(payload->first); // During install and uninstall the extension won't be found. We'll catch // those events above, with the LOADED/UNLOADED, so we ignore this event. if (!extension) diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index d8e601b..5728126 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -341,10 +341,6 @@ ExtensionService::ExtensionService(Profile* profile, install_directory_.value().length(), 0, 500, 100); } -const ExtensionSet* ExtensionService::extensions() const { - return ®istry_->enabled_extensions(); -} - extensions::PendingExtensionManager* ExtensionService::pending_extension_manager() { return &pending_extension_manager_; @@ -1918,7 +1914,7 @@ void ExtensionService::RegisterContentSettings( host_content_settings_map->RegisterProvider( HostContentSettingsMap::INTERNAL_EXTENSION_PROVIDER, scoped_ptr<content_settings::ObservableProvider>( - new content_settings::InternalExtensionProvider(this))); + new content_settings::InternalExtensionProvider(profile_))); host_content_settings_map->RegisterProvider( HostContentSettingsMap::CUSTOM_EXTENSION_PROVIDER, diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h index 556adb0..86dea9df 100644 --- a/chrome/browser/extensions/extension_service.h +++ b/chrome/browser/extensions/extension_service.h @@ -73,11 +73,6 @@ class ExtensionServiceInterface public: virtual ~ExtensionServiceInterface() {} - // DEPRECATED: Use ExtensionRegistry::enabled_extensions() instead. - // - // ExtensionRegistry also has the disabled, terminated and blacklisted sets. - virtual const extensions::ExtensionSet* extensions() const = 0; - // Gets the object managing the set of pending extensions. virtual extensions::PendingExtensionManager* pending_extension_manager() = 0; @@ -205,7 +200,6 @@ class ExtensionService // ExtensionServiceInterface implementation. // // NOTE: Many of these methods are DEPRECATED. See the interface for details. - const extensions::ExtensionSet* extensions() const override; extensions::PendingExtensionManager* pending_extension_manager() override; const extensions::Extension* GetExtensionById( const std::string& id, diff --git a/chrome/browser/extensions/extension_startup_browsertest.cc b/chrome/browser/extensions/extension_startup_browsertest.cc index bfd1496..25e761d 100644 --- a/chrome/browser/extensions/extension_startup_browsertest.cc +++ b/chrome/browser/extensions/extension_startup_browsertest.cc @@ -109,15 +109,14 @@ class ExtensionStartupTestBase : public InProcessBrowserTest { void WaitForServicesToStart(int num_expected_extensions, bool expect_extensions_enabled) { - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); // Count the number of non-component extensions. int found_extensions = 0; - for (extensions::ExtensionSet::const_iterator it = - service->extensions()->begin(); - it != service->extensions()->end(); ++it) { - if ((*it)->location() != extensions::Manifest::COMPONENT) + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { + if (extension->location() != extensions::Manifest::COMPONENT) found_extensions++; } @@ -126,6 +125,9 @@ class ExtensionStartupTestBase : public InProcessBrowserTest { ASSERT_EQ(static_cast<uint32>(num_expected_extensions), static_cast<uint32>(found_extensions)); + + ExtensionService* service = extensions::ExtensionSystem::Get( + browser()->profile())->extension_service(); ASSERT_EQ(expect_extensions_enabled, service->extensions_enabled()); content::WindowedNotificationObserver user_scripts_observer( diff --git a/chrome/browser/extensions/extension_view_host_factory.cc b/chrome/browser/extensions/extension_view_host_factory.cc index db04a28..38e2e73 100644 --- a/chrome/browser/extensions/extension_view_host_factory.cc +++ b/chrome/browser/extensions/extension_view_host_factory.cc @@ -4,13 +4,12 @@ #include "chrome/browser/extensions/extension_view_host_factory.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/extension_view_host.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/url_constants.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/process_manager.h" #include "extensions/common/manifest_handlers/incognito_info.h" #include "extensions/common/view_type.h" @@ -77,15 +76,14 @@ ExtensionViewHost* CreateViewHostForIncognito(const Extension* extension, // Returns the extension associated with |url| in |profile|. Returns NULL if // the extension does not exist. const Extension* GetExtensionForUrl(Profile* profile, const GURL& url) { - ExtensionService* service = - ExtensionSystem::Get(profile)->extension_service(); - if (!service) + ExtensionRegistry* registry = ExtensionRegistry::Get(profile); + if (!registry) return NULL; std::string extension_id = url.host(); if (url.SchemeIs(content::kChromeUIScheme) && url.host() == chrome::kChromeUIExtensionInfoHost) extension_id = url.path().substr(1); - return service->extensions()->GetByID(extension_id); + return registry->enabled_extensions().GetByID(extension_id); } // Creates and initializes an ExtensionViewHost for the extension with |url|. diff --git a/chrome/browser/extensions/menu_manager.cc b/chrome/browser/extensions/menu_manager.cc index 60f9301..95993c9 100644 --- a/chrome/browser/extensions/menu_manager.cc +++ b/chrome/browser/extensions/menu_manager.cc @@ -13,7 +13,6 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/extensions/menu_manager_factory.h" #include "chrome/browser/extensions/tab_helper.h" @@ -27,7 +26,6 @@ #include "content/public/common/context_menu_params.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_registry.h" -#include "extensions/browser/extension_system.h" #include "extensions/browser/guest_view/web_view/web_view_guest.h" #include "extensions/browser/state_store.h" #include "extensions/common/extension.h" @@ -36,7 +34,6 @@ #include "ui/gfx/text_elider.h" using content::WebContents; -using extensions::ExtensionSystem; namespace extensions { @@ -616,11 +613,9 @@ void MenuManager::ExecuteCommand(content::BrowserContext* context, if (!item) return; - // ExtensionService/Extension can be NULL in unit tests :( - ExtensionService* service = - ExtensionSystem::Get(browser_context_)->extension_service(); + ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); const Extension* extension = - service ? service->extensions()->GetByID(item->extension_id()) : NULL; + registry->enabled_extensions().GetByID(item->extension_id()); if (item->type() == MenuItem::RADIO) RadioItemSelected(item); @@ -804,10 +799,9 @@ void MenuManager::WriteToStorage(const Extension* extension, void MenuManager::ReadFromStorage(const std::string& extension_id, scoped_ptr<base::Value> value) { - const Extension* extension = ExtensionSystem::Get(browser_context_) - ->extension_service() - ->extensions() - ->GetByID(extension_id); + const Extension* extension = ExtensionRegistry::Get(browser_context_) + ->enabled_extensions() + .GetByID(extension_id); if (!extension) return; diff --git a/chrome/browser/extensions/options_page_apitest.cc b/chrome/browser/extensions/options_page_apitest.cc index 04183c6..2b4d466 100644 --- a/chrome/browser/extensions/options_page_apitest.cc +++ b/chrome/browser/extensions/options_page_apitest.cc @@ -3,7 +3,6 @@ // found in the LICENSE file. #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/test_extension_dir.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -11,7 +10,7 @@ #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/notification_service.h" #include "content/public/test/browser_test_utils.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/value_builder.h" #include "extensions/test/extension_test_message_listener.h" @@ -30,14 +29,13 @@ static const char kScriptClickOptionButton[] = // extension's options page. // Disabled because of flakiness. See http://crbug.com/174934. IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, DISABLED_OptionsPage) { - ExtensionService* service = - ExtensionSystem::Get(browser()->profile())->extension_service(); - size_t installed_extensions = service->extensions()->size(); + ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); + size_t installed_extensions = registry->enabled_extensions().size(); // Install an extension with an options page. const Extension* extension = InstallExtension(test_data_dir_.AppendASCII("options.crx"), 1); ASSERT_TRUE(extension); - EXPECT_EQ(installed_extensions + 1, service->extensions()->size()); + EXPECT_EQ(installed_extensions + 1, registry->enabled_extensions().size()); // Go to the Extension Settings page and click the Options button. ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIExtensionsURL)); diff --git a/chrome/browser/extensions/page_action_browsertest.cc b/chrome/browser/extensions/page_action_browsertest.cc index b8f91f2..3a36a4f 100644 --- a/chrome/browser/extensions/page_action_browsertest.cc +++ b/chrome/browser/extensions/page_action_browsertest.cc @@ -7,13 +7,12 @@ #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_action_test_util.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/ui_test_utils.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/switches.h" @@ -122,10 +121,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, UnloadPageAction) { IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { base::TimeTicks start_time = base::TimeTicks::Now(); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); + ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); - size_t size_before = service->extensions()->size(); + size_t size_before = registry->enabled_extensions().size(); base::FilePath base_path = test_data_dir_.AppendASCII("browsertest") .AppendASCII("crash_44415"); @@ -133,7 +132,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { const Extension* extensionA = LoadExtension(base_path.AppendASCII("ExtA")); ASSERT_TRUE(extensionA); ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); - ASSERT_EQ(size_before + 1, service->extensions()->size()); + ASSERT_EQ(size_before + 1, registry->enabled_extensions().size()); LOG(INFO) << "Load extension A done : " << (base::TimeTicks::Now() - start_time).InMilliseconds() @@ -143,7 +142,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { const Extension* extensionB = LoadExtension(base_path.AppendASCII("ExtB")); ASSERT_TRUE(extensionB); ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(2)); - ASSERT_EQ(size_before + 2, service->extensions()->size()); + ASSERT_EQ(size_before + 2, registry->enabled_extensions().size()); LOG(INFO) << "Load extension B done : " << (base::TimeTicks::Now() - start_time).InMilliseconds() @@ -152,8 +151,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { std::string idA = extensionA->id(); ReloadExtension(extensionA->id()); // ExtensionA has changed, so refetch it. - ASSERT_EQ(size_before + 2, service->extensions()->size()); - extensionA = service->extensions()->GetByID(idA); + ASSERT_EQ(size_before + 2, registry->enabled_extensions().size()); + extensionA = registry->enabled_extensions().GetByID(idA); LOG(INFO) << "Reload extension A done: " << (base::TimeTicks::Now() - start_time).InMilliseconds() @@ -178,9 +177,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, PageActionRefreshCrash) { IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { ASSERT_TRUE(test_server()->Start()); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - const size_t size_before = service->extensions()->size(); + ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + const size_t size_before = registry->enabled_extensions().size(); base::FilePath extension_path(test_data_dir_.AppendASCII("browsertest") .AppendASCII("title_localized_pa")); @@ -192,7 +191,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, TitleLocalizationPageAction) { ui_test_utils::NavigateToURL(browser(), url); ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); - ASSERT_EQ(size_before + 1, service->extensions()->size()); + ASSERT_EQ(size_before + 1, registry->enabled_extensions().size()); EXPECT_STREQ(base::WideToUTF8(L"Hreggvi\u00F0ur: l10n page action").c_str(), extension->description().c_str()); diff --git a/chrome/browser/extensions/plugin_apitest.cc b/chrome/browser/extensions/plugin_apitest.cc index cfd825f..f129958 100644 --- a/chrome/browser/extensions/plugin_apitest.cc +++ b/chrome/browser/extensions/plugin_apitest.cc @@ -18,6 +18,7 @@ #include "content/public/browser/plugin_service.h" #include "content/public/browser/web_contents.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/common/extension.h" #include "net/base/filename_util.h" @@ -63,11 +64,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginLoadUnload) { ExtensionService* service = extensions::ExtensionSystem::Get( browser()->profile())->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); service->set_show_extensions_prompts(false); - const size_t size_before = service->extensions()->size(); + const size_t size_before = registry->enabled_extensions().size(); const Extension* extension = LoadExtension(extension_dir); ASSERT_TRUE(extension); - EXPECT_EQ(size_before + 1, service->extensions()->size()); + EXPECT_EQ(size_before + 1, registry->enabled_extensions().size()); // Now the plugin should be in the cache. ASSERT_TRUE(content::ExecuteScriptAndExtractBool( tab, "testPluginWorks()", &result)); @@ -78,9 +81,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginLoadUnload) { EXPECT_TRUE(result); #endif - EXPECT_EQ(size_before + 1, service->extensions()->size()); + EXPECT_EQ(size_before + 1, registry->enabled_extensions().size()); UnloadExtension(extension->id()); - EXPECT_EQ(size_before, service->extensions()->size()); + EXPECT_EQ(size_before, registry->enabled_extensions().size()); // Now the plugin should be unloaded, and the page should be broken. @@ -91,7 +94,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginLoadUnload) { // If we reload the extension and page, it should work again. ASSERT_TRUE(LoadExtension(extension_dir)); - EXPECT_EQ(size_before + 1, service->extensions()->size()); + EXPECT_EQ(size_before + 1, registry->enabled_extensions().size()); { content::WindowedNotificationObserver observer( content::NOTIFICATION_LOAD_STOP, @@ -143,11 +146,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginPrivate) { ExtensionService* service = extensions::ExtensionSystem::Get( browser()->profile())->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); service->set_show_extensions_prompts(false); - const size_t size_before = service->extensions()->size(); + const size_t size_before = registry->enabled_extensions().size(); const Extension* extension = LoadExtension(extension_dir); ASSERT_TRUE(extension); - EXPECT_EQ(size_before + 1, service->extensions()->size()); + EXPECT_EQ(size_before + 1, registry->enabled_extensions().size()); // Load the test page through the extension URL, and the plugin should work. ui_test_utils::NavigateToURL(browser(), diff --git a/chrome/browser/extensions/test_extension_service.cc b/chrome/browser/extensions/test_extension_service.cc index e8385e4..c5ae36a 100644 --- a/chrome/browser/extensions/test_extension_service.cc +++ b/chrome/browser/extensions/test_extension_service.cc @@ -10,11 +10,6 @@ using extensions::Extension; TestExtensionService::~TestExtensionService() {} -const extensions::ExtensionSet* TestExtensionService::extensions() const { - ADD_FAILURE(); - return NULL; -} - extensions::PendingExtensionManager* TestExtensionService::pending_extension_manager() { ADD_FAILURE(); diff --git a/chrome/browser/extensions/test_extension_service.h b/chrome/browser/extensions/test_extension_service.h index 0bc13ac..e4409e3 100644 --- a/chrome/browser/extensions/test_extension_service.h +++ b/chrome/browser/extensions/test_extension_service.h @@ -23,7 +23,6 @@ class TestExtensionService : public ExtensionServiceInterface { ~TestExtensionService() override; // ExtensionServiceInterface implementation. - const extensions::ExtensionSet* extensions() const override; extensions::PendingExtensionManager* pending_extension_manager() override; bool UpdateExtension(const std::string& id, diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc index 0d9b6d4..e50c426 100644 --- a/chrome/browser/extensions/updater/extension_updater_unittest.cc +++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc @@ -457,10 +457,6 @@ class ServiceForManifestTests : public MockService { return registry_->disabled_extensions().GetByID(id); } - const ExtensionSet* extensions() const override { - return ®istry_->enabled_extensions(); - } - PendingExtensionManager* pending_extension_manager() override { return &pending_extension_manager_; } diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc index b4cc28e..a8269f3 100644 --- a/chrome/browser/extensions/user_script_listener_unittest.cc +++ b/chrome/browser/extensions/user_script_listener_unittest.cc @@ -191,8 +191,10 @@ class UserScriptListenerTest : public ExtensionServiceTestBase { } void UnloadTestExtension() { - ASSERT_FALSE(service_->extensions()->is_empty()); - service_->UnloadExtension((*service_->extensions()->begin())->id(), + const extensions::ExtensionSet& extensions = + registry()->enabled_extensions(); + ASSERT_FALSE(extensions.is_empty()); + service_->UnloadExtension((*extensions.begin())->id(), UnloadedExtensionInfo::REASON_DISABLE); } diff --git a/chrome/browser/extensions/webstore_startup_installer_browsertest.cc b/chrome/browser/extensions/webstore_startup_installer_browsertest.cc index a67482d..1662694 100644 --- a/chrome/browser/extensions/webstore_startup_installer_browsertest.cc +++ b/chrome/browser/extensions/webstore_startup_installer_browsertest.cc @@ -65,9 +65,10 @@ IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, Install) { RunTest("runTest"); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); const extensions::Extension* extension = - extensions::ExtensionRegistry::Get( - browser()->profile())->enabled_extensions().GetByID(kTestExtensionId); + registry->enabled_extensions().GetByID(kTestExtensionId); EXPECT_TRUE(extension); } @@ -162,15 +163,17 @@ IN_PROC_BROWSER_TEST_F(WebstoreStartupInstallerTest, InstallFromHostedApp) { ExtensionService* extension_service = extensions::ExtensionSystem::Get(browser()->profile())-> extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); extension_service->AddExtension(hosted_app.get()); - EXPECT_TRUE(extension_service->extensions()->Contains(hosted_app->id())); + EXPECT_TRUE(registry->enabled_extensions().GetByID(hosted_app->id())); ui_test_utils::NavigateToURL(browser(), kInstallUrl); - EXPECT_FALSE(extension_service->extensions()->Contains(kTestExtensionId)); + EXPECT_FALSE(registry->enabled_extensions().GetByID(kTestExtensionId)); RunTest("runTest"); - EXPECT_TRUE(extension_service->extensions()->Contains(kTestExtensionId)); + EXPECT_TRUE(registry->enabled_extensions().GetByID(kTestExtensionId)); } class WebstoreStartupInstallerSupervisedUsersTest diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc index e334630..254b14e 100644 --- a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc @@ -7,14 +7,13 @@ #include "base/json/json_string_value_serializer.h" #include "base/sys_info.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/sync/about_sync_util.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/common/chrome_version_info.h" #include "content/public/browser/browser_thread.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -109,17 +108,11 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( if (!primary_profile) return; - ExtensionService* service = - extensions::ExtensionSystem::Get(primary_profile)->extension_service(); - if (!service) - return; - + extensions::ExtensionRegistry* extension_registry = + extensions::ExtensionRegistry::Get(primary_profile); std::string extensions_list; - const extensions::ExtensionSet* extensions = service->extensions(); - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); - ++it) { - const extensions::Extension* extension = it->get(); + for (const scoped_refptr<const extensions::Extension>& extension : + extension_registry->enabled_extensions()) { if (extensions_list.empty()) { extensions_list = extension->name(); } else { diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc index dda868b..48e484f 100644 --- a/chrome/browser/media/media_capture_devices_dispatcher.cc +++ b/chrome/browser/media/media_capture_devices_dispatcher.cc @@ -54,10 +54,9 @@ #if defined(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" -#include "chrome/browser/extensions/extension_service.h" #include "extensions/browser/app_window/app_window.h" #include "extensions/browser/app_window/app_window_registry.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/permissions/permissions_data.h" #endif @@ -222,10 +221,9 @@ const extensions::Extension* GetExtensionForOrigin( if (!security_origin.SchemeIs(extensions::kExtensionScheme)) return NULL; - ExtensionService* extensions_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); const extensions::Extension* extension = - extensions_service->extensions()->GetByID(security_origin.host()); + extensions::ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( + security_origin.host()); DCHECK(extension); return extension; } diff --git a/chrome/browser/media_galleries/media_file_system_registry.cc b/chrome/browser/media_galleries/media_file_system_registry.cc index e5f8dfb..a01845e 100644 --- a/chrome/browser/media_galleries/media_file_system_registry.cc +++ b/chrome/browser/media_galleries/media_file_system_registry.cc @@ -12,7 +12,6 @@ #include "base/files/file_path.h" #include "base/prefs/pref_service.h" #include "base/stl_util.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" #include "chrome/browser/media_galleries/fileapi/mtp_device_map_service.h" #include "chrome/browser/media_galleries/gallery_watch_manager.h" @@ -34,7 +33,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" #include "storage/browser/fileapi/external_mount_points.h" @@ -769,10 +768,8 @@ void MediaFileSystemRegistry::OnGalleryRemoved( Profile* profile = prefs->profile(); // Get the Extensions, MediaGalleriesPreferences and ExtensionHostMap for // |profile|. - const ExtensionService* extension_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - const extensions::ExtensionSet* extensions_set = - extension_service->extensions(); + const extensions::ExtensionRegistry* extension_registry = + extensions::ExtensionRegistry::Get(profile); ExtensionGalleriesHostMap::const_iterator host_map_it = extension_hosts_map_.find(profile); DCHECK(host_map_it != extension_hosts_map_.end()); @@ -786,7 +783,8 @@ void MediaFileSystemRegistry::OnGalleryRemoved( for (ExtensionHostMap::const_iterator it = extension_host_map.begin(); it != extension_host_map.end(); ++it) { - extensions.push_back(extensions_set->GetByID(it->first)); + extensions.push_back( + extension_registry->enabled_extensions().GetByID(it->first)); } for (size_t i = 0; i < extensions.size(); ++i) { if (!ContainsKey(extension_hosts_map_, profile)) diff --git a/chrome/browser/media_galleries/media_galleries_preferences.cc b/chrome/browser/media_galleries/media_galleries_preferences.cc index ed5b223..eb5cd15 100644 --- a/chrome/browser/media_galleries/media_galleries_preferences.cc +++ b/chrome/browser/media_galleries/media_galleries_preferences.cc @@ -17,7 +17,6 @@ #include "base/values.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/media_galleries/fileapi/iapps_finder.h" #include "chrome/browser/media_galleries/fileapi/picasa_finder.h" #include "chrome/browser/media_galleries/imported_media_gallery_registry.h" @@ -33,7 +32,7 @@ #include "components/storage_monitor/storage_monitor.h" #include "content/public/browser/browser_thread.h" #include "extensions/browser/extension_prefs.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/pref_names.h" #include "extensions/common/extension_set.h" #include "extensions/common/permissions/api_permission.h" @@ -92,16 +91,11 @@ int NumberExtensionsUsingMediaGalleries(Profile* profile) { int count = 0; if (!profile) return count; - ExtensionService* extension_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - if (!extension_service) - return count; - const extensions::ExtensionSet* extensions = extension_service->extensions(); - for (extensions::ExtensionSet::const_iterator i = extensions->begin(); - i != extensions->end(); ++i) { + for (const scoped_refptr<const extensions::Extension>& extension : + extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { const extensions::PermissionsData* permissions_data = - (*i)->permissions_data(); + extension->permissions_data(); if (permissions_data->HasAPIPermission( extensions::APIPermission::kMediaGalleries) || permissions_data->HasAPIPermission( diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc index 851986c..b2d22fb 100644 --- a/chrome/browser/memory_details.cc +++ b/chrome/browser/memory_details.cc @@ -32,8 +32,7 @@ #endif #if defined(ENABLE_EXTENSIONS) -#include "chrome/browser/extensions/extension_service.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/process_manager.h" #include "extensions/browser/process_map.h" #include "extensions/browser/view_type_utils.h" @@ -286,8 +285,8 @@ void MemoryDetails::CollectChildInfoOnUIThread() { #if defined(ENABLE_EXTENSIONS) content::BrowserContext* context = render_process_host->GetBrowserContext(); - ExtensionService* extension_service = - extensions::ExtensionSystem::Get(context)->extension_service(); + extensions::ExtensionRegistry* extension_registry = + extensions::ExtensionRegistry::Get(context); extensions::ProcessMap* extension_process_map = extensions::ProcessMap::Get(context); is_extension = extension_process_map->Contains( @@ -317,7 +316,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { for (std::set<std::string>::iterator iter = extension_ids.begin(); iter != extension_ids.end(); ++iter) { const Extension* extension = - extension_service->GetExtensionById(*iter, false); + extension_registry->enabled_extensions().GetByID(*iter); if (extension && !extension->is_hosted_app()) { process.renderer_type = ProcessMemoryInformation::RENDERER_EXTENSION; @@ -329,7 +328,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { #if defined(ENABLE_EXTENSIONS) if (is_extension) { const Extension* extension = - extension_service->extensions()->GetByID(url.host()); + extension_registry->enabled_extensions().GetByID(url.host()); if (extension) { base::string16 title = base::UTF8ToUTF16(extension->name()); process.titles.push_back(title); diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 753d1673..89fb7f1 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc @@ -722,12 +722,12 @@ class PolicyTest : public InProcessBrowserTest { installer->Load(extension_path); observer.Wait(); - const extensions::ExtensionSet* extensions = - extension_service()->extensions(); - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - if ((*it)->path() == extension_path) - return it->get(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { + if (extension->path() == extension_path) + return extension.get(); } return NULL; } diff --git a/chrome/browser/profile_resetter/profile_resetter_unittest.cc b/chrome/browser/profile_resetter/profile_resetter_unittest.cc index b487a46..b34d6be 100644 --- a/chrome/browser/profile_resetter/profile_resetter_unittest.cc +++ b/chrome/browser/profile_resetter/profile_resetter_unittest.cc @@ -29,6 +29,7 @@ #include "components/search_engines/template_url_service_client.h" #include "content/public/browser/web_contents.h" #include "content/public/test/test_browser_thread.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_constants.h" #include "net/http/http_response_headers.h" @@ -628,16 +629,16 @@ TEST_F(ProfileResetterTest, ResetExtensionsByDisabling) { extensions::Manifest::TYPE_EXTENSION, false); service_->AddExtension(ext6.get()); - EXPECT_EQ(6u, service_->extensions()->size()); + EXPECT_EQ(6u, registry()->enabled_extensions().size()); ResetAndWait(ProfileResetter::EXTENSIONS); - EXPECT_EQ(4u, service_->extensions()->size()); - EXPECT_FALSE(service_->extensions()->Contains(theme->id())); - EXPECT_FALSE(service_->extensions()->Contains(ext2->id())); - EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); - EXPECT_TRUE(service_->extensions()->Contains(ext4->id())); - EXPECT_TRUE(service_->extensions()->Contains(ext5->id())); - EXPECT_TRUE(service_->extensions()->Contains(ext6->id())); + EXPECT_EQ(4u, registry()->enabled_extensions().size()); + EXPECT_FALSE(registry()->enabled_extensions().Contains(theme->id())); + EXPECT_FALSE(registry()->enabled_extensions().Contains(ext2->id())); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext3->id())); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext4->id())); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext5->id())); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext6->id())); EXPECT_TRUE(theme_service->UsingDefaultTheme()); } @@ -657,15 +658,15 @@ TEST_F(ProfileResetterTest, ResetExtensionsByDisablingNonOrganic) { extensions::Manifest::TYPE_EXTENSION, false); service_->AddExtension(ext3.get()); - EXPECT_EQ(2u, service_->extensions()->size()); + EXPECT_EQ(2u, registry()->enabled_extensions().size()); std::string master_prefs(kDistributionConfig); ReplaceString(&master_prefs, "placeholder_for_id", ext3->id()); ResetAndWait(ProfileResetter::EXTENSIONS, master_prefs); - EXPECT_EQ(1u, service_->extensions()->size()); - EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); + EXPECT_EQ(1u, registry()->enabled_extensions().size()); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext3->id())); } TEST_F(ProfileResetterTest, ResetExtensionsAndDefaultApps) { @@ -703,14 +704,14 @@ TEST_F(ProfileResetterTest, ResetExtensionsAndDefaultApps) { extensions::Manifest::TYPE_HOSTED_APP, true); service_->AddExtension(ext3.get()); - EXPECT_EQ(3u, service_->extensions()->size()); + EXPECT_EQ(3u, registry()->enabled_extensions().size()); ResetAndWait(ProfileResetter::EXTENSIONS); - EXPECT_EQ(1u, service_->extensions()->size()); - EXPECT_FALSE(service_->extensions()->Contains(ext1->id())); - EXPECT_FALSE(service_->extensions()->Contains(ext2->id())); - EXPECT_TRUE(service_->extensions()->Contains(ext3->id())); + EXPECT_EQ(1u, registry()->enabled_extensions().size()); + EXPECT_FALSE(registry()->enabled_extensions().Contains(ext1->id())); + EXPECT_FALSE(registry()->enabled_extensions().Contains(ext2->id())); + EXPECT_TRUE(registry()->enabled_extensions().Contains(ext3->id())); EXPECT_TRUE(theme_service->UsingDefaultTheme()); } diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc index 46b4fc6..884833c 100644 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc @@ -5,9 +5,6 @@ #include "chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h" #include "chrome/browser/browser_process.h" -#if defined(ENABLE_EXTENSIONS) -#include "chrome/browser/extensions/extension_service.h" -#endif #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_switches.h" @@ -17,7 +14,7 @@ #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/render_view_host.h" #if defined(ENABLE_EXTENSIONS) -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -103,18 +100,9 @@ Profile* PepperIsolatedFileSystemMessageFilter::GetProfile() { std::string PepperIsolatedFileSystemMessageFilter::CreateCrxFileSystem( Profile* profile) { #if defined(ENABLE_EXTENSIONS) - extensions::ExtensionSystem* extension_system = - extensions::ExtensionSystem::Get(profile); - if (!extension_system) - return std::string(); - - const ExtensionService* extension_service = - extension_system->extension_service(); - if (!extension_service) - return std::string(); - const extensions::Extension* extension = - extension_service->GetExtensionById(document_url_.host(), false); + extensions::ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( + document_url_.host()); if (!extension) return std::string(); @@ -153,9 +141,8 @@ int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem( Profile* profile = GetProfile(); const extensions::ExtensionSet* extension_set = NULL; if (profile) { - extension_set = extensions::ExtensionSystem::Get(profile) - ->extension_service() - ->extensions(); + extension_set = + &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); } if (!IsExtensionOrSharedModuleWhitelisted( document_url_, extension_set, allowed_crxfs_origins_) && diff --git a/chrome/browser/resources/pdf/pdf_extension_test.cc b/chrome/browser/resources/pdf/pdf_extension_test.cc index bdfea35..01245ac 100644 --- a/chrome/browser/resources/pdf/pdf_extension_test.cc +++ b/chrome/browser/resources/pdf/pdf_extension_test.cc @@ -13,6 +13,7 @@ #include "chrome/common/extensions/manifest_handlers/mime_types_handler.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/test/result_catcher.h" #include "grit/browser_resources.h" #include "net/test/embedded_test_server/embedded_test_server.h" @@ -51,7 +52,9 @@ class PDFExtensionTest : public ExtensionApiTest { service->component_loader()->Add(IDR_PDF_MANIFEST, base::FilePath(FILE_PATH_LITERAL("pdf"))); const extensions::Extension* extension = - service->extensions()->GetByID("mhjfbmdgcfjbbpaeojofohoefgiehjai"); + extensions::ExtensionRegistry::Get(profile()) + ->enabled_extensions() + .GetByID("mhjfbmdgcfjbbpaeojofohoefgiehjai"); ASSERT_TRUE(extension); ASSERT_TRUE(MimeTypesHandler::GetHandler( extension)->CanHandleMIMEType("application/pdf")); diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index 0fe1f84..5e2d409 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc @@ -562,7 +562,7 @@ SupervisedUserService::GetActiveSiteLists() { return site_lists.Pass(); for (const scoped_refptr<const extensions::Extension>& extension : - *extension_service->extensions()) { + extensions::ExtensionRegistry::Get(profile_)->enabled_extensions()) { if (!extension_service->IsExtensionEnabled(extension->id())) continue; diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc index ee98464..8c2d173 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc @@ -60,10 +60,6 @@ class MockExtensionService : public TestExtensionService { MockExtensionService() {} ~MockExtensionService() override {} - const extensions::ExtensionSet* extensions() const override { - return &extensions_; - } - void AddExtension(const extensions::Extension* extension) override { extensions_.Insert(make_scoped_refptr(extension)); } diff --git a/chrome/browser/themes/theme_syncable_service_unittest.cc b/chrome/browser/themes/theme_syncable_service_unittest.cc index 265133d..49abbb0 100644 --- a/chrome/browser/themes/theme_syncable_service_unittest.cc +++ b/chrome/browser/themes/theme_syncable_service_unittest.cc @@ -17,6 +17,7 @@ #include "chrome/test/base/testing_profile.h" #include "content/public/test/test_browser_thread.h" #include "extensions/browser/extension_prefs.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_url_handlers.h" @@ -187,7 +188,9 @@ class ThemeSyncableServiceTest : public testing::Test { extensions::ExtensionPrefs::Get(profile_.get()) ->AddGrantedPermissions(theme_extension_->id(), permissions.get()); service->AddExtension(theme_extension_.get()); - ASSERT_EQ(1u, service->extensions()->size()); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile_.get()); + ASSERT_EQ(1u, registry->enabled_extensions().size()); } // Overridden in PolicyInstalledThemeTest below. diff --git a/chrome/browser/ui/app_list/app_list_test_util.cc b/chrome/browser/ui/app_list/app_list_test_util.cc index da8f079..e67800b 100644 --- a/chrome/browser/ui/app_list/app_list_test_util.cc +++ b/chrome/browser/ui/app_list/app_list_test_util.cc @@ -7,6 +7,7 @@ #include "base/files/file_path.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/common/chrome_constants.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension_set.h" const char AppListTestBase::kHostedAppId[] = @@ -38,6 +39,5 @@ void AppListTestBase::SetUp() { service_->Init(); // There should be 5 extensions in the test profile. - const extensions::ExtensionSet* extensions = service_->extensions(); - ASSERT_EQ(static_cast<size_t>(5), extensions->size()); + ASSERT_EQ(5U, registry()->enabled_extensions().size()); } diff --git a/chrome/browser/ui/ash/ash_keyboard_controller_proxy.cc b/chrome/browser/ui/ash/ash_keyboard_controller_proxy.cc index 07634c6..ee01e82 100644 --- a/chrome/browser/ui/ash/ash_keyboard_controller_proxy.cc +++ b/chrome/browser/ui/ash/ash_keyboard_controller_proxy.cc @@ -7,7 +7,6 @@ #include "ash/display/display_controller.h" #include "ash/shell.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/media/media_capture_devices_dispatcher.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -15,7 +14,7 @@ #include "content/public/browser/web_contents.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_function_dispatcher.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/api/virtual_keyboard_private.h" #include "extensions/common/constants.h" @@ -97,10 +96,9 @@ void AshKeyboardControllerProxy::RequestAudioInput( const extensions::Extension* extension = NULL; GURL origin(request.security_origin); if (origin.SchemeIs(extensions::kExtensionScheme)) { - ExtensionService* extensions_service = - extensions::ExtensionSystem::Get( - GetBrowserContext())->extension_service(); - extension = extensions_service->extensions()->GetByID(origin.host()); + const extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(GetBrowserContext()); + extension = registry->enabled_extensions().GetByID(origin.host()); DCHECK(extension); } diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index eda6e62..97ae8c6 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -2440,8 +2440,9 @@ bool Browser::MaybeCreateBackgroundContents( // can create BackgroundContents. We don't have to check for background // permission as that is checked in RenderMessageFilter when the CreateWindow // message is processed. - const Extension* extension = - extensions_service->extensions()->GetHostedAppByURL(opener_url); + const Extension* extension = extensions::ExtensionRegistry::Get(profile_) + ->enabled_extensions() + .GetHostedAppByURL(opener_url); if (!extension) return false; diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index e22312c..2b735c7 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -81,6 +81,7 @@ #include "content/public/common/url_constants.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/test_navigation_observer.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/uninstall_reason.h" #include "extensions/common/extension.h" @@ -334,13 +335,12 @@ class BrowserTest : public ExtensionBrowserTest { // Returns the app extension aptly named "App Test". const Extension* GetExtension() { - const extensions::ExtensionSet* extensions = - extensions::ExtensionSystem::Get( - browser()->profile())->extension_service()->extensions(); - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - if ((*it)->name() == "App Test") - return it->get(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { + if (extension->name() == "App Test") + return extension.get(); } NOTREACHED(); return NULL; diff --git a/chrome/browser/ui/cocoa/fullscreen_exit_bubble_controller.mm b/chrome/browser/ui/cocoa/fullscreen_exit_bubble_controller.mm index 0b52383..a576002 100644 --- a/chrome/browser/ui/cocoa/fullscreen_exit_bubble_controller.mm +++ b/chrome/browser/ui/cocoa/fullscreen_exit_bubble_controller.mm @@ -20,7 +20,7 @@ #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" #include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" #include "chrome/grit/generated_resources.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #import "third_party/google_toolbox_for_mac/src/AppKit/GTMNSAnimation+Duration.h" #include "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h" #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h" @@ -258,10 +258,10 @@ const float kHideDuration = 0.7; - (NSString*)getLabelText { if (bubbleType_ == FEB_TYPE_NONE) return @""; - ExtensionService* extension_service = extensions::ExtensionSystem::Get( - browser_->profile())->extension_service(); - return SysUTF16ToNSString(fullscreen_bubble::GetLabelTextForType( - bubbleType_, url_, extension_service)); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser_->profile()); + return SysUTF16ToNSString( + fullscreen_bubble::GetLabelTextForType(bubbleType_, url_, registry)); } // This looks at the Main Menu and determines what the user has set as the diff --git a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble.cc b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble.cc index 18d1f11..ffd5d0a 100644 --- a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble.cc +++ b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble.cc @@ -11,7 +11,7 @@ #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" #include "chrome/grit/generated_resources.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/rect.h" #include "ui/strings/grit/ui_strings.h" @@ -132,8 +132,7 @@ void FullscreenExitBubble::Cancel() { base::string16 FullscreenExitBubble::GetCurrentMessageText() const { return fullscreen_bubble::GetLabelTextForType( bubble_type_, url_, - extensions::ExtensionSystem::Get( - browser_->profile())->extension_service()); + extensions::ExtensionRegistry::Get(browser_->profile())); } base::string16 FullscreenExitBubble::GetCurrentDenyButtonText() const { diff --git a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.cc b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.cc index 36c0949..0c8c076 100644 --- a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.cc +++ b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.cc @@ -5,9 +5,9 @@ #include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/common/url_constants.h" #include "chrome/grit/generated_resources.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -17,14 +17,11 @@ namespace fullscreen_bubble { base::string16 GetLabelTextForType(FullscreenExitBubbleType type, const GURL& url, - ExtensionService* extension_service) { + extensions::ExtensionRegistry* registry) { base::string16 host(base::UTF8ToUTF16(url.host())); - if (extension_service) { - const extensions::ExtensionSet* extensions = - extension_service->extensions(); - DCHECK(extensions); + if (registry) { const extensions::Extension* extension = - extensions->GetExtensionOrAppByURL(url); + registry->enabled_extensions().GetExtensionOrAppByURL(url); if (extension) { host = base::UTF8ToUTF16(extension->name()); } else if (url.SchemeIs(extensions::kExtensionScheme)) { diff --git a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h index 885cc4f..d36d122 100644 --- a/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h +++ b/chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h @@ -8,7 +8,9 @@ #include "base/strings/string16.h" #include "url/gurl.h" -class ExtensionService; +namespace extensions { +class ExtensionRegistry; +} // Describes the contents of the fullscreen exit bubble. // For example, if the user already agreed to fullscreen mode and the @@ -36,7 +38,7 @@ namespace fullscreen_bubble { base::string16 GetLabelTextForType(FullscreenExitBubbleType type, const GURL& url, - ExtensionService* extension_service); + extensions::ExtensionRegistry* registry); base::string16 GetDenyButtonTextForType(FullscreenExitBubbleType type); bool ShowButtonsForType(FullscreenExitBubbleType type); void PermissionRequestedByType(FullscreenExitBubbleType type, diff --git a/chrome/browser/ui/location_bar/origin_chip_info.cc b/chrome/browser/ui/location_bar/origin_chip_info.cc index 923ee68c..633b13d2 100644 --- a/chrome/browser/ui/location_bar/origin_chip_info.cc +++ b/chrome/browser/ui/location_bar/origin_chip_info.cc @@ -9,7 +9,6 @@ #include "base/prefs/pref_service.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/safe_browsing/client_side_detection_host.h" @@ -22,7 +21,7 @@ #include "chrome/grit/generated_resources.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/extension_icon_image.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/manifest_handlers/icons_handler.h" #include "grit/components_strings.h" @@ -123,8 +122,9 @@ bool OriginChipInfo::Update(const content::WebContents* web_contents, if (displayed_url_.SchemeIs(extensions::kExtensionScheme)) { const extensions::Extension* extension = - extensions::ExtensionSystem::Get(profile_)->extension_service()-> - extensions()->GetExtensionOrAppByURL(displayed_url_); + extensions::ExtensionRegistry::Get(profile_) + ->enabled_extensions() + .GetByID(displayed_url_.host()); if (extension) { icon_ = IDR_EXTENSIONS_FAVICON; @@ -197,10 +197,10 @@ base::string16 OriginChip::LabelFromURLForProfile(const GURL& provided_url, // For chrome-extension URLs, return the extension name. if (url.SchemeIs(extensions::kExtensionScheme)) { - ExtensionService* service = - extensions::ExtensionSystem::Get(profile)->extension_service(); const extensions::Extension* extension = - service->extensions()->GetExtensionOrAppByURL(url); + extensions::ExtensionRegistry::Get(profile) + ->enabled_extensions() + .GetByID(url.host()); return extension ? base::UTF8ToUTF16(extension->name()) : base::UTF8ToUTF16(url.host()); } diff --git a/chrome/browser/ui/media_utils.cc b/chrome/browser/ui/media_utils.cc index 52d4633..4520a19 100644 --- a/chrome/browser/ui/media_utils.cc +++ b/chrome/browser/ui/media_utils.cc @@ -9,8 +9,7 @@ #include "content/public/browser/web_contents.h" #if defined(ENABLE_EXTENSIONS) -#include "chrome/browser/extensions/extension_service.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #endif @@ -22,10 +21,9 @@ const extensions::Extension* GetExtensionForOrigin(Profile* profile, if (!security_origin.SchemeIs(extensions::kExtensionScheme)) return NULL; - ExtensionService* extensions_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); const extensions::Extension* extension = - extensions_service->extensions()->GetByID(security_origin.host()); + extensions::ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( + security_origin.host()); DCHECK(extension); return extension; } diff --git a/chrome/browser/ui/sync/profile_signin_confirmation_helper.cc b/chrome/browser/ui/sync/profile_signin_confirmation_helper.cc index 98d68a1..ef5fbb4 100644 --- a/chrome/browser/ui/sync/profile_signin_confirmation_helper.cc +++ b/chrome/browser/ui/sync/profile_signin_confirmation_helper.cc @@ -22,10 +22,9 @@ #include "ui/native_theme/native_theme.h" #if defined(ENABLE_EXTENSIONS) -#include "chrome/browser/extensions/extension_service.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/sync_helper.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -204,21 +203,19 @@ bool HasBeenShutdown(Profile* profile) { bool HasSyncedExtensions(Profile* profile) { #if defined(ENABLE_EXTENSIONS) - extensions::ExtensionSystem* system = - extensions::ExtensionSystem::Get(profile); - if (system && system->extension_service()) { - const extensions::ExtensionSet* extensions = - system->extension_service()->extensions(); - for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); - iter != extensions->end(); ++iter) { + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile); + if (registry) { + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { // The webstore is synced so that it stays put on the new tab // page, but since it's installed by default we don't want to // consider it when determining if the profile is dirty. - if (extensions::sync_helper::IsSyncable(iter->get()) && - (*iter)->id() != extensions::kWebStoreAppId && - (*iter)->id() != extension_misc::kChromeAppId) { + if (extensions::sync_helper::IsSyncable(extension.get()) && + extension->id() != extensions::kWebStoreAppId && + extension->id() != extension_misc::kChromeAppId) { DVLOG(1) << "ProfileSigninConfirmationHelper: " - << "profile contains a synced extension: " << (*iter)->id(); + << "profile contains a synced extension: " << extension->id(); return true; } } diff --git a/chrome/browser/ui/views/location_bar/origin_chip_view.cc b/chrome/browser/ui/views/location_bar/origin_chip_view.cc index 5ee0eed..1100065 100644 --- a/chrome/browser/ui/views/location_bar/origin_chip_view.cc +++ b/chrome/browser/ui/views/location_bar/origin_chip_view.cc @@ -9,7 +9,6 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/favicon/favicon_tab_helper.h" #include "chrome/browser/profiles/profile.h" @@ -28,7 +27,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/common/url_constants.h" #include "extensions/browser/extension_icon_image.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/manifest_handlers/icons_handler.h" #include "grit/theme_resources.h" @@ -127,9 +126,9 @@ const int kEVImages[3][9] = { const extensions::Extension* GetExtension(const GURL& url, Profile* profile) { if (!url.SchemeIs(extensions::kExtensionScheme)) return NULL; - ExtensionService* service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - return service->extensions()->GetExtensionOrAppByURL(url); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile); + return registry->enabled_extensions().GetByID(url.host()); } } // namespace diff --git a/chrome/browser/ui/webui/extensions/extension_info_ui.cc b/chrome/browser/ui/webui/extensions/extension_info_ui.cc index 439d3f6..5e1080f 100644 --- a/chrome/browser/ui/webui/extensions/extension_info_ui.cc +++ b/chrome/browser/ui/webui/extensions/extension_info_ui.cc @@ -8,7 +8,6 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/extensions/extension_basic_info.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" @@ -18,7 +17,7 @@ #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "extensions/browser/extension_prefs.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/extension_icon_set.h" #include "grit/browser_resources.h" @@ -57,10 +56,9 @@ GURL ExtensionInfoUI::GetURL(const std::string& extension_id) { void ExtensionInfoUI::AddExtensionDataToSource( const std::string& extension_id) { Profile* profile = Profile::FromWebUI(web_ui()); - ExtensionService* extension_service = - ExtensionSystem::Get(profile)->extension_service(); const Extension* extension = - extension_service->extensions()->GetByID(extension_id); + ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( + extension_id); if (!extension) return; diff --git a/chrome/browser/ui/webui/extensions/extension_settings_browsertest.cc b/chrome/browser/ui/webui/extensions/extension_settings_browsertest.cc index 3327752..4bfe6e2 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_browsertest.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_browsertest.cc @@ -24,6 +24,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/common/extension_set.h" @@ -76,8 +77,10 @@ const Extension* ExtensionSettingsUIBrowserTest::InstallExtension( Profile* profile = this->GetProfile(); ExtensionService* service = extensions::ExtensionSystem::Get(profile)->extension_service(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(profile); service->set_show_extensions_prompts(false); - size_t num_before = service->extensions()->size(); + size_t num_before = registry->enabled_extensions().size(); { scoped_ptr<ExtensionInstallPrompt> install_ui; install_ui.reset(new MockAutoConfirmExtensionInstallPrompt( @@ -106,16 +109,15 @@ const Extension* ExtensionSettingsUIBrowserTest::InstallExtension( observer_->Wait(); } - size_t num_after = service->extensions()->size(); + size_t num_after = registry->enabled_extensions().size(); if (num_before + 1 != num_after) { VLOG(1) << "Num extensions before: " << base::IntToString(num_before) << " num after: " << base::IntToString(num_after) << " Installed extensions follow:"; - for (extensions::ExtensionSet::const_iterator it = - service->extensions()->begin(); - it != service->extensions()->end(); ++it) - VLOG(1) << " " << (*it)->id(); + for (const scoped_refptr<const Extension>& extension : + registry->enabled_extensions()) + VLOG(1) << " " << extension->id(); VLOG(1) << "Errors follow:"; const std::vector<base::string16>* errors = diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc index d00eaf3..1d4b6f7 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc @@ -864,12 +864,13 @@ void ExtensionSettingsHandler::AppInfoDialogClosed() { } void ExtensionSettingsHandler::ReloadUnpackedExtensions() { - const ExtensionSet* extensions = extension_service_->extensions(); + ExtensionRegistry* registry = + ExtensionRegistry::Get(extension_service_->profile()); std::vector<const Extension*> unpacked_extensions; - for (ExtensionSet::const_iterator extension = extensions->begin(); - extension != extensions->end(); ++extension) { - if (Manifest::IsUnpackedLocation((*extension)->location())) - unpacked_extensions.push_back(extension->get()); + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { + if (Manifest::IsUnpackedLocation(extension->location())) + unpacked_extensions.push_back(extension.get()); } for (std::vector<const Extension*>::iterator iter = @@ -998,10 +999,11 @@ void ExtensionSettingsHandler::HandleInspectMessage( if (render_process_id == -1) { // This message is for a lazy background page. Start the page if necessary. + Profile* profile = Profile::FromWebUI(web_ui()); const Extension* extension = - extension_service_->extensions()->GetByID(extension_id); + ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( + extension_id); DCHECK(extension); - Profile* profile = Profile::FromWebUI(web_ui()); if (incognito) profile = profile->GetOffTheRecordProfile(); devtools_util::InspectBackgroundPage(extension, profile); diff --git a/chrome/browser/ui/webui/identity_internals_ui.cc b/chrome/browser/ui/webui/identity_internals_ui.cc index c536177..becbe8f 100644 --- a/chrome/browser/ui/webui/identity_internals_ui.cc +++ b/chrome/browser/ui/webui/identity_internals_ui.cc @@ -12,7 +12,6 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/extensions/api/identity/identity_api.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/url_constants.h" #include "chrome/grit/generated_resources.h" @@ -20,7 +19,7 @@ #include "content/public/browser/web_ui_controller.h" #include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_message_handler.h" -#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_registry.h" #include "google_apis/gaia/gaia_auth_fetcher.h" #include "google_apis/gaia/gaia_constants.h" #include "grit/browser_resources.h" @@ -161,10 +160,10 @@ void IdentityInternalsUIMessageHandler::OnTokenRevokerDone( const std::string IdentityInternalsUIMessageHandler::GetExtensionName( const extensions::ExtensionTokenKey& token_cache_key) { - ExtensionService* extension_service = extensions::ExtensionSystem::Get( - Profile::FromWebUI(web_ui()))->extension_service(); + const extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(Profile::FromWebUI(web_ui())); const extensions::Extension* extension = - extension_service->extensions()->GetByID(token_cache_key.extension_id); + registry->enabled_extensions().GetByID(token_cache_key.extension_id); if (!extension) return std::string(); return extension->name(); diff --git a/chrome/browser/ui/webui/options/website_settings_handler.cc b/chrome/browser/ui/webui/options/website_settings_handler.cc index 3373be7..dae5467 100644 --- a/chrome/browser/ui/webui/options/website_settings_handler.cc +++ b/chrome/browser/ui/webui/options/website_settings_handler.cc @@ -4,7 +4,6 @@ #include "chrome/browser/ui/webui/options/website_settings_handler.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_iterator.h" @@ -21,7 +20,6 @@ #include "content/public/browser/web_ui.h" #include "extensions/browser/app_window/app_window_registry.h" #include "extensions/browser/extension_registry.h" -#include "extensions/browser/extension_system.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "ui/base/l10n/l10n_util.h" @@ -756,12 +754,10 @@ void WebsiteSettingsHandler::DeleteLocalStorage(const GURL& site_url) { const std::string& WebsiteSettingsHandler::GetReadableName( const GURL& site_url) { if (site_url.SchemeIs(extensions::kExtensionScheme)) { - Profile* profile = GetProfile(); - ExtensionService* extension_service = - extensions::ExtensionSystem::Get(profile)->extension_service(); - + const extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(GetProfile()); const extensions::Extension* extension = - extension_service->extensions()->GetExtensionOrAppByURL(site_url); + registry->enabled_extensions().GetByID(site_url.host()); // If extension is NULL, it was removed and we cannot look up its name. if (!extension) return site_url.spec(); diff --git a/chrome/browser/ui/webui/policy_ui.cc b/chrome/browser/ui/webui/policy_ui.cc index 726cb0e..773f23b 100644 --- a/chrome/browser/ui/webui/policy_ui.cc +++ b/chrome/browser/ui/webui/policy_ui.cc @@ -67,9 +67,8 @@ #include "content/public/browser/web_contents.h" #endif -#if !defined(OS_ANDROID) && !defined(OS_IOS) -#include "chrome/browser/extensions/extension_service.h" -#include "extensions/browser/extension_system.h" +#if defined(ENABLE_EXTENSIONS) +#include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" #include "extensions/common/manifest.h" @@ -633,18 +632,12 @@ void PolicyUIHandler::SendPolicyNames() const { } names.Set("chromePolicyNames", chrome_policy_names); -#if !defined(OS_ANDROID) && !defined(OS_IOS) +#if defined(ENABLE_EXTENSIONS) // Add extension policy names. base::DictionaryValue* extension_policy_names = new base::DictionaryValue; - extensions::ExtensionSystem* extension_system = - extensions::ExtensionSystem::Get(profile); - const extensions::ExtensionSet* extensions = - extension_system->extension_service()->extensions(); - - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - const extensions::Extension* extension = it->get(); + for (const scoped_refptr<const extensions::Extension>& extension : + extensions::ExtensionRegistry::Get(profile)->enabled_extensions()) { // Skip this extension if it's not an enterprise extension. if (!extension->manifest()->HasPath( extensions::manifest_keys::kStorageManagedSchema)) @@ -667,7 +660,7 @@ void PolicyUIHandler::SendPolicyNames() const { extension_policy_names->Set(extension->id(), extension_value); } names.Set("extensionPolicyNames", extension_policy_names); -#endif +#endif // defined(ENABLE_EXTENSIONS) web_ui()->CallJavascriptFunction("policy.Page.setPolicyNames", names); } @@ -680,17 +673,14 @@ void PolicyUIHandler::SendPolicyValues() const { GetChromePolicyValues(chrome_policies); all_policies.Set("chromePolicies", chrome_policies); -#if !defined(OS_ANDROID) && !defined(OS_IOS) +#if defined(ENABLE_EXTENSIONS) // Add extension policy values. - extensions::ExtensionSystem* extension_system = - extensions::ExtensionSystem::Get(Profile::FromWebUI(web_ui())); - const extensions::ExtensionSet* extensions = - extension_system->extension_service()->extensions(); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(Profile::FromWebUI(web_ui())); base::DictionaryValue* extension_values = new base::DictionaryValue; - for (extensions::ExtensionSet::const_iterator it = extensions->begin(); - it != extensions->end(); ++it) { - const extensions::Extension* extension = it->get(); + for (const scoped_refptr<const extensions::Extension>& extension : + registry->enabled_extensions()) { // Skip this extension if it's not an enterprise extension. if (!extension->manifest()->HasPath( extensions::manifest_keys::kStorageManagedSchema)) diff --git a/chrome/test/remoting/remote_desktop_browsertest.cc b/chrome/test/remoting/remote_desktop_browsertest.cc index 82bf6e7..e03736e 100644 --- a/chrome/test/remoting/remote_desktop_browsertest.cc +++ b/chrome/test/remoting/remote_desktop_browsertest.cc @@ -18,6 +18,7 @@ #include "content/public/browser/native_web_keyboard_event.h" #include "content/public/browser/render_view_host.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" @@ -134,34 +135,31 @@ void RemoteDesktopBrowserTest::UninstallChromotingApp() { } void RemoteDesktopBrowserTest::VerifyChromotingLoaded(bool expected) { - const extensions::ExtensionSet* extensions = - extension_service()->extensions(); - scoped_refptr<const extensions::Extension> extension; bool installed = false; - for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); - iter != extensions->end(); ++iter) { - extension = *iter; + for (const scoped_refptr<const extensions::Extension>& extension : + extensions::ExtensionRegistry::Get(profile())->enabled_extensions()) { // Is there a better way to recognize the chromoting extension // than name comparison? if (extension->name() == extension_name_) { + if (extension_) { + EXPECT_EQ(extension.get(), extension_); + } else { + extension_ = extension.get(); + } + installed = true; break; } } if (installed) { - if (extension_) - EXPECT_EQ(extension.get(), extension_); - else - extension_ = extension.get(); - // Either a V1 (TYPE_LEGACY_PACKAGED_APP) or a V2 (TYPE_PLATFORM_APP ) app. - extensions::Manifest::Type type = extension->GetType(); + extensions::Manifest::Type type = extension_->GetType(); EXPECT_TRUE(type == extensions::Manifest::TYPE_PLATFORM_APP || type == extensions::Manifest::TYPE_LEGACY_PACKAGED_APP); - EXPECT_TRUE(extension->ShouldDisplayInAppLauncher()); + EXPECT_TRUE(extension_->ShouldDisplayInAppLauncher()); } ASSERT_EQ(installed, expected); |