Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / extensions / extension_settings_handler.h
index ef35e93..779a484 100644 (file)
 #include <vector>
 
 #include "base/memory/scoped_ptr.h"
-#include "base/prefs/pref_change_registrar.h"
 #include "base/scoped_observer.h"
 #include "chrome/browser/extensions/error_console/error_console.h"
 #include "chrome/browser/extensions/extension_install_prompt.h"
-#include "chrome/browser/extensions/extension_install_ui.h"
+#include "chrome/browser/extensions/extension_management.h"
 #include "chrome/browser/extensions/extension_uninstall_dialog.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
 #include "chrome/browser/extensions/requirements_checker.h"
+#include "chrome/common/extensions/webstore_install_result.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
@@ -26,6 +25,7 @@
 #include "extensions/browser/extension_prefs.h"
 #include "extensions/browser/extension_prefs_observer.h"
 #include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/warning_service.h"
 #include "url/gurl.h"
 
 class ExtensionService;
@@ -71,14 +71,15 @@ class ExtensionSettingsHandler
       public content::WebContentsObserver,
       public ErrorConsole::Observer,
       public ExtensionInstallPrompt::Delegate,
+      public ExtensionManagement::Observer,
       public ExtensionPrefsObserver,
       public ExtensionRegistryObserver,
       public ExtensionUninstallDialog::Delegate,
-      public ExtensionWarningService::Observer,
+      public WarningService::Observer,
       public base::SupportsWeakPtr<ExtensionSettingsHandler> {
  public:
   ExtensionSettingsHandler();
-  virtual ~ExtensionSettingsHandler();
+  ~ExtensionSettingsHandler() override;
 
   static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
 
@@ -88,7 +89,7 @@ class ExtensionSettingsHandler
   base::DictionaryValue* CreateExtensionDetailValue(
       const Extension* extension,
       const std::vector<ExtensionPage>& pages,
-      const ExtensionWarningService* warning_service);
+      const WarningService* warning_service);
 
   void GetLocalizedValues(content::WebUIDataSource* source);
 
@@ -97,52 +98,57 @@ class ExtensionSettingsHandler
   friend class BrokerDelegate;
 
   // content::WebContentsObserver implementation.
-  virtual void RenderViewDeleted(
-      content::RenderViewHost* render_view_host) OVERRIDE;
-  virtual void DidStartNavigationToPendingEntry(
+  void RenderViewDeleted(content::RenderViewHost* render_view_host) override;
+  void DidStartNavigationToPendingEntry(
       const GURL& url,
-      content::NavigationController::ReloadType reload_type) OVERRIDE;
+      content::NavigationController::ReloadType reload_type) override;
 
   // Allows injection for testing by friend classes.
   ExtensionSettingsHandler(ExtensionService* service,
                            ManagementPolicy* policy);
 
   // WebUIMessageHandler implementation.
-  virtual void RegisterMessages() OVERRIDE;
+  void RegisterMessages() override;
 
   // ErrorConsole::Observer implementation.
-  virtual void OnErrorAdded(const ExtensionError* error) OVERRIDE;
+  void OnErrorAdded(const ExtensionError* error) override;
 
   // content::NotificationObserver implementation.
-  virtual void Observe(int type,
-                       const content::NotificationSource& source,
-                       const content::NotificationDetails& details) OVERRIDE;
+  void Observe(int type,
+               const content::NotificationSource& source,
+               const content::NotificationDetails& details) override;
 
   // ExtensionRegistryObserver implementation.
-  virtual void OnExtensionLoaded(content::BrowserContext* browser_context,
-                                 const Extension* extension) OVERRIDE;
-  virtual void OnExtensionUnloaded(
-      content::BrowserContext* browser_context,
-      const Extension* extension,
-      UnloadedExtensionInfo::Reason reason) OVERRIDE;
-  virtual void OnExtensionUninstalled(content::BrowserContext* browser_context,
-                                      const Extension* extension) OVERRIDE;
+  void OnExtensionLoaded(content::BrowserContext* browser_context,
+                         const Extension* extension) override;
+  void OnExtensionUnloaded(content::BrowserContext* browser_context,
+                           const Extension* extension,
+                           UnloadedExtensionInfo::Reason reason) override;
+  void OnExtensionUninstalled(content::BrowserContext* browser_context,
+                              const Extension* extension,
+                              extensions::UninstallReason reason) override;
 
   // ExtensionPrefsObserver implementation.
-  virtual void OnExtensionDisableReasonsChanged(const std::string& extension_id,
-                                                int disable_reasons) OVERRIDE;
+  void OnExtensionDisableReasonsChanged(const std::string& extension_id,
+                                        int disable_reasons) override;
+
+  // ExtensionManagement::Observer implementation.
+  void OnExtensionManagementSettingsChanged() override;
 
   // ExtensionUninstallDialog::Delegate implementation, used for receiving
   // notification about uninstall confirmation dialog selections.
-  virtual void ExtensionUninstallAccepted() OVERRIDE;
-  virtual void ExtensionUninstallCanceled() OVERRIDE;
+  void ExtensionUninstallAccepted() override;
+  void ExtensionUninstallCanceled() override;
 
-  // ExtensionWarningService::Observer implementation.
-  virtual void ExtensionWarningsChanged() OVERRIDE;
+  // WarningService::Observer implementation.
+  void ExtensionWarningsChanged() override;
 
   // ExtensionInstallPrompt::Delegate implementation.
-  virtual void InstallUIProceed() OVERRIDE;
-  virtual void InstallUIAbort(bool user_initiated) OVERRIDE;
+  void InstallUIProceed() override;
+  void InstallUIAbort(bool user_initiated) override;
+
+  // Called after the App Info Dialog has closed.
+  virtual void AppInfoDialogClosed();
 
   // Helper method that reloads all unpacked extensions.
   void ReloadUnpackedExtensions();
@@ -162,6 +168,9 @@ class ExtensionSettingsHandler
   // Callback for "reload" message.
   void HandleReloadMessage(const base::ListValue* args);
 
+  // Callback for "repair" message.
+  void HandleRepairMessage(const base::ListValue* args);
+
   // Callback for "enable" message.
   void HandleEnableMessage(const base::ListValue* args);
 
@@ -195,6 +204,9 @@ class ExtensionSettingsHandler
   // Callback for the "dismissADTPromo" message.
   void HandleDismissADTPromoMessage(const base::ListValue* args);
 
+  // Callback for the "showPath" message.
+  void HandleShowPath(const base::ListValue* args);
+
   // Utility for calling JavaScript window.alert in the page.
   void ShowAlert(const std::string& message);
 
@@ -223,6 +235,11 @@ class ExtensionSettingsHandler
   // needed.
   ExtensionUninstallDialog* GetExtensionUninstallDialog();
 
+  // Called when the reinstallation is complete.
+  void OnReinstallComplete(bool success,
+                           const std::string& error,
+                           webstore_install::Result result);
+
   // Callback for RequirementsChecker.
   void OnRequirementsChecked(std::string extension_id,
                              std::vector<std::string> requirement_errors);
@@ -271,8 +288,6 @@ class ExtensionSettingsHandler
 
   content::NotificationRegistrar registrar_;
 
-  PrefChangeRegistrar pref_registrar_;
-
   // This will not be empty when a requirements check is in progress. Doing
   // another Check() before the previous one is complete will cause the first
   // one to abort.
@@ -281,7 +296,7 @@ class ExtensionSettingsHandler
   // The UI for showing what permissions the extension has.
   scoped_ptr<ExtensionInstallPrompt> prompt_;
 
-  ScopedObserver<ExtensionWarningService, ExtensionWarningService::Observer>
+  ScopedObserver<WarningService, WarningService::Observer>
       warning_service_observer_;
 
   // An observer to listen for when Extension errors are reported.
@@ -295,6 +310,9 @@ class ExtensionSettingsHandler
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
       extension_registry_observer_;
 
+  ScopedObserver<ExtensionManagement, ExtensionManagement::Observer>
+      extension_management_observer_;
+
   // Whether we found any DISABLE_NOT_VERIFIED extensions and want to kick off
   // a verification check to try and rescue them.
   bool should_do_verification_check_;