1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_UI_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_UI_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 12 class Browser; 13 class ExtensionInstallPrompt; 14 class Profile; 15 class SkBitmap; 16 17 namespace extensions { 18 class CrxInstallerError; 19 class Extension; 20 class ExtensionWebstorePrivateApiTest; 21 } 22 23 // Interface that should be implemented for each platform to display all the UI 24 // around extension installation. 25 class ExtensionInstallUI { 26 public: 27 static ExtensionInstallUI* Create(Profile* profile); 28 29 virtual ~ExtensionInstallUI(); 30 31 // Called when an extension was installed. 32 virtual void OnInstallSuccess(const extensions::Extension* extension, 33 const SkBitmap* icon) = 0; 34 35 // Called when an extension failed to install. 36 virtual void OnInstallFailure(const extensions::CrxInstallerError& error) = 0; 37 38 39 // TODO(asargent) Normally we navigate to the new tab page when an app is 40 // installed, but we're experimenting with instead showing a bubble when 41 // an app is installed which points to the new tab button. This may become 42 // the default behavior in the future. 43 virtual void SetUseAppInstalledBubble(bool use_bubble) = 0; 44 45 // Whether or not to show the default UI after completing the installation. 46 void set_skip_post_install_ui(bool skip_ui) { 47 skip_post_install_ui_ = skip_ui; 48 } 49 50 // Opens apps UI and animates the app icon for the app with id |app_id|. 51 static void OpenAppInstalledUI(Profile* profile, const std::string& app_id); 52 53 #if defined(UNIT_TEST) 54 static void set_disable_failure_ui_for_tests() { 55 disable_failure_ui_for_tests_ = true; 56 } 57 #endif 58 59 // Creates an ExtensionInstallPrompt from |browser|. 60 // Caller assumes ownership. 61 static ExtensionInstallPrompt* CreateInstallPromptWithBrowser( 62 Browser* browser); 63 64 // Creates an ExtensionInstallPrompt from |profile|. 65 // Caller assumes ownership. This method is deprecated and should not be used 66 // in new code. 67 static ExtensionInstallPrompt* CreateInstallPromptWithProfile( 68 Profile* profile); 69 70 Profile* profile() { return profile_; } 71 72 protected: 73 explicit ExtensionInstallUI(Profile* profile); 74 75 static bool disable_failure_ui_for_tests() { 76 return disable_failure_ui_for_tests_; 77 } 78 79 bool skip_post_install_ui() const { return skip_post_install_ui_; } 80 81 private: 82 static bool disable_failure_ui_for_tests_; 83 84 Profile* profile_; 85 86 // Whether or not to show the default UI after completing the installation. 87 bool skip_post_install_ui_; 88 89 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallUI); 90 }; 91 92 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_UI_H_ 93