summaryrefslogtreecommitdiffstats
path: root/chrome/browser/webui/app_launcher_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/webui/app_launcher_handler.h')
-rw-r--r--chrome/browser/webui/app_launcher_handler.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/chrome/browser/webui/app_launcher_handler.h b/chrome/browser/webui/app_launcher_handler.h
new file mode 100644
index 0000000..d093b4a
--- /dev/null
+++ b/chrome/browser/webui/app_launcher_handler.h
@@ -0,0 +1,133 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_WEBUI_APP_LAUNCHER_HANDLER_H_
+#define CHROME_BROWSER_WEBUI_APP_LAUNCHER_HANDLER_H_
+#pragma once
+
+#include "base/scoped_ptr.h"
+#include "chrome/browser/extensions/extension_install_ui.h"
+#include "chrome/browser/prefs/pref_change_registrar.h"
+#include "chrome/browser/webui/web_ui.h"
+#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_registrar.h"
+
+class Extension;
+class ExtensionPrefs;
+class ExtensionService;
+class NotificationRegistrar;
+class PrefChangeRegistrar;
+class Profile;
+
+namespace gfx {
+ class Rect;
+}
+
+// The handler for Javascript messages related to the "apps" view.
+class AppLauncherHandler
+ : public WebUIMessageHandler,
+ public ExtensionInstallUI::Delegate,
+ public NotificationObserver {
+ public:
+ explicit AppLauncherHandler(ExtensionService* extension_service);
+ virtual ~AppLauncherHandler();
+
+ // Populate a dictionary with the information from an extension.
+ static void CreateAppInfo(const Extension* extension,
+ ExtensionPrefs* extension_prefs,
+ DictionaryValue* value);
+
+ // Callback for pings related to launching apps on the NTP.
+ static bool HandlePing(Profile* profile, const std::string& path);
+
+ // WebUIMessageHandler implementation.
+ virtual WebUIMessageHandler* Attach(WebUI* web_ui);
+ virtual void RegisterMessages();
+
+ // NotificationObserver
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ // Populate the given dictionary with all installed app info.
+ void FillAppDictionary(DictionaryValue* value);
+
+ // Callback for the "getApps" message.
+ void HandleGetApps(const ListValue* args);
+
+ // Callback for the "launchApp" message.
+ void HandleLaunchApp(const ListValue* args);
+
+ // Callback for the "setLaunchType" message.
+ void HandleSetLaunchType(const ListValue* args);
+
+ // Callback for the "uninstallApp" message.
+ void HandleUninstallApp(const ListValue* args);
+
+ // Callback for the "hideAppPromo" message.
+ void HandleHideAppsPromo(const ListValue* args);
+
+ // Callback for the "createAppShortcut" message.
+ void HandleCreateAppShortcut(const ListValue* args);
+
+ // Callback for the 'reorderApps" message.
+ void HandleReorderApps(const ListValue* args);
+
+ private:
+ // Records a web store launch in the appropriate histograms. |promo_active|
+ // specifies if the web store promotion was active.
+ static void RecordWebStoreLaunch(bool promo_active);
+
+ // Records an app launch in the corresponding |bucket| of the app launch
+ // histogram. |promo_active| specifies if the web store promotion was active.
+ static void RecordAppLaunchByID(bool promo_active,
+ extension_misc::AppLaunchBucket bucket);
+
+ // Records an app launch in the corresponding |bucket| of the app launch
+ // histogram if the |escaped_url| corresponds to an installed app.
+ static void RecordAppLaunchByURL(Profile* profile,
+ std::string escaped_url,
+ extension_misc::AppLaunchBucket bucket);
+
+ // ExtensionInstallUI::Delegate implementation, used for receiving
+ // notification about uninstall confirmation dialog selections.
+ virtual void InstallUIProceed();
+ virtual void InstallUIAbort();
+
+ // Returns the ExtensionInstallUI object for this class, creating it if
+ // needed.
+ ExtensionInstallUI* GetExtensionInstallUI();
+
+ // Helper that uninstalls all the default apps.
+ void UninstallDefaultApps();
+
+ // The apps are represented in the extensions model.
+ scoped_refptr<ExtensionService> extensions_service_;
+
+ // We monitor changes to the extension system so that we can reload the apps
+ // when necessary.
+ NotificationRegistrar registrar_;
+
+ // Monitor extension preference changes so that the Web UI can be notified.
+ PrefChangeRegistrar pref_change_registrar_;
+
+ // Used to show confirmation UI for uninstalling/enabling extensions in
+ // incognito mode.
+ scoped_ptr<ExtensionInstallUI> install_ui_;
+
+ // The id of the extension we are prompting the user about.
+ std::string extension_id_prompting_;
+
+ // Whether the promo is currently being shown.
+ bool promo_active_;
+
+ // When true, we ignore changes to the underlying data rather than immediately
+ // refreshing. This is useful when making many batch updates to avoid flicker.
+ bool ignore_changes_;
+
+ DISALLOW_COPY_AND_ASSIGN(AppLauncherHandler);
+};
+
+#endif // CHROME_BROWSER_WEBUI_APP_LAUNCHER_HANDLER_H_