| Index: chrome/browser/extensions/component_loader.cc
|
| diff --git a/chrome/browser/extensions/component_loader.cc b/chrome/browser/extensions/component_loader.cc
|
| index 79ab12697796cc8b11554d7e1db8a76e746291cc..282d618f8cb62c5f1b1c03f735309684c829aa58 100644
|
| --- a/chrome/browser/extensions/component_loader.cc
|
| +++ b/chrome/browser/extensions/component_loader.cc
|
| @@ -44,6 +44,8 @@ namespace extensions {
|
|
|
| namespace {
|
|
|
| +static bool enable_background_extensions_during_testing = false;
|
| +
|
| std::string GenerateId(const DictionaryValue* manifest, const FilePath& path) {
|
| std::string raw_key;
|
| std::string id_input;
|
| @@ -197,7 +199,7 @@ const Extension* ComponentLoader::Load(const ComponentExtensionInfo& info) {
|
| return NULL;
|
| }
|
| CHECK_EQ(info.extension_id, extension->id()) << extension->name();
|
| - extension_service_->AddExtension(extension);
|
| + extension_service_->AddComponentExtension(extension);
|
| return extension;
|
| }
|
|
|
| @@ -319,38 +321,25 @@ void ComponentLoader::AddScriptBubble() {
|
| }
|
| }
|
|
|
| +// static
|
| +void ComponentLoader::EnableBackgroundExtensionsForTesting() {
|
| + enable_background_extensions_during_testing = true;
|
| +}
|
| +
|
| void ComponentLoader::AddDefaultComponentExtensions() {
|
| + // Do not add component extensions that have background pages here -- add them
|
| + // to AddDefaultComponentExtensionsWithBackgroundPages.
|
| +
|
| #if defined(OS_CHROMEOS)
|
| - if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession))
|
| + const CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + if (!command_line->HasSwitch(switches::kGuestSession))
|
| Add(IDR_BOOKMARKS_MANIFEST,
|
| FilePath(FILE_PATH_LITERAL("bookmark_manager")));
|
| #else
|
| Add(IDR_BOOKMARKS_MANIFEST, FilePath(FILE_PATH_LITERAL("bookmark_manager")));
|
| #endif
|
|
|
| -// Apps Debugger
|
| -if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kAppsDebugger)) {
|
| - Add(IDR_APPS_DEBUGGER_MANIFEST,
|
| - FilePath(FILE_PATH_LITERAL("apps_debugger")));
|
| -}
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - Add(IDR_WALLPAPERMANAGER_MANIFEST,
|
| - FilePath(FILE_PATH_LITERAL("chromeos/wallpaper_manager")));
|
| -#endif
|
| -
|
| -#if defined(FILE_MANAGER_EXTENSION)
|
| - AddFileManagerExtension();
|
| -#endif
|
| -
|
| #if defined(OS_CHROMEOS)
|
| - const CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| - if (command_line->HasSwitch(switches::kEnableBackgroundLoader)) {
|
| - Add(IDR_BACKLOADER_MANIFEST,
|
| - FilePath(FILE_PATH_LITERAL("backloader")));
|
| - }
|
| -
|
| Add(IDR_MOBILE_MANIFEST,
|
| FilePath(FILE_PATH_LITERAL("/usr/share/chromeos-assets/mobile")));
|
|
|
| @@ -378,23 +367,11 @@ if (CommandLine::ForCurrentProcess()->HasSwitch(
|
|
|
| Add(IDR_WEBSTORE_MANIFEST, FilePath(FILE_PATH_LITERAL("web_store")));
|
|
|
| -#if defined(ENABLE_SETTINGS_APP)
|
| - Add(IDR_SETTINGS_APP_MANIFEST, FilePath(FILE_PATH_LITERAL("settings_app")));
|
| -#endif
|
| -
|
| #if !defined(OS_CHROMEOS)
|
| // Cloud Print component app. Not required on Chrome OS.
|
| Add(IDR_CLOUDPRINT_MANIFEST, FilePath(FILE_PATH_LITERAL("cloud_print")));
|
| #endif
|
|
|
| -#if defined(OS_CHROMEOS)
|
| - // Load ChromeVox extension now if spoken feedback is enabled.
|
| - if (local_state_->GetBoolean(prefs::kSpokenFeedbackEnabled)) {
|
| - FilePath path = FilePath(extension_misc::kChromeVoxExtensionPath);
|
| - Add(IDR_CHROMEVOX_MANIFEST, path);
|
| - }
|
| -#endif
|
| -
|
| // If a URL for the enterprise webstore has been specified, load the
|
| // component extension. This extension might also be loaded later, because
|
| // it is specified by policy, and on ChromeOS policies are loaded after
|
| @@ -406,6 +383,47 @@ if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| #endif
|
|
|
| AddScriptBubble();
|
| + AddDefaultComponentExtensionsWithBackgroundPages();
|
| +}
|
| +
|
| +void ComponentLoader::AddDefaultComponentExtensionsWithBackgroundPages() {
|
| + const CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| +
|
| + // Component extensions with background pages are not enabled during tests
|
| + // because they generate a lot of background behavior that can interfere.
|
| + if (!enable_background_extensions_during_testing &&
|
| + command_line->HasSwitch(switches::kTestType)) {
|
| + return;
|
| + }
|
| +
|
| + // Apps Debugger
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kAppsDebugger)) {
|
| + Add(IDR_APPS_DEBUGGER_MANIFEST,
|
| + FilePath(FILE_PATH_LITERAL("apps_debugger")));
|
| + }
|
| +
|
| + AddFileManagerExtension();
|
| +
|
| +#if defined(OS_CHROMEOS)
|
| + Add(IDR_WALLPAPERMANAGER_MANIFEST,
|
| + FilePath(FILE_PATH_LITERAL("chromeos/wallpaper_manager")));
|
| +
|
| + if (command_line->HasSwitch(switches::kEnableBackgroundLoader)) {
|
| + Add(IDR_BACKLOADER_MANIFEST,
|
| + FilePath(FILE_PATH_LITERAL("backloader")));
|
| + }
|
| +
|
| + // Load ChromeVox extension now if spoken feedback is enabled.
|
| + if (local_state_->GetBoolean(prefs::kSpokenFeedbackEnabled)) {
|
| + FilePath path = FilePath(extension_misc::kChromeVoxExtensionPath);
|
| + Add(IDR_CHROMEVOX_MANIFEST, path);
|
| + }
|
| +#endif
|
| +
|
| +#if defined(ENABLE_SETTINGS_APP)
|
| + Add(IDR_SETTINGS_APP_MANIFEST, FilePath(FILE_PATH_LITERAL("settings_app")));
|
| +#endif
|
| }
|
|
|
| // static
|
|
|