summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorpkotwicz <pkotwicz@chromium.org>2014-10-20 17:24:30 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-21 00:24:53 +0000
commita57a1f32435331e8207d4a871e2afea78712dd16 (patch)
tree2b77f46cca5dfb6c80f6f30a7bbcb67345ca2d54 /extensions
parent04d506d219244c56db59cfd64aa52c449aa1cdd2 (diff)
downloadchromium_src-a57a1f32435331e8207d4a871e2afea78712dd16.zip
chromium_src-a57a1f32435331e8207d4a871e2afea78712dd16.tar.gz
chromium_src-a57a1f32435331e8207d4a871e2afea78712dd16.tar.bz2
Displays dialog when app install succeeds / fails on Athena. In particular,
there is no Athena port of AppListService (crbug.com/417571) In addition this CL: - Fixes crashes in webstorePrivate.completeInstall() when the Javascript requests the "App installed" bubble to be shown. In practice this is only requested for extensions which should not be enabled (but are enabled) in Athena. - Moves ExtensionInstallUI and CrxInstallerError to extensions/browser/install so that they can be used by code in Athena - Refactors ExtensionInstallUI to remove the static methods BUG=414341,417571 TEST=Manual, see bug Review URL: https://codereview.chromium.org/634313004 Cr-Commit-Position: refs/heads/master@{#300386}
Diffstat (limited to 'extensions')
-rw-r--r--extensions/browser/BUILD.gn3
-rw-r--r--extensions/browser/install/crx_installer_error.h36
-rw-r--r--extensions/browser/install/extension_install_ui.cc18
-rw-r--r--extensions/browser/install/extension_install_ui.h70
-rw-r--r--extensions/extensions.gyp3
5 files changed, 130 insertions, 0 deletions
diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn
index 3a0adfd..06ed416 100644
--- a/extensions/browser/BUILD.gn
+++ b/extensions/browser/BUILD.gn
@@ -395,6 +395,9 @@ source_set("browser") {
"image_util.h",
"info_map.cc",
"info_map.h",
+ "install/crx_installer_error.h",
+ "install/extension_install_ui.cc",
+ "install/extension_install_ui.h",
"install_flag.h",
"lazy_background_task_queue.cc",
"lazy_background_task_queue.h",
diff --git a/extensions/browser/install/crx_installer_error.h b/extensions/browser/install/crx_installer_error.h
new file mode 100644
index 0000000..0376a79
--- /dev/null
+++ b/extensions/browser/install/crx_installer_error.h
@@ -0,0 +1,36 @@
+// Copyright (c) 2012 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 EXTENSIONS_BROWSER_INSTALL_CRX_INSTALLER_ERROR_H_
+#define EXTENSIONS_BROWSER_INSTALL_CRX_INSTALLER_ERROR_H_
+
+#include "base/strings/string16.h"
+
+namespace extensions {
+
+// Simple error class for CrxInstaller.
+class CrxInstallerError {
+ public:
+ // Typed errors that need to be handled specially by clients.
+ enum Type { ERROR_NONE, ERROR_OFF_STORE, ERROR_OTHER };
+
+ CrxInstallerError() : type_(ERROR_NONE) {}
+
+ explicit CrxInstallerError(const base::string16& message)
+ : type_(message.empty() ? ERROR_NONE : ERROR_OTHER), message_(message) {}
+
+ CrxInstallerError(Type type, const base::string16& message)
+ : type_(type), message_(message) {}
+
+ Type type() const { return type_; }
+ const base::string16& message() const { return message_; }
+
+ private:
+ Type type_;
+ base::string16 message_;
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_BROWSER_INSTALL_CRX_INSTALLER_ERROR_H_
diff --git a/extensions/browser/install/extension_install_ui.cc b/extensions/browser/install/extension_install_ui.cc
new file mode 100644
index 0000000..03441b6
--- /dev/null
+++ b/extensions/browser/install/extension_install_ui.cc
@@ -0,0 +1,18 @@
+// Copyright (c) 2012 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.
+
+#include "extensions/browser/install/extension_install_ui.h"
+
+namespace extensions {
+
+// static
+bool ExtensionInstallUI::disable_failure_ui_for_tests_ = false;
+
+ExtensionInstallUI::ExtensionInstallUI() {
+}
+
+ExtensionInstallUI::~ExtensionInstallUI() {
+}
+
+} // namespace extensions
diff --git a/extensions/browser/install/extension_install_ui.h b/extensions/browser/install/extension_install_ui.h
new file mode 100644
index 0000000..f9cbe4b
--- /dev/null
+++ b/extensions/browser/install/extension_install_ui.h
@@ -0,0 +1,70 @@
+// Copyright (c) 2012 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 EXTENSIONS_BROWSER_INSTALL_EXTENSION_INSTALL_UI_H_
+#define EXTENSIONS_BROWSER_INSTALL_EXTENSION_INSTALL_UI_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "ui/gfx/native_widget_types.h"
+
+class SkBitmap;
+
+namespace extensions {
+class CrxInstallerError;
+class Extension;
+
+// Interface that should be implemented for each platform to display all the UI
+// around extension installation.
+class ExtensionInstallUI {
+ public:
+ ExtensionInstallUI();
+ virtual ~ExtensionInstallUI();
+
+ // Called when an extension was installed.
+ virtual void OnInstallSuccess(const extensions::Extension* extension,
+ const SkBitmap* icon) = 0;
+
+ // Called when an extension failed to install.
+ virtual void OnInstallFailure(const extensions::CrxInstallerError& error) = 0;
+
+ // TODO(asargent) Normally we navigate to the new tab page when an app is
+ // installed, but we're experimenting with instead showing a bubble when
+ // an app is installed which points to the new tab button. This may become
+ // the default behavior in the future.
+ virtual void SetUseAppInstalledBubble(bool use_bubble) = 0;
+
+ // Opens apps UI and animates the app icon for the app with id |app_id|.
+ virtual void OpenAppInstalledUI(const std::string& app_id) = 0;
+
+ // Sets whether to show the default UI after completing the installation.
+ virtual void SetSkipPostInstallUI(bool skip_ui) = 0;
+
+ // Returns the gfx::NativeWindow to use as the parent for install dialogs.
+ // Returns NULL if the install dialog should be a top level window. This
+ // method is deprecated - do not add new callers.
+ // TODO(pkotwicz): Remove this method. crbug.com/422474
+ virtual gfx::NativeWindow GetDefaultInstallDialogParent() = 0;
+
+#if defined(UNIT_TEST)
+ static void set_disable_failure_ui_for_tests() {
+ disable_failure_ui_for_tests_ = true;
+ }
+#endif
+
+ protected:
+ static bool disable_failure_ui_for_tests() {
+ return disable_failure_ui_for_tests_;
+ }
+
+ private:
+ static bool disable_failure_ui_for_tests_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionInstallUI);
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_BROWSER_INSTALL_EXTENSION_INSTALL_UI_H_
diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp
index 41c11b0..0c9a8ac 100644
--- a/extensions/extensions.gyp
+++ b/extensions/extensions.gyp
@@ -695,6 +695,9 @@
'browser/image_util.h',
'browser/info_map.cc',
'browser/info_map.h',
+ 'browser/install/crx_installer_error.h',
+ 'browser/install/extension_install_ui.cc',
+ 'browser/install/extension_install_ui.h',
'browser/install_flag.h',
'browser/file_highlighter.cc',
'browser/file_highlighter.h',