Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(927)

Unified Diff: chrome/browser/extensions/extension_process_manager.cc

Issue 9350024: Unrevert again r119770 - "Event pages: remember events that the page registered for,"" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 9e824dbc0903bc117ff5f30a598d732fd5236d68..f00ea56d564a8f53635721a46d874c3a644cfc22 100644
--- a/chrome/browser/extensions/extension_process_manager.cc
+++ b/chrome/browser/extensions/extension_process_manager.cc
@@ -35,6 +35,10 @@ using content::OpenURLParams;
using content::Referrer;
using content::SiteInstance;
+namespace events {
+const char kOnInstalled[] = "experimental.extension.onInstalled";
+}; // namespace events
+
namespace {
// Incognito profiles use this process manager. It is mostly a shim that decides
@@ -67,9 +71,14 @@ class IncognitoExtensionProcessManager : public ExtensionProcessManager {
static void CreateBackgroundHostForExtensionLoad(
ExtensionProcessManager* manager, const Extension* extension) {
- if (extension->has_background_page() &&
- extension->background_page_persists()) {
- manager->CreateBackgroundHost(extension, extension->GetBackgroundURL());
+ if (extension->has_background_page()) {
+ if (extension->background_page_persists()) {
+ manager->CreateBackgroundHost(extension, extension->GetBackgroundURL());
+ } else {
+ // TODO(mpcomplete): Only call this on install once we persist event
+ // registration. Also call this for regular background pages.
+ manager->DispatchExtensionInstalledEvent(extension);
+ }
}
}
@@ -409,6 +418,14 @@ void ExtensionProcessManager::CloseBackgroundHosts() {
}
}
+void ExtensionProcessManager::DispatchExtensionInstalledEvent(
+ const Extension* extension) {
+ ExtensionEventRouter* router = GetProfile()->GetExtensionEventRouter();
+ router->AddLazyEventListener(events::kOnInstalled, extension->id());
+ router->DispatchEventToExtension(
+ extension->id(), events::kOnInstalled, "[]", NULL, GURL());
+}
+
//
// IncognitoExtensionProcessManager
//
« no previous file with comments | « chrome/browser/extensions/extension_process_manager.h ('k') | chrome/browser/extensions/lazy_background_page_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698