summaryrefslogtreecommitdiffstats
path: root/apps/launcher.cc
diff options
context:
space:
mode:
authorkoz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 00:03:36 +0000
committerkoz@chromium.org <koz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 00:03:36 +0000
commitc7c0c92c4d53cc26080e3358b61f7ecea809ecaa (patch)
tree1b2e84e4903421231ae7ca8192bf2ed97b9c3964 /apps/launcher.cc
parent84511467d19f63c582315e7733cc08bb9e1416ec (diff)
downloadchromium_src-c7c0c92c4d53cc26080e3358b61f7ecea809ecaa.zip
chromium_src-c7c0c92c4d53cc26080e3358b61f7ecea809ecaa.tar.gz
chromium_src-c7c0c92c4d53cc26080e3358b61f7ecea809ecaa.tar.bz2
Revert 241162 "Make clicking the restart bubble for crashed apps..."
This CL had the unintended side effect that Simulate Browser Restart no longer works. Also, experimentation suggests that the original bug it was intended to fix works without this change now. > Make clicking the restart bubble for crashed apps work. > > Previously AppLoadService listened for > NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING before dispatching the > onRestarted() event after a reload, but in the case of packaged apps, which use > non-persistent background pages, that notification will never get fired. This > is because reloading an app doesn't cause its background page to get loaded - > only a relevant event causes the page to be woken up. > > This patch fixes the issue by listening for NOTIFICATION_EXTENSION_LOADED > instead, which is always fired after a reload. It also determines whether an > extension is listening to an event by checking which events it has registered > for, not which ones it currently has a listener for, > NOTIFICATION_EXTENSION_LOADED is the notification that listeners get created > on, and so to avoid raciness we check registered events (ie: the persisted > list of events that an extension is interested in). > > BUG=327964 > > Review URL: https://codereview.chromium.org/93593003 TBR=koz@chromium.org Review URL: https://codereview.chromium.org/127843005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243703 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps/launcher.cc')
-rw-r--r--apps/launcher.cc14
1 files changed, 6 insertions, 8 deletions
diff --git a/apps/launcher.cc b/apps/launcher.cc
index 4f79973..6b077dd 100644
--- a/apps/launcher.cc
+++ b/apps/launcher.cc
@@ -380,12 +380,9 @@ void RestartPlatformApp(Profile* profile, const Extension* extension) {
#endif
extensions::EventRouter* event_router =
ExtensionSystem::Get(profile)->event_router();
- // We check for registered events, rather than listeners, because listeners
- // may not be instantiated for the events yet.
- std::set<std::string> events =
- event_router->GetRegisteredEvents(extension->id());
- bool listening_to_restart =
- events.count(app_runtime::OnRestarted::kEventName) > 0;
+ bool listening_to_restart = event_router->
+ ExtensionHasEventListener(extension->id(),
+ app_runtime::OnRestarted::kEventName);
if (listening_to_restart) {
extensions::AppEventRouter::DispatchOnRestartedEvent(profile, extension);
@@ -396,8 +393,9 @@ void RestartPlatformApp(Profile* profile, const Extension* extension) {
extension_service()->extension_prefs();
bool had_windows = extension_prefs->IsActive(extension->id());
extension_prefs->SetIsActive(extension->id(), false);
- bool listening_to_launch =
- events.count(app_runtime::OnLaunched::kEventName) > 0;
+ bool listening_to_launch = event_router->
+ ExtensionHasEventListener(extension->id(),
+ app_runtime::OnLaunched::kEventName);
if (listening_to_launch && had_windows)
LaunchPlatformAppWithNoData(profile, extension);