1 // Copyright (c) 2011 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_THEME_INSTALLED_INFOBAR_DELEGATE_H_ 6 #define CHROME_BROWSER_EXTENSIONS_THEME_INSTALLED_INFOBAR_DELEGATE_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "chrome/browser/infobars/confirm_infobar_delegate.h" 12 #include "content/public/browser/notification_observer.h" 13 #include "content/public/browser/notification_registrar.h" 14 15 class ExtensionService; 16 class InfoBarService; 17 class Profile; 18 class ThemeService; 19 20 namespace extensions { 21 class Extension; 22 } 23 24 // When a user installs a theme, we display it immediately, but provide an 25 // infobar allowing them to cancel. 26 class ThemeInstalledInfoBarDelegate : public ConfirmInfoBarDelegate, 27 public content::NotificationObserver { 28 public: 29 // Creates a theme installed infobar delegate and adds it to the last active 30 // tab on |profile|. 31 static void Create(const extensions::Extension* new_theme, 32 Profile* profile, 33 const std::string& previous_theme_id, 34 bool previous_using_native_theme); 35 36 private: 37 ThemeInstalledInfoBarDelegate(InfoBarService* infobar_service, 38 ExtensionService* extension_service, 39 ThemeService* theme_service, 40 const extensions::Extension* new_theme, 41 const std::string& previous_theme_id, 42 bool previous_using_native_theme); 43 virtual ~ThemeInstalledInfoBarDelegate(); 44 45 // ConfirmInfoBarDelegate: 46 virtual int GetIconID() const OVERRIDE; 47 virtual Type GetInfoBarType() const OVERRIDE; 48 virtual ThemeInstalledInfoBarDelegate* 49 AsThemePreviewInfobarDelegate() OVERRIDE; 50 virtual string16 GetMessageText() const OVERRIDE; 51 virtual int GetButtons() const OVERRIDE; 52 virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 53 virtual bool Cancel() OVERRIDE; 54 55 // content::NotificationObserver: 56 virtual void Observe(int type, 57 const content::NotificationSource& source, 58 const content::NotificationDetails& details) OVERRIDE; 59 60 ExtensionService* extension_service_; 61 ThemeService* theme_service_; 62 63 // Name of theme that's just been installed. 64 std::string name_; 65 66 // ID of theme that's just been installed. 67 std::string theme_id_; 68 69 // Used to undo theme install. 70 std::string previous_theme_id_; 71 bool previous_using_native_theme_; 72 73 // Registers and unregisters us for notifications. 74 content::NotificationRegistrar registrar_; 75 }; 76 77 #endif // CHROME_BROWSER_EXTENSIONS_THEME_INSTALLED_INFOBAR_DELEGATE_H_ 78