| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 6fc67f90f554ad14b5e55be9b7404c29e0cd6d5f..3c5b4bd5bcefceae2f400e9a6cc126b3f2b0b852 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -74,7 +74,6 @@
|
| #include "extensions/browser/extensions_browser_client.h"
|
| #include "extensions/browser/external_install_info.h"
|
| #include "extensions/browser/install_flag.h"
|
| -#include "extensions/browser/renderer_startup_helper.h"
|
| #include "extensions/browser/runtime_data.h"
|
| #include "extensions/browser/uninstall_reason.h"
|
| #include "extensions/browser/update_observer.h"
|
| @@ -310,9 +309,6 @@
|
| extensions_enabled_(extensions_enabled),
|
| ready_(ready),
|
| shared_module_service_(new extensions::SharedModuleService(profile_)),
|
| - renderer_helper_(
|
| - extensions::RendererStartupHelperFactory::GetForBrowserContext(
|
| - profile_)),
|
| app_data_migrator_(new extensions::AppDataMigrator(profile_, registry_)) {
|
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| TRACE_EVENT0("browser,startup", "ExtensionService::ExtensionService::ctor");
|
| @@ -1034,7 +1030,27 @@
|
| base::Bind(&ExtensionService::OnExtensionRegisteredWithRequestContexts,
|
| AsWeakPtr(), make_scoped_refptr(extension)));
|
|
|
| - renderer_helper_->OnExtensionLoaded(*extension);
|
| + // Tell renderers about the new extension, unless it's a theme (renderers
|
| + // don't need to know about themes).
|
| + if (!extension->is_theme()) {
|
| + for (content::RenderProcessHost::iterator i(
|
| + content::RenderProcessHost::AllHostsIterator());
|
| + !i.IsAtEnd(); i.Advance()) {
|
| + content::RenderProcessHost* host = i.GetCurrentValue();
|
| + Profile* host_profile =
|
| + Profile::FromBrowserContext(host->GetBrowserContext());
|
| + if (host_profile->GetOriginalProfile() ==
|
| + profile_->GetOriginalProfile()) {
|
| + // We don't need to include tab permisisons here, since the extension
|
| + // was just loaded.
|
| + std::vector<ExtensionMsg_Loaded_Params> loaded_extensions(
|
| + 1, ExtensionMsg_Loaded_Params(extension,
|
| + false /* no tab permissions */));
|
| + host->Send(
|
| + new ExtensionMsg_Loaded(loaded_extensions));
|
| + }
|
| + }
|
| + }
|
|
|
| // Tell subsystems that use the EXTENSION_LOADED notification about the new
|
| // extension.
|
| @@ -1106,7 +1122,15 @@
|
| content::Source<Profile>(profile_),
|
| content::Details<UnloadedExtensionInfo>(&details));
|
|
|
| - renderer_helper_->OnExtensionUnloaded(extension->id());
|
| + for (content::RenderProcessHost::iterator i(
|
| + content::RenderProcessHost::AllHostsIterator());
|
| + !i.IsAtEnd(); i.Advance()) {
|
| + content::RenderProcessHost* host = i.GetCurrentValue();
|
| + Profile* host_profile =
|
| + Profile::FromBrowserContext(host->GetBrowserContext());
|
| + if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile())
|
| + host->Send(new ExtensionMsg_Unloaded(extension->id()));
|
| + }
|
|
|
| system_->UnregisterExtensionWithRequestContexts(extension->id(), reason);
|
|
|
|
|