summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/theme_installed_infobar_delegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/theme_installed_infobar_delegate.h')
-rw-r--r--chrome/browser/extensions/theme_installed_infobar_delegate.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/chrome/browser/extensions/theme_installed_infobar_delegate.h b/chrome/browser/extensions/theme_installed_infobar_delegate.h
new file mode 100644
index 0000000..7674a4c
--- /dev/null
+++ b/chrome/browser/extensions/theme_installed_infobar_delegate.h
@@ -0,0 +1,63 @@
+// Copyright (c) 2010 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_
+
+#include "chrome/browser/tab_contents/infobar_delegate.h"
+#include "chrome/common/notification_registrar.h"
+
+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);
+ virtual ~ThemeInstalledInfoBarDelegate();
+ virtual void InfoBarClosed();
+ virtual std::wstring GetMessageText() const;
+ virtual SkBitmap* GetIcon() const;
+ virtual ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate();
+ virtual int GetButtons() const;
+ virtual std::wstring GetButtonLabel(
+ ConfirmInfoBarDelegate::InfoBarButton button) const;
+ virtual bool Cancel();
+
+ // Returns true if the given theme is the same as the one associated with this
+ // info bar.
+ bool MatchesTheme(Extension* theme);
+
+ // NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+ protected:
+ Profile* profile() { return profile_; }
+
+ private:
+ Profile* profile_;
+
+ // 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_