Index: chrome/browser/ui/webui/extensions/extension_settings_handler.h |
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.h b/chrome/browser/ui/webui/extensions/extension_settings_handler.h |
index bbe504d95f9195107903d95611652f11794bf31b..7785e601956439dcc44f9d4b51445ca63613d030 100644 |
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.h |
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.h |
@@ -10,6 +10,7 @@ |
#include <vector> |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
#include "chrome/browser/extensions/extension_install_ui.h" |
#include "chrome/browser/extensions/extension_uninstall_dialog.h" |
#include "chrome/browser/extensions/extension_warning_set.h" |
@@ -104,6 +105,9 @@ class ExtensionSettingsHandler : public content::WebUIMessageHandler, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) OVERRIDE; |
+ // Launches the application described by |extension_id|. |
+ void LaunchApplication(extensions::ExtensionHost* extension_host); |
+ |
// ExtensionUninstallDialog::Delegate implementation, used for receiving |
// notification about uninstall confirmation dialog selections. |
virtual void ExtensionUninstallAccepted() OVERRIDE; |
@@ -112,6 +116,9 @@ class ExtensionSettingsHandler : public content::WebUIMessageHandler, |
// Helper method that reloads all unpacked extensions. |
void ReloadUnpackedExtensions(); |
+ // Reloads the given extension. |
+ void ReloadExtension(const extensions::Extension* extension); |
+ |
// Callback for "requestExtensionsData" message. |
void HandleRequestExtensionsData(const base::ListValue* args); |
@@ -212,11 +219,21 @@ class ExtensionSettingsHandler : public content::WebUIMessageHandler, |
// we do so only once. |
bool registered_for_notifications_; |
+ // The set of apps for which we have triggered reload. They will be |
+ // re-launched when loaded again. The boolean tracks whether they have been |
+ // enabled (whether NOTIFICATION_EXTENSION_ENABLED has been dispatched). This |
+ // hack is necessary because reloading an extension causes multiple LOADED |
+ // notifications, but we only care about the one that comes after ENABLED. |
+ typedef std::map<std::string, bool> RelaunchApps; |
+ RelaunchApps relaunch_app_ids_; |
+ |
content::NotificationRegistrar registrar_; |
PrefChangeRegistrar pref_registrar_; |
PrefChangeRegistrar local_state_pref_registrar_; |
+ base::WeakPtrFactory<ExtensionSettingsHandler> weak_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsHandler); |
}; |