| Index: chrome/browser/extensions/extension_process_manager.cc
|
| diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc
|
| index e9562e9370799eddb4c4e459c543e79675e6fba3..27ffc2186a1aebd6de07b17580539b9020a826dd 100644
|
| --- a/chrome/browser/extensions/extension_process_manager.cc
|
| +++ b/chrome/browser/extensions/extension_process_manager.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/metrics/histogram.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/time.h"
|
| +#include "chrome/browser/extensions/api/runtime/runtime_api.h"
|
| #include "chrome/browser/extensions/extension_process_manager.h"
|
| #include "chrome/browser/extensions/extension_host.h"
|
| #include "chrome/browser/extensions/extension_info_map.h"
|
| @@ -89,16 +90,20 @@ class IncognitoExtensionProcessManager : public ExtensionProcessManager {
|
|
|
| static void CreateBackgroundHostForExtensionLoad(
|
| ExtensionProcessManager* manager, const Extension* extension) {
|
| - if (extension->has_persistent_background_page()) {
|
| + if (extension->has_persistent_background_page())
|
| manager->CreateBackgroundHost(extension, extension->GetBackgroundURL());
|
| - }
|
| }
|
|
|
| static void CreateBackgroundHostsForProfileStartup(
|
| - ExtensionProcessManager* manager, const ExtensionSet* extensions) {
|
| + Profile* profile,
|
| + ExtensionProcessManager* manager,
|
| + const ExtensionSet* extensions) {
|
| for (ExtensionSet::const_iterator extension = extensions->begin();
|
| extension != extensions->end(); ++extension) {
|
| CreateBackgroundHostForExtensionLoad(manager, *extension);
|
| +
|
| + extensions::RuntimeEventRouter::DispatchOnStartupEvent(
|
| + profile, (*extension)->id());
|
| }
|
| }
|
|
|
| @@ -557,19 +562,19 @@ void ExtensionProcessManager::Observe(
|
| const content::NotificationDetails& details) {
|
| switch (type) {
|
| case chrome::NOTIFICATION_EXTENSIONS_READY: {
|
| - CreateBackgroundHostsForProfileStartup(this,
|
| - content::Source<Profile>(source).ptr()->
|
| - GetExtensionService()->extensions());
|
| + Profile* profile = content::Source<Profile>(source).ptr();
|
| + CreateBackgroundHostsForProfileStartup(profile, this,
|
| + profile->GetExtensionService()->extensions());
|
| break;
|
| }
|
|
|
| case chrome::NOTIFICATION_EXTENSION_LOADED: {
|
| - ExtensionService* service =
|
| - content::Source<Profile>(source).ptr()->GetExtensionService();
|
| + Profile* profile = content::Source<Profile>(source).ptr();
|
| + ExtensionService* service = profile->GetExtensionService();
|
| if (service->is_ready()) {
|
| const Extension* extension =
|
| content::Details<const Extension>(details).ptr();
|
| - ::CreateBackgroundHostForExtensionLoad(this, extension);
|
| + CreateBackgroundHostForExtensionLoad(this, extension);
|
| }
|
| break;
|
| }
|
| @@ -805,7 +810,8 @@ void IncognitoExtensionProcessManager::Observe(
|
| // service will be NULL.
|
| ExtensionService* service = GetProfile()->GetExtensionService();
|
| if (service && service->is_ready())
|
| - CreateBackgroundHostsForProfileStartup(this, service->extensions());
|
| + CreateBackgroundHostsForProfileStartup(GetProfile(),
|
| + this, service->extensions());
|
| }
|
| break;
|
| }
|
|
|