| // 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_EXTENSIONS_THEME_INSTALLED_INFOBAR_DELEGATE_H_ |
| #define CHROME_BROWSER_EXTENSIONS_THEME_INSTALLED_INFOBAR_DELEGATE_H_ |
| #pragma once |
| |
| #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" |
| #include "content/common/notification_registrar.h" |
| |
| class ThemeService; |
| class Extension; |
| class SkBitmap; |
| class TabContents; |
| |
| // When a user installs a theme, we display it immediately, but provide an |
| // infobar allowing them to cancel. |
| class ThemeInstalledInfoBarDelegate : public ConfirmInfoBarDelegate, |
| public NotificationObserver { |
| public: |
| ThemeInstalledInfoBarDelegate(TabContents* tab_contents, |
| const Extension* new_theme, |
| const std::string& previous_theme_id); |
| |
| // Returns true if the given theme is the same as the one associated with this |
| // info bar. |
| bool MatchesTheme(const Extension* theme) const; |
| |
| protected: |
| virtual ~ThemeInstalledInfoBarDelegate(); |
| |
| ThemeService* theme_service() { return theme_service_; } |
| |
| // ConfirmInfoBarDelegate: |
| virtual bool Cancel(); |
| |
| private: |
| // ConfirmInfoBarDelegate: |
| virtual void InfoBarClosed(); |
| virtual SkBitmap* GetIcon() const; |
| virtual ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate(); |
| virtual string16 GetMessageText() const; |
| virtual int GetButtons() const; |
| virtual string16 GetButtonLabel(InfoBarButton button) const; |
| |
| // NotificationObserver: |
| virtual void Observe(NotificationType type, |
| const NotificationSource& source, |
| const NotificationDetails& details); |
| |
| Profile* profile_; |
| ThemeService* theme_service_; |
| |
| // Name of theme that's just been installed. |
| std::string name_; |
| |
| // ID of theme that's just been installed. |
| std::string theme_id_; |
| |
| // Used to undo theme install. |
| std::string previous_theme_id_; |
| |
| // Tab to which this info bar is associated. |
| TabContents* tab_contents_; |
| |
| // Registers and unregisters us for notifications. |
| NotificationRegistrar registrar_; |
| }; |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_THEME_INSTALLED_INFOBAR_DELEGATE_H_ |