OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_service.h" | 5 #include "chrome/browser/extensions/extension_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 #include "chrome/common/extensions/extension_messages.h" | 84 #include "chrome/common/extensions/extension_messages.h" |
85 #include "chrome/common/extensions/extension_resource.h" | 85 #include "chrome/common/extensions/extension_resource.h" |
86 #include "chrome/common/pref_names.h" | 86 #include "chrome/common/pref_names.h" |
87 #include "chrome/common/url_constants.h" | 87 #include "chrome/common/url_constants.h" |
88 #include "content/browser/browser_thread.h" | 88 #include "content/browser/browser_thread.h" |
89 #include "content/browser/debugger/devtools_manager.h" | 89 #include "content/browser/debugger/devtools_manager.h" |
90 #include "content/browser/plugin_process_host.h" | 90 #include "content/browser/plugin_process_host.h" |
91 #include "content/browser/plugin_service.h" | 91 #include "content/browser/plugin_service.h" |
92 #include "content/browser/renderer_host/render_process_host.h" | 92 #include "content/browser/renderer_host/render_process_host.h" |
93 #include "content/browser/user_metrics.h" | 93 #include "content/browser/user_metrics.h" |
94 #include "content/common/notification_service.h" | 94 #include "content/public/browser/notification_service.h" |
95 #include "content/common/pepper_plugin_registry.h" | 95 #include "content/common/pepper_plugin_registry.h" |
96 #include "content/public/browser/notification_types.h" | 96 #include "content/public/browser/notification_types.h" |
97 #include "googleurl/src/gurl.h" | 97 #include "googleurl/src/gurl.h" |
98 #include "net/base/registry_controlled_domain.h" | 98 #include "net/base/registry_controlled_domain.h" |
99 #include "webkit/database/database_tracker.h" | 99 #include "webkit/database/database_tracker.h" |
100 #include "webkit/database/database_util.h" | 100 #include "webkit/database/database_util.h" |
101 #include "webkit/plugins/npapi/plugin_list.h" | 101 #include "webkit/plugins/npapi/plugin_list.h" |
102 | 102 |
103 #if defined(OS_CHROMEOS) | 103 #if defined(OS_CHROMEOS) |
104 #include "chrome/browser/chromeos/cros/cros_library.h" | 104 #include "chrome/browser/chromeos/cros/cros_library.h" |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 609 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
610 | 610 |
611 // Figure out if extension installation should be enabled. | 611 // Figure out if extension installation should be enabled. |
612 if (command_line->HasSwitch(switches::kDisableExtensions)) { | 612 if (command_line->HasSwitch(switches::kDisableExtensions)) { |
613 extensions_enabled_ = false; | 613 extensions_enabled_ = false; |
614 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) { | 614 } else if (profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) { |
615 extensions_enabled_ = false; | 615 extensions_enabled_ = false; |
616 } | 616 } |
617 | 617 |
618 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, | 618 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, |
619 NotificationService::AllBrowserContextsAndSources()); | 619 content::NotificationService::AllBrowserContextsAndSources()); |
620 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED, | 620 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED, |
621 NotificationService::AllBrowserContextsAndSources()); | 621 content::NotificationService::AllBrowserContextsAndSources()); |
622 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 622 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, |
623 NotificationService::AllBrowserContextsAndSources()); | 623 content::NotificationService::AllBrowserContextsAndSources()); |
624 pref_change_registrar_.Init(profile->GetPrefs()); | 624 pref_change_registrar_.Init(profile->GetPrefs()); |
625 pref_change_registrar_.Add(prefs::kExtensionInstallAllowList, this); | 625 pref_change_registrar_.Add(prefs::kExtensionInstallAllowList, this); |
626 pref_change_registrar_.Add(prefs::kExtensionInstallDenyList, this); | 626 pref_change_registrar_.Add(prefs::kExtensionInstallDenyList, this); |
627 | 627 |
628 // Set up the ExtensionUpdater | 628 // Set up the ExtensionUpdater |
629 if (autoupdate_enabled) { | 629 if (autoupdate_enabled) { |
630 int update_frequency = kDefaultUpdateFrequencySeconds; | 630 int update_frequency = kDefaultUpdateFrequencySeconds; |
631 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) { | 631 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) { |
632 base::StringToInt(command_line->GetSwitchValueASCII( | 632 base::StringToInt(command_line->GetSwitchValueASCII( |
633 switches::kExtensionsUpdateFrequency), | 633 switches::kExtensionsUpdateFrequency), |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 scoped_refptr<const Extension> extension(GetInstalledExtension(extension_id)); | 884 scoped_refptr<const Extension> extension(GetInstalledExtension(extension_id)); |
885 | 885 |
886 // Callers should not send us nonexistent extensions. | 886 // Callers should not send us nonexistent extensions. |
887 CHECK(extension); | 887 CHECK(extension); |
888 | 888 |
889 // Policy change which triggers an uninstall will always set | 889 // Policy change which triggers an uninstall will always set |
890 // |external_uninstall| to true so this is the only way to uninstall | 890 // |external_uninstall| to true so this is the only way to uninstall |
891 // managed extensions. | 891 // managed extensions. |
892 if (!Extension::UserMayDisable(extension->location()) && | 892 if (!Extension::UserMayDisable(extension->location()) && |
893 !external_uninstall) { | 893 !external_uninstall) { |
894 NotificationService::current()->Notify( | 894 content::NotificationService::current()->Notify( |
895 chrome::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED, | 895 chrome::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED, |
896 content::Source<Profile>(profile_), | 896 content::Source<Profile>(profile_), |
897 content::Details<const Extension>(extension)); | 897 content::Details<const Extension>(extension)); |
898 if (error != NULL) { | 898 if (error != NULL) { |
899 *error = errors::kCannotUninstallManagedExtension; | 899 *error = errors::kCannotUninstallManagedExtension; |
900 } | 900 } |
901 return false; | 901 return false; |
902 } | 902 } |
903 | 903 |
904 // Extract the data we need for sync now, but don't actually sync until we've | 904 // Extract the data we need for sync now, but don't actually sync until we've |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 IsStorageProtected(launch_web_url_origin)) { | 952 IsStorageProtected(launch_web_url_origin)) { |
953 ExtensionDataDeleter::StartDeleting( | 953 ExtensionDataDeleter::StartDeleting( |
954 profile_, extension_id, launch_web_url_origin, is_storage_isolated); | 954 profile_, extension_id, launch_web_url_origin, is_storage_isolated); |
955 } | 955 } |
956 ExtensionDataDeleter::StartDeleting( | 956 ExtensionDataDeleter::StartDeleting( |
957 profile_, extension_id, extension->url(), is_storage_isolated); | 957 profile_, extension_id, extension->url(), is_storage_isolated); |
958 | 958 |
959 UntrackTerminatedExtension(extension_id); | 959 UntrackTerminatedExtension(extension_id); |
960 | 960 |
961 // Notify interested parties that we've uninstalled this extension. | 961 // Notify interested parties that we've uninstalled this extension. |
962 NotificationService::current()->Notify( | 962 content::NotificationService::current()->Notify( |
963 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 963 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
964 content::Source<Profile>(profile_), | 964 content::Source<Profile>(profile_), |
965 content::Details<const std::string>(&extension_id)); | 965 content::Details<const std::string>(&extension_id)); |
966 | 966 |
967 if (sync_bundle && sync_bundle->HasExtensionId(extension_id)) { | 967 if (sync_bundle && sync_bundle->HasExtensionId(extension_id)) { |
968 sync_bundle->sync_processor->ProcessSyncChanges( | 968 sync_bundle->sync_processor->ProcessSyncChanges( |
969 FROM_HERE, SyncChangeList(1, sync_change)); | 969 FROM_HERE, SyncChangeList(1, sync_change)); |
970 sync_bundle->synced_extensions.erase(extension_id); | 970 sync_bundle->synced_extensions.erase(extension_id); |
971 } | 971 } |
972 | 972 |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1466 // The ChromeURLRequestContexts need to be first to know that the extension | 1466 // The ChromeURLRequestContexts need to be first to know that the extension |
1467 // was loaded, otherwise a race can arise where a renderer that is created | 1467 // was loaded, otherwise a race can arise where a renderer that is created |
1468 // for the extension may try to load an extension URL with an extension id | 1468 // for the extension may try to load an extension URL with an extension id |
1469 // that the request context doesn't yet know about. The profile is responsible | 1469 // that the request context doesn't yet know about. The profile is responsible |
1470 // for ensuring its URLRequestContexts appropriately discover the loaded | 1470 // for ensuring its URLRequestContexts appropriately discover the loaded |
1471 // extension. | 1471 // extension. |
1472 profile_->RegisterExtensionWithRequestContexts(extension); | 1472 profile_->RegisterExtensionWithRequestContexts(extension); |
1473 | 1473 |
1474 // Tell subsystems that use the EXTENSION_LOADED notification about the new | 1474 // Tell subsystems that use the EXTENSION_LOADED notification about the new |
1475 // extension. | 1475 // extension. |
1476 NotificationService::current()->Notify( | 1476 content::NotificationService::current()->Notify( |
1477 chrome::NOTIFICATION_EXTENSION_LOADED, | 1477 chrome::NOTIFICATION_EXTENSION_LOADED, |
1478 content::Source<Profile>(profile_), | 1478 content::Source<Profile>(profile_), |
1479 content::Details<const Extension>(extension)); | 1479 content::Details<const Extension>(extension)); |
1480 | 1480 |
1481 // Tell renderers about the new extension. | 1481 // Tell renderers about the new extension. |
1482 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); | 1482 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); |
1483 !i.IsAtEnd(); i.Advance()) { | 1483 !i.IsAtEnd(); i.Advance()) { |
1484 RenderProcessHost* host = i.GetCurrentValue(); | 1484 RenderProcessHost* host = i.GetCurrentValue(); |
1485 Profile* host_profile = | 1485 Profile* host_profile = |
1486 Profile::FromBrowserContext(host->browser_context()); | 1486 Profile::FromBrowserContext(host->browser_context()); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1580 } | 1580 } |
1581 #endif | 1581 #endif |
1582 } | 1582 } |
1583 #endif | 1583 #endif |
1584 } | 1584 } |
1585 | 1585 |
1586 void ExtensionService::NotifyExtensionUnloaded( | 1586 void ExtensionService::NotifyExtensionUnloaded( |
1587 const Extension* extension, | 1587 const Extension* extension, |
1588 extension_misc::UnloadedExtensionReason reason) { | 1588 extension_misc::UnloadedExtensionReason reason) { |
1589 UnloadedExtensionInfo details(extension, reason); | 1589 UnloadedExtensionInfo details(extension, reason); |
1590 NotificationService::current()->Notify( | 1590 content::NotificationService::current()->Notify( |
1591 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 1591 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
1592 content::Source<Profile>(profile_), | 1592 content::Source<Profile>(profile_), |
1593 content::Details<UnloadedExtensionInfo>(&details)); | 1593 content::Details<UnloadedExtensionInfo>(&details)); |
1594 | 1594 |
1595 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); | 1595 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); |
1596 !i.IsAtEnd(); i.Advance()) { | 1596 !i.IsAtEnd(); i.Advance()) { |
1597 RenderProcessHost* host = i.GetCurrentValue(); | 1597 RenderProcessHost* host = i.GetCurrentValue(); |
1598 Profile* host_profile = | 1598 Profile* host_profile = |
1599 Profile::FromBrowserContext(host->browser_context()); | 1599 Profile::FromBrowserContext(host->browser_context()); |
1600 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile()) | 1600 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile()) |
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2270 // Clean up runtime data. | 2270 // Clean up runtime data. |
2271 extension_runtime_data_.erase(extension_id); | 2271 extension_runtime_data_.erase(extension_id); |
2272 | 2272 |
2273 ExtensionList::iterator iter = std::find(disabled_extensions_.begin(), | 2273 ExtensionList::iterator iter = std::find(disabled_extensions_.begin(), |
2274 disabled_extensions_.end(), | 2274 disabled_extensions_.end(), |
2275 extension.get()); | 2275 extension.get()); |
2276 if (iter != disabled_extensions_.end()) { | 2276 if (iter != disabled_extensions_.end()) { |
2277 UnloadedExtensionInfo details(extension, reason); | 2277 UnloadedExtensionInfo details(extension, reason); |
2278 details.already_disabled = true; | 2278 details.already_disabled = true; |
2279 disabled_extensions_.erase(iter); | 2279 disabled_extensions_.erase(iter); |
2280 NotificationService::current()->Notify( | 2280 content::NotificationService::current()->Notify( |
2281 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 2281 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
2282 content::Source<Profile>(profile_), | 2282 content::Source<Profile>(profile_), |
2283 content::Details<UnloadedExtensionInfo>(&details)); | 2283 content::Details<UnloadedExtensionInfo>(&details)); |
2284 // Make sure the profile cleans up its RequestContexts when an already | 2284 // Make sure the profile cleans up its RequestContexts when an already |
2285 // disabled extension is unloaded (since they are also tracking the disabled | 2285 // disabled extension is unloaded (since they are also tracking the disabled |
2286 // extensions). | 2286 // extensions). |
2287 profile_->UnregisterExtensionWithRequestContexts(extension_id, reason); | 2287 profile_->UnregisterExtensionWithRequestContexts(extension_id, reason); |
2288 return; | 2288 return; |
2289 } | 2289 } |
2290 | 2290 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2342 ThemeServiceFactory::GetForProfile(profile_)->RemoveUnusedThemes(); | 2342 ThemeServiceFactory::GetForProfile(profile_)->RemoveUnusedThemes(); |
2343 } | 2343 } |
2344 } | 2344 } |
2345 | 2345 |
2346 void ExtensionService::OnLoadedInstalledExtensions() { | 2346 void ExtensionService::OnLoadedInstalledExtensions() { |
2347 if (updater_.get()) { | 2347 if (updater_.get()) { |
2348 updater_->Start(); | 2348 updater_->Start(); |
2349 } | 2349 } |
2350 | 2350 |
2351 ready_ = true; | 2351 ready_ = true; |
2352 NotificationService::current()->Notify( | 2352 content::NotificationService::current()->Notify( |
2353 chrome::NOTIFICATION_EXTENSIONS_READY, | 2353 chrome::NOTIFICATION_EXTENSIONS_READY, |
2354 content::Source<Profile>(profile_), | 2354 content::Source<Profile>(profile_), |
2355 NotificationService::NoDetails()); | 2355 content::NotificationService::NoDetails()); |
2356 } | 2356 } |
2357 | 2357 |
2358 void ExtensionService::AddExtension(const Extension* extension) { | 2358 void ExtensionService::AddExtension(const Extension* extension) { |
2359 // Ensure extension is deleted unless we transfer ownership. | 2359 // Ensure extension is deleted unless we transfer ownership. |
2360 scoped_refptr<const Extension> scoped_extension(extension); | 2360 scoped_refptr<const Extension> scoped_extension(extension); |
2361 | 2361 |
2362 // TODO(jstritar): We may be able to get rid of this branch by overriding the | 2362 // TODO(jstritar): We may be able to get rid of this branch by overriding the |
2363 // default extension state to DISABLED when the --disable-extensions flag | 2363 // default extension state to DISABLED when the --disable-extensions flag |
2364 // is set (http://crbug.com/29067). | 2364 // is set (http://crbug.com/29067). |
2365 if (!extensions_enabled() && | 2365 if (!extensions_enabled() && |
(...skipping 17 matching lines...) Expand all Loading... |
2383 // Check if the extension's privileges have changed and disable the | 2383 // Check if the extension's privileges have changed and disable the |
2384 // extension if necessary. | 2384 // extension if necessary. |
2385 InitializePermissions(extension); | 2385 InitializePermissions(extension); |
2386 | 2386 |
2387 bool disabled = extension_prefs_->IsExtensionDisabled(extension->id()); | 2387 bool disabled = extension_prefs_->IsExtensionDisabled(extension->id()); |
2388 if (disabled) { | 2388 if (disabled) { |
2389 disabled_extensions_.push_back(scoped_extension); | 2389 disabled_extensions_.push_back(scoped_extension); |
2390 // TODO(aa): This seems dodgy. It seems that AddExtension() could get called | 2390 // TODO(aa): This seems dodgy. It seems that AddExtension() could get called |
2391 // with a disabled extension for other reasons other than that an update was | 2391 // with a disabled extension for other reasons other than that an update was |
2392 // disabled. | 2392 // disabled. |
2393 NotificationService::current()->Notify( | 2393 content::NotificationService::current()->Notify( |
2394 chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED, | 2394 chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED, |
2395 content::Source<Profile>(profile_), | 2395 content::Source<Profile>(profile_), |
2396 content::Details<const Extension>(extension)); | 2396 content::Details<const Extension>(extension)); |
2397 SyncExtensionChangeIfNeeded(*extension); | 2397 SyncExtensionChangeIfNeeded(*extension); |
2398 return; | 2398 return; |
2399 } | 2399 } |
2400 | 2400 |
2401 extensions_.push_back(scoped_extension); | 2401 extensions_.push_back(scoped_extension); |
2402 SyncExtensionChangeIfNeeded(*extension); | 2402 SyncExtensionChangeIfNeeded(*extension); |
2403 NotifyExtensionLoaded(extension); | 2403 NotifyExtensionLoaded(extension); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2551 if (pending_extension_manager()->GetById(id, &pending_extension_info)) { | 2551 if (pending_extension_manager()->GetById(id, &pending_extension_info)) { |
2552 pending_extension_manager()->Remove(id); | 2552 pending_extension_manager()->Remove(id); |
2553 | 2553 |
2554 if (!pending_extension_info.ShouldAllowInstall(*extension)) { | 2554 if (!pending_extension_info.ShouldAllowInstall(*extension)) { |
2555 LOG(WARNING) | 2555 LOG(WARNING) |
2556 << "ShouldAllowInstall() returned false for " | 2556 << "ShouldAllowInstall() returned false for " |
2557 << id << " of type " << extension->GetType() | 2557 << id << " of type " << extension->GetType() |
2558 << " and update URL " << extension->update_url().spec() | 2558 << " and update URL " << extension->update_url().spec() |
2559 << "; not installing"; | 2559 << "; not installing"; |
2560 | 2560 |
2561 NotificationService::current()->Notify( | 2561 content::NotificationService::current()->Notify( |
2562 chrome::NOTIFICATION_EXTENSION_INSTALL_NOT_ALLOWED, | 2562 chrome::NOTIFICATION_EXTENSION_INSTALL_NOT_ALLOWED, |
2563 content::Source<Profile>(profile_), | 2563 content::Source<Profile>(profile_), |
2564 content::Details<const Extension>(extension)); | 2564 content::Details<const Extension>(extension)); |
2565 | 2565 |
2566 // Delete the extension directory since we're not going to | 2566 // Delete the extension directory since we're not going to |
2567 // load it. | 2567 // load it. |
2568 if (!BrowserThread::PostTask( | 2568 if (!BrowserThread::PostTask( |
2569 BrowserThread::FILE, FROM_HERE, | 2569 BrowserThread::FILE, FROM_HERE, |
2570 base::Bind(&extension_file_util::DeleteFile, | 2570 base::Bind(&extension_file_util::DeleteFile, |
2571 extension->path(), true))) | 2571 extension->path(), true))) |
(...skipping 30 matching lines...) Expand all Loading... |
2602 !extension_prefs_->HasAllowFileAccessSetting(id)) { | 2602 !extension_prefs_->HasAllowFileAccessSetting(id)) { |
2603 extension_prefs_->SetAllowFileAccess(id, true); | 2603 extension_prefs_->SetAllowFileAccess(id, true); |
2604 } | 2604 } |
2605 | 2605 |
2606 // If the extension should automatically block network startup (e.g., it uses | 2606 // If the extension should automatically block network startup (e.g., it uses |
2607 // the webRequest API), set the preference. Otherwise clear it, in case the | 2607 // the webRequest API), set the preference. Otherwise clear it, in case the |
2608 // extension stopped using a relevant API. | 2608 // extension stopped using a relevant API. |
2609 extension_prefs_->SetDelaysNetworkRequests( | 2609 extension_prefs_->SetDelaysNetworkRequests( |
2610 extension->id(), extension->ImplicitlyDelaysNetworkStartup()); | 2610 extension->id(), extension->ImplicitlyDelaysNetworkStartup()); |
2611 | 2611 |
2612 NotificationService::current()->Notify( | 2612 content::NotificationService::current()->Notify( |
2613 chrome::NOTIFICATION_EXTENSION_INSTALLED, | 2613 chrome::NOTIFICATION_EXTENSION_INSTALLED, |
2614 content::Source<Profile>(profile_), | 2614 content::Source<Profile>(profile_), |
2615 content::Details<const Extension>(extension)); | 2615 content::Details<const Extension>(extension)); |
2616 | 2616 |
2617 // Transfer ownership of |extension| to AddExtension. | 2617 // Transfer ownership of |extension| to AddExtension. |
2618 AddExtension(scoped_extension); | 2618 AddExtension(scoped_extension); |
2619 } | 2619 } |
2620 | 2620 |
2621 const Extension* ExtensionService::GetExtensionByIdInternal( | 2621 const Extension* ExtensionService::GetExtensionByIdInternal( |
2622 const std::string& id, bool include_enabled, bool include_disabled, | 2622 const std::string& id, bool include_enabled, bool include_disabled, |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2776 installer->set_expected_id(id); | 2776 installer->set_expected_id(id); |
2777 installer->set_expected_version(*version); | 2777 installer->set_expected_version(*version); |
2778 installer->set_install_cause(extension_misc::INSTALL_CAUSE_EXTERNAL_FILE); | 2778 installer->set_install_cause(extension_misc::INSTALL_CAUSE_EXTERNAL_FILE); |
2779 installer->InstallCrx(path); | 2779 installer->InstallCrx(path); |
2780 } | 2780 } |
2781 | 2781 |
2782 void ExtensionService::ReportExtensionLoadError( | 2782 void ExtensionService::ReportExtensionLoadError( |
2783 const FilePath& extension_path, | 2783 const FilePath& extension_path, |
2784 const std::string &error, | 2784 const std::string &error, |
2785 bool be_noisy) { | 2785 bool be_noisy) { |
2786 NotificationService* service = NotificationService::current(); | 2786 content::NotificationService* service = |
| 2787 content::NotificationService::current(); |
2787 service->Notify(chrome::NOTIFICATION_EXTENSION_LOAD_ERROR, | 2788 service->Notify(chrome::NOTIFICATION_EXTENSION_LOAD_ERROR, |
2788 content::Source<Profile>(profile_), | 2789 content::Source<Profile>(profile_), |
2789 content::Details<const std::string>(&error)); | 2790 content::Details<const std::string>(&error)); |
2790 | 2791 |
2791 std::string path_str = UTF16ToUTF8(extension_path.LossyDisplayName()); | 2792 std::string path_str = UTF16ToUTF8(extension_path.LossyDisplayName()); |
2792 std::string message = base::StringPrintf( | 2793 std::string message = base::StringPrintf( |
2793 "Could not load extension from '%s'. %s", | 2794 "Could not load extension from '%s'. %s", |
2794 path_str.c_str(), error.c_str()); | 2795 path_str.c_str(), error.c_str()); |
2795 ExtensionErrorReporter::GetInstance()->ReportError(message, be_noisy); | 2796 ExtensionErrorReporter::GetInstance()->ReportError(message, be_noisy); |
2796 } | 2797 } |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2911 } | 2912 } |
2912 | 2913 |
2913 bool ExtensionService::IsBackgroundPageReady(const Extension* extension) { | 2914 bool ExtensionService::IsBackgroundPageReady(const Extension* extension) { |
2914 return (extension->background_url().is_empty() || | 2915 return (extension->background_url().is_empty() || |
2915 extension_runtime_data_[extension->id()].background_page_ready); | 2916 extension_runtime_data_[extension->id()].background_page_ready); |
2916 } | 2917 } |
2917 | 2918 |
2918 void ExtensionService::SetBackgroundPageReady(const Extension* extension) { | 2919 void ExtensionService::SetBackgroundPageReady(const Extension* extension) { |
2919 DCHECK(!extension->background_url().is_empty()); | 2920 DCHECK(!extension->background_url().is_empty()); |
2920 extension_runtime_data_[extension->id()].background_page_ready = true; | 2921 extension_runtime_data_[extension->id()].background_page_ready = true; |
2921 NotificationService::current()->Notify( | 2922 content::NotificationService::current()->Notify( |
2922 chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, | 2923 chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, |
2923 content::Source<const Extension>(extension), | 2924 content::Source<const Extension>(extension), |
2924 NotificationService::NoDetails()); | 2925 content::NotificationService::NoDetails()); |
2925 } | 2926 } |
2926 | 2927 |
2927 bool ExtensionService::IsBeingUpgraded(const Extension* extension) { | 2928 bool ExtensionService::IsBeingUpgraded(const Extension* extension) { |
2928 return extension_runtime_data_[extension->id()].being_upgraded; | 2929 return extension_runtime_data_[extension->id()].being_upgraded; |
2929 } | 2930 } |
2930 | 2931 |
2931 void ExtensionService::SetBeingUpgraded(const Extension* extension, | 2932 void ExtensionService::SetBeingUpgraded(const Extension* extension, |
2932 bool value) { | 2933 bool value) { |
2933 extension_runtime_data_[extension->id()].being_upgraded = value; | 2934 extension_runtime_data_[extension->id()].being_upgraded = value; |
2934 } | 2935 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3006 | 3007 |
3007 ExtensionService::NaClModuleInfoList::iterator | 3008 ExtensionService::NaClModuleInfoList::iterator |
3008 ExtensionService::FindNaClModule(const GURL& url) { | 3009 ExtensionService::FindNaClModule(const GURL& url) { |
3009 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); | 3010 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); |
3010 iter != nacl_module_list_.end(); ++iter) { | 3011 iter != nacl_module_list_.end(); ++iter) { |
3011 if (iter->url == url) | 3012 if (iter->url == url) |
3012 return iter; | 3013 return iter; |
3013 } | 3014 } |
3014 return nacl_module_list_.end(); | 3015 return nacl_module_list_.end(); |
3015 } | 3016 } |
OLD | NEW |