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

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

Issue 10641017: make "reload" on chrome://extensions automatically relaunch running apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android compile Created 8 years, 4 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
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_service.cc
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index c23f7eac3a713594df552d050e4aa8fc3fccd151..3f416de79ddffa6bed6e4a548ae9d187861d65ba 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -61,9 +61,12 @@
#include "chrome/browser/extensions/external_provider_impl.h"
#include "chrome/browser/extensions/external_provider_interface.h"
#include "chrome/browser/extensions/installed_loader.h"
+#include "chrome/browser/extensions/lazy_background_task_queue.h"
#include "chrome/browser/extensions/pending_extension_manager.h"
#include "chrome/browser/extensions/permissions_updater.h"
+#include "chrome/browser/extensions/platform_app_launcher.h"
#include "chrome/browser/extensions/settings/settings_frontend.h"
+#include "chrome/browser/extensions/shell_window_registry.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
#include "chrome/browser/extensions/window_event_router.h"
@@ -108,7 +111,6 @@
#include "sync/api/sync_error_factory.h"
#include "webkit/database/database_tracker.h"
#include "webkit/database/database_util.h"
-
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/extensions/bluetooth_event_router.h"
@@ -664,6 +666,12 @@ void ExtensionService::ReloadExtension(const std::string& extension_id) {
orphaned_dev_tools_[extension_id] = devtools_cookie;
}
+ if (current_extension->is_platform_app() &&
+ !extensions::ShellWindowRegistry::Get(profile_)->
+ GetShellWindowsForApp(extension_id).empty()) {
+ relaunch_app_ids_.insert(extension_id);
+ }
+
path = current_extension->path();
DisableExtension(extension_id, Extension::DISABLE_RELOAD);
disabled_extension_paths_[extension_id] = path;
@@ -1954,6 +1962,7 @@ void ExtensionService::AddExtension(const Extension* extension) {
extensions_.Insert(scoped_extension);
SyncExtensionChangeIfNeeded(*extension);
NotifyExtensionLoaded(extension);
+ QueueRestoreAppWindow(extension);
}
void ExtensionService::InitializePermissions(const Extension* extension) {
@@ -2565,3 +2574,31 @@ ExtensionService::NaClModuleInfoList::iterator
}
return nacl_module_list_.end();
}
+
+void ExtensionService::QueueRestoreAppWindow(const Extension* extension) {
+ std::set<std::string>::iterator relaunch_iter =
+ relaunch_app_ids_.find(extension->id());
+ if (relaunch_iter != relaunch_app_ids_.end()) {
+ extensions::LazyBackgroundTaskQueue* queue =
+ system_->lazy_background_task_queue();
+ if (queue->ShouldEnqueueTask(profile(), extension)) {
+ queue->AddPendingTask(profile(), extension->id(),
+ base::Bind(&ExtensionService::LaunchApplication));
+ }
+
+ relaunch_app_ids_.erase(relaunch_iter);
+ }
+}
+
+// static
+void ExtensionService::LaunchApplication(
+ extensions::ExtensionHost* extension_host) {
+ if (!extension_host)
+ return;
+
+#if !defined(OS_ANDROID)
+ extensions::LaunchPlatformApp(extension_host->profile(),
+ extension_host->extension(),
+ NULL, FilePath());
+#endif
+}
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698