Index: chrome/browser/tab_contents/infobar_delegate.h |
=================================================================== |
--- chrome/browser/tab_contents/infobar_delegate.h (revision 75300) |
+++ chrome/browser/tab_contents/infobar_delegate.h (working copy) |
@@ -6,228 +6,7 @@ |
#define CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ |
#pragma once |
-#include "base/basictypes.h" |
-#include "base/string16.h" |
-#include "chrome/browser/tab_contents/navigation_controller.h" |
-#include "webkit/glue/window_open_disposition.h" |
+// TODO(jam): remove this file when all files have been converted. |
+#include "content/browser/tab_contents/infobar_delegate.h" |
-class ConfirmInfoBarDelegate; |
-class CrashedExtensionInfoBarDelegate; |
-class ExtensionInfoBarDelegate; |
-class InfoBar; |
-class LinkInfoBarDelegate; |
-class PluginInstallerInfoBarDelegate; |
-class SkBitmap; |
-class ThemeInstalledInfoBarDelegate; |
-class TranslateInfoBarDelegate; |
- |
-// An interface implemented by objects wishing to control an InfoBar. |
-// Implementing this interface is not sufficient to use an InfoBar, since it |
-// does not map to a specific InfoBar type. Instead, you must implement either |
-// LinkInfoBarDelegate or ConfirmInfoBarDelegate, or override with your own |
-// delegate for your own InfoBar variety. |
-// |
-// --- WARNING --- |
-// When creating your InfoBarDelegate subclass, it is recommended that you |
-// design it such that you instantiate a brand new delegate for every call to |
-// AddInfoBar, rather than re-using/sharing a delegate object. Otherwise, |
-// you need to consider the fact that more than one InfoBar instance can exist |
-// and reference the same delegate -- even though it is also true that we only |
-// ever fully show one infobar (they don't stack). The dual-references occur |
-// because a second InfoBar can be added while the first one is in the process |
-// of closing (the animations). This can cause problems because when the first |
-// one does finally fully close InfoBarDelegate::InfoBarClosed() is called, |
-// and the delegate is free to clean itself up or reset state, which may have |
-// fatal consequences for the InfoBar that was in the process of opening (or is |
-// now fully opened) -- it is referencing a delegate that may not even exist |
-// anymore. |
-// As such, it is generally much safer to dedicate a delegate instance to |
-// AddInfoBar! |
-class InfoBarDelegate { |
- public: |
- // The type of the infobar. It controls its appearance, such as its background |
- // color. |
- enum Type { |
- WARNING_TYPE, |
- PAGE_ACTION_TYPE, |
- }; |
- |
- virtual ~InfoBarDelegate(); |
- |
- // Called to create the InfoBar. Implementation of this method is |
- // platform-specific. |
- virtual InfoBar* CreateInfoBar() = 0; |
- |
- // Returns true if the supplied |delegate| is equal to this one. Equality is |
- // left to the implementation to define. This function is called by the |
- // TabContents when determining whether or not a delegate should be added |
- // because a matching one already exists. If this function returns true, the |
- // TabContents will not add the new delegate because it considers one to |
- // already be present. |
- virtual bool EqualsDelegate(InfoBarDelegate* delegate) const; |
- |
- // Returns true if the InfoBar should be closed automatically after the page |
- // is navigated. The default behavior is to return true if the page is |
- // navigated somewhere else or reloaded. |
- virtual bool ShouldExpire( |
- const NavigationController::LoadCommittedDetails& details) const; |
- |
- // Called when the user clicks on the close button to dismiss the infobar. |
- virtual void InfoBarDismissed(); |
- |
- // Called after the InfoBar is closed. The delegate is free to delete itself |
- // at this point. |
- virtual void InfoBarClosed(); |
- |
- // Return the icon to be shown for this InfoBar. If the returned bitmap is |
- // NULL, no icon is shown. |
- virtual SkBitmap* GetIcon() const; |
- |
- // Returns the type of the infobar. The type determines the appearance (such |
- // as background color) of the infobar. |
- virtual Type GetInfoBarType() const; |
- |
- // Type-checking downcast routines: |
- virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate(); |
- virtual CrashedExtensionInfoBarDelegate* AsCrashedExtensionInfoBarDelegate(); |
- virtual ExtensionInfoBarDelegate* AsExtensionInfoBarDelegate(); |
- virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate(); |
- virtual PluginInstallerInfoBarDelegate* AsPluginInstallerInfoBarDelegate(); |
- virtual ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate(); |
- virtual TranslateInfoBarDelegate* AsTranslateInfoBarDelegate(); |
- |
- protected: |
- // Provided to subclasses as a convenience to initialize the state of this |
- // object. If |contents| is non-NULL, its active entry's unique ID will be |
- // stored using StoreActiveEntryUniqueID automatically. |
- explicit InfoBarDelegate(TabContents* contents); |
- |
- // Store the unique id for the active entry in the specified TabContents, to |
- // be used later upon navigation to determine if this InfoBarDelegate should |
- // be expired from |contents_|. |
- void StoreActiveEntryUniqueID(TabContents* contents); |
- |
- private: |
- // The unique id of the active NavigationEntry of the TabContents that we were |
- // opened for. Used to help expire on navigations. |
- int contents_unique_id_; |
- |
- DISALLOW_COPY_AND_ASSIGN(InfoBarDelegate); |
-}; |
- |
-// An interface derived from InfoBarDelegate implemented by objects wishing to |
-// control a LinkInfoBar. |
-class LinkInfoBarDelegate : public InfoBarDelegate { |
- public: |
- // Returns the message string to be displayed in the InfoBar. |link_offset| |
- // is the position where the link should be inserted. If |link_offset| is set |
- // to string16::npos (it is by default), the link is right aligned within |
- // the InfoBar rather than being embedded in the message text. |
- virtual string16 GetMessageTextWithOffset(size_t* link_offset) const; |
- |
- // Returns the text of the link to be displayed. |
- virtual string16 GetLinkText() const = 0; |
- |
- // Called when the Link is clicked. The |disposition| specifies how the |
- // resulting document should be loaded (based on the event flags present when |
- // the link was clicked). This function returns true if the InfoBar should be |
- // closed now or false if it should remain until the user explicitly closes |
- // it. |
- virtual bool LinkClicked(WindowOpenDisposition disposition); |
- |
- protected: |
- explicit LinkInfoBarDelegate(TabContents* contents); |
- virtual ~LinkInfoBarDelegate(); |
- |
- private: |
- // InfoBarDelegate: |
- virtual InfoBar* CreateInfoBar(); |
- virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate(); |
- |
- DISALLOW_COPY_AND_ASSIGN(LinkInfoBarDelegate); |
-}; |
- |
-// An interface derived from InfoBarDelegate implemented by objects wishing to |
-// control a ConfirmInfoBar. |
-class ConfirmInfoBarDelegate : public InfoBarDelegate { |
- public: |
- enum InfoBarButton { |
- BUTTON_NONE = 0, |
- BUTTON_OK = 1 << 0, |
- BUTTON_CANCEL = 1 << 1, |
- }; |
- |
- // Returns the message string to be displayed for the InfoBar. |
- virtual string16 GetMessageText() const = 0; |
- |
- // Return the buttons to be shown for this InfoBar. |
- virtual int GetButtons() const; |
- |
- // Return the label for the specified button. The default implementation |
- // returns "OK" for the OK button and "Cancel" for the Cancel button. |
- virtual string16 GetButtonLabel(InfoBarButton button) const; |
- |
- // Return whether or not the specified button needs elevation. |
- virtual bool NeedElevation(InfoBarButton button) const; |
- |
- // Called when the OK button is pressed. If the function returns true, the |
- // InfoBarDelegate should be removed from the associated TabContents. |
- virtual bool Accept(); |
- |
- // Called when the Cancel button is pressed. If the function returns true, |
- // the InfoBarDelegate should be removed from the associated TabContents. |
- virtual bool Cancel(); |
- |
- // Returns the text of the link to be displayed, if any. Otherwise returns |
- // and empty string. |
- virtual string16 GetLinkText(); |
- |
- // Called when the Link is clicked. The |disposition| specifies how the |
- // resulting document should be loaded (based on the event flags present when |
- // the link was clicked). This function returns true if the InfoBar should be |
- // closed now or false if it should remain until the user explicitly closes |
- // it. |
- // Will only be called if GetLinkText() returns non-empty string. |
- virtual bool LinkClicked(WindowOpenDisposition disposition); |
- |
- protected: |
- explicit ConfirmInfoBarDelegate(TabContents* contents); |
- virtual ~ConfirmInfoBarDelegate(); |
- |
- private: |
- // InfoBarDelegate: |
- virtual InfoBar* CreateInfoBar(); |
- virtual bool EqualsDelegate(InfoBarDelegate* delegate) const; |
- virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate(); |
- |
- DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBarDelegate); |
-}; |
- |
-// Simple implementations for common use cases --------------------------------- |
- |
-class SimpleAlertInfoBarDelegate : public ConfirmInfoBarDelegate { |
- public: |
- SimpleAlertInfoBarDelegate(TabContents* contents, |
- SkBitmap* icon, // May be NULL. |
- const string16& message, |
- bool auto_expire); |
- |
- private: |
- virtual ~SimpleAlertInfoBarDelegate(); |
- |
- // ConfirmInfoBarDelegate: |
- virtual bool ShouldExpire( |
- const NavigationController::LoadCommittedDetails& details) const; |
- virtual void InfoBarClosed(); |
- virtual SkBitmap* GetIcon() const; |
- virtual string16 GetMessageText() const; |
- virtual int GetButtons() const; |
- |
- SkBitmap* icon_; |
- string16 message_; |
- bool auto_expire_; // Should it expire automatically on navigation? |
- |
- DISALLOW_COPY_AND_ASSIGN(SimpleAlertInfoBarDelegate); |
-}; |
- |
#endif // CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ |