OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ | 5 #ifndef CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ |
6 #define CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ | 6 #define CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/string16.h" | 10 #include "base/string16.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 WARNING_TYPE, | 51 WARNING_TYPE, |
52 PAGE_ACTION_TYPE, | 52 PAGE_ACTION_TYPE, |
53 }; | 53 }; |
54 | 54 |
55 // Returns true if the supplied |delegate| is equal to this one. Equality is | 55 // Returns true if the supplied |delegate| is equal to this one. Equality is |
56 // left to the implementation to define. This function is called by the | 56 // left to the implementation to define. This function is called by the |
57 // TabContents when determining whether or not a delegate should be added | 57 // TabContents when determining whether or not a delegate should be added |
58 // because a matching one already exists. If this function returns true, the | 58 // because a matching one already exists. If this function returns true, the |
59 // TabContents will not add the new delegate because it considers one to | 59 // TabContents will not add the new delegate because it considers one to |
60 // already be present. | 60 // already be present. |
61 virtual bool EqualsDelegate(InfoBarDelegate* delegate) const { | 61 virtual bool EqualsDelegate(InfoBarDelegate* delegate) const; |
62 return false; | |
63 } | |
64 | 62 |
65 // Returns true if the InfoBar should be closed automatically after the page | 63 // Returns true if the InfoBar should be closed automatically after the page |
66 // is navigated. The default behavior is to return true if the page is | 64 // is navigated. The default behavior is to return true if the page is |
67 // navigated somewhere else or reloaded. | 65 // navigated somewhere else or reloaded. |
68 virtual bool ShouldExpire( | 66 virtual bool ShouldExpire( |
69 const NavigationController::LoadCommittedDetails& details) const; | 67 const NavigationController::LoadCommittedDetails& details) const; |
70 | 68 |
71 // Called when the user clicks on the close button to dismiss the infobar. | 69 // Called when the user clicks on the close button to dismiss the infobar. |
72 virtual void InfoBarDismissed() {} | 70 virtual void InfoBarDismissed() {} |
73 | 71 |
74 // Called after the InfoBar is closed. The delegate is free to delete itself | 72 // Called after the InfoBar is closed. The delegate is free to delete itself |
75 // at this point. | 73 // at this point. |
76 virtual void InfoBarClosed() {} | 74 virtual void InfoBarClosed() {} |
77 | 75 |
78 // Called to create the InfoBar. Implementation of this method is | 76 // Called to create the InfoBar. Implementation of this method is |
79 // platform-specific. | 77 // platform-specific. |
80 virtual InfoBar* CreateInfoBar() = 0; | 78 virtual InfoBar* CreateInfoBar() = 0; |
81 | 79 |
82 // Return the icon to be shown for this InfoBar. If the returned bitmap is | 80 // Return the icon to be shown for this InfoBar. If the returned bitmap is |
83 // NULL, no icon is shown. | 81 // NULL, no icon is shown. |
84 virtual SkBitmap* GetIcon() const { return NULL; } | 82 virtual SkBitmap* GetIcon() const; |
85 | 83 |
86 // Returns a pointer to the AlertInfoBarDelegate interface, if implemented. | 84 // Returns a pointer to the AlertInfoBarDelegate interface, if implemented. |
87 virtual AlertInfoBarDelegate* AsAlertInfoBarDelegate() { | 85 virtual AlertInfoBarDelegate* AsAlertInfoBarDelegate(); |
88 return NULL; | |
89 } | |
90 | 86 |
91 // Returns a pointer to the LinkInfoBarDelegate interface, if implemented. | 87 // Returns a pointer to the LinkInfoBarDelegate interface, if implemented. |
92 virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate() { | 88 virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate(); |
93 return NULL; | |
94 } | |
95 | 89 |
96 // Returns a pointer to the ConfirmInfoBarDelegate interface, if implemented. | 90 // Returns a pointer to the ConfirmInfoBarDelegate interface, if implemented. |
97 virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate() { | 91 virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate(); |
98 return NULL; | |
99 } | |
100 | 92 |
101 // Returns a pointer to the ThemeInstalledInfoBarDelegate interface, if | 93 // Returns a pointer to the ThemeInstalledInfoBarDelegate interface, if |
102 // implemented. | 94 // implemented. |
103 virtual ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate() { | 95 virtual ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate(); |
104 return NULL; | |
105 } | |
106 | 96 |
107 // Returns a pointer to the TranslateInfoBarDelegate interface, if | 97 // Returns a pointer to the TranslateInfoBarDelegate interface, if |
108 // implemented. | 98 // implemented. |
109 virtual TranslateInfoBarDelegate* AsTranslateInfoBarDelegate() { | 99 virtual TranslateInfoBarDelegate* AsTranslateInfoBarDelegate(); |
110 return NULL; | |
111 } | |
112 | 100 |
113 // Returns a pointer to the ExtensionInfoBarDelegate interface, if | 101 // Returns a pointer to the ExtensionInfoBarDelegate interface, if |
114 // implemented. | 102 // implemented. |
115 virtual ExtensionInfoBarDelegate* AsExtensionInfoBarDelegate() { | 103 virtual ExtensionInfoBarDelegate* AsExtensionInfoBarDelegate(); |
116 return NULL; | |
117 } | |
118 | 104 |
119 // Returns a pointer to the CrashedExtensionInfoBarDelegate interface, if | 105 // Returns a pointer to the CrashedExtensionInfoBarDelegate interface, if |
120 // implemented. | 106 // implemented. |
121 virtual CrashedExtensionInfoBarDelegate* AsCrashedExtensionInfoBarDelegate() { | 107 virtual CrashedExtensionInfoBarDelegate* AsCrashedExtensionInfoBarDelegate(); |
122 return NULL; | |
123 } | |
124 | 108 |
125 // Returns the type of the infobar. The type determines the appearance (such | 109 // Returns the type of the infobar. The type determines the appearance (such |
126 // as background color) of the infobar. | 110 // as background color) of the infobar. |
127 virtual Type GetInfoBarType() { | 111 virtual Type GetInfoBarType(); |
128 return WARNING_TYPE; | |
129 } | |
130 | 112 |
131 protected: | 113 protected: |
132 // Provided to subclasses as a convenience to initialize the state of this | 114 // Provided to subclasses as a convenience to initialize the state of this |
133 // object. If |contents| is non-NULL, its active entry's unique ID will be | 115 // object. If |contents| is non-NULL, its active entry's unique ID will be |
134 // stored using StoreActiveEntryUniqueID automatically. | 116 // stored using StoreActiveEntryUniqueID automatically. |
135 explicit InfoBarDelegate(TabContents* contents); | 117 explicit InfoBarDelegate(TabContents* contents); |
136 | 118 |
137 virtual ~InfoBarDelegate() { } | 119 virtual ~InfoBarDelegate() { } |
138 | 120 |
139 // Store the unique id for the active entry in the specified TabContents, to | 121 // Store the unique id for the active entry in the specified TabContents, to |
(...skipping 10 matching lines...) Expand all Loading... |
150 }; | 132 }; |
151 | 133 |
152 // An interface derived from InfoBarDelegate implemented by objects wishing to | 134 // An interface derived from InfoBarDelegate implemented by objects wishing to |
153 // control an AlertInfoBar. | 135 // control an AlertInfoBar. |
154 class AlertInfoBarDelegate : public InfoBarDelegate { | 136 class AlertInfoBarDelegate : public InfoBarDelegate { |
155 public: | 137 public: |
156 // Returns the message string to be displayed for the InfoBar. | 138 // Returns the message string to be displayed for the InfoBar. |
157 virtual string16 GetMessageText() const = 0; | 139 virtual string16 GetMessageText() const = 0; |
158 | 140 |
159 // Overridden from InfoBarDelegate. | 141 // Overridden from InfoBarDelegate. |
160 virtual SkBitmap* GetIcon() const { return NULL; } | 142 virtual SkBitmap* GetIcon() const; |
161 | 143 |
162 // Overridden from InfoBarDelegate: | 144 // Overridden from InfoBarDelegate: |
163 virtual bool EqualsDelegate(InfoBarDelegate* delegate) const; | 145 virtual bool EqualsDelegate(InfoBarDelegate* delegate) const; |
164 virtual InfoBar* CreateInfoBar(); | 146 virtual InfoBar* CreateInfoBar(); |
165 virtual AlertInfoBarDelegate* AsAlertInfoBarDelegate() { return this; } | 147 virtual AlertInfoBarDelegate* AsAlertInfoBarDelegate(); |
166 | 148 |
167 protected: | 149 protected: |
168 explicit AlertInfoBarDelegate(TabContents* contents); | 150 explicit AlertInfoBarDelegate(TabContents* contents); |
169 | 151 |
170 DISALLOW_COPY_AND_ASSIGN(AlertInfoBarDelegate); | 152 DISALLOW_COPY_AND_ASSIGN(AlertInfoBarDelegate); |
171 }; | 153 }; |
172 | 154 |
173 // An interface derived from InfoBarDelegate implemented by objects wishing to | 155 // An interface derived from InfoBarDelegate implemented by objects wishing to |
174 // control a LinkInfoBar. | 156 // control a LinkInfoBar. |
175 class LinkInfoBarDelegate : public InfoBarDelegate { | 157 class LinkInfoBarDelegate : public InfoBarDelegate { |
176 public: | 158 public: |
177 // Returns the message string to be displayed in the InfoBar. |link_offset| | 159 // Returns the message string to be displayed in the InfoBar. |link_offset| |
178 // is the position where the link should be inserted. If |link_offset| is set | 160 // is the position where the link should be inserted. If |link_offset| is set |
179 // to string16::npos (it is by default), the link is right aligned within | 161 // to string16::npos (it is by default), the link is right aligned within |
180 // the InfoBar rather than being embedded in the message text. | 162 // the InfoBar rather than being embedded in the message text. |
181 virtual string16 GetMessageTextWithOffset(size_t* link_offset) const { | 163 virtual string16 GetMessageTextWithOffset(size_t* link_offset) const; |
182 *link_offset = string16::npos; | |
183 return string16(); | |
184 } | |
185 | 164 |
186 // Returns the text of the link to be displayed. | 165 // Returns the text of the link to be displayed. |
187 virtual string16 GetLinkText() const = 0; | 166 virtual string16 GetLinkText() const = 0; |
188 | 167 |
189 // Overridden from InfoBarDelegate. | 168 // Overridden from InfoBarDelegate. |
190 virtual SkBitmap* GetIcon() const { return NULL; } | 169 virtual SkBitmap* GetIcon() const; |
191 | 170 |
192 // Called when the Link is clicked. The |disposition| specifies how the | 171 // Called when the Link is clicked. The |disposition| specifies how the |
193 // resulting document should be loaded (based on the event flags present when | 172 // resulting document should be loaded (based on the event flags present when |
194 // the link was clicked). This function returns true if the InfoBar should be | 173 // the link was clicked). This function returns true if the InfoBar should be |
195 // closed now or false if it should remain until the user explicitly closes | 174 // closed now or false if it should remain until the user explicitly closes |
196 // it. | 175 // it. |
197 virtual bool LinkClicked(WindowOpenDisposition disposition) { | 176 virtual bool LinkClicked(WindowOpenDisposition disposition); |
198 return true; | |
199 } | |
200 | 177 |
201 // Overridden from InfoBarDelegate: | 178 // Overridden from InfoBarDelegate: |
202 virtual InfoBar* CreateInfoBar(); | 179 virtual InfoBar* CreateInfoBar(); |
203 virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate() { | 180 virtual LinkInfoBarDelegate* AsLinkInfoBarDelegate(); |
204 return this; | |
205 } | |
206 | 181 |
207 protected: | 182 protected: |
208 explicit LinkInfoBarDelegate(TabContents* contents); | 183 explicit LinkInfoBarDelegate(TabContents* contents); |
209 | 184 |
210 DISALLOW_COPY_AND_ASSIGN(LinkInfoBarDelegate); | 185 DISALLOW_COPY_AND_ASSIGN(LinkInfoBarDelegate); |
211 }; | 186 }; |
212 | 187 |
213 // An interface derived from InfoBarDelegate implemented by objects wishing to | 188 // An interface derived from InfoBarDelegate implemented by objects wishing to |
214 // control a ConfirmInfoBar. | 189 // control a ConfirmInfoBar. |
215 class ConfirmInfoBarDelegate : public AlertInfoBarDelegate { | 190 class ConfirmInfoBarDelegate : public AlertInfoBarDelegate { |
216 public: | 191 public: |
217 enum InfoBarButton { | 192 enum InfoBarButton { |
218 BUTTON_NONE = 0, | 193 BUTTON_NONE = 0, |
219 BUTTON_OK = 1, | 194 BUTTON_OK = 1, |
220 BUTTON_CANCEL = 2, | 195 BUTTON_CANCEL = 2, |
221 // Specifies that the OK button should be rendered like a default button. | 196 // Specifies that the OK button should be rendered like a default button. |
222 BUTTON_OK_DEFAULT = 4 | 197 BUTTON_OK_DEFAULT = 4 |
223 }; | 198 }; |
224 | 199 |
225 // Return the buttons to be shown for this InfoBar. | 200 // Return the buttons to be shown for this InfoBar. |
226 virtual int GetButtons() const { | 201 virtual int GetButtons() const; |
227 return BUTTON_NONE; | |
228 } | |
229 | 202 |
230 // Return the label for the specified button. The default implementation | 203 // Return the label for the specified button. The default implementation |
231 // returns "OK" for the OK button and "Cancel" for the Cancel button. | 204 // returns "OK" for the OK button and "Cancel" for the Cancel button. |
232 virtual string16 GetButtonLabel(InfoBarButton button) const; | 205 virtual string16 GetButtonLabel(InfoBarButton button) const; |
233 | 206 |
234 // Return whether or not the specified button needs elevation. | 207 // Return whether or not the specified button needs elevation. |
235 virtual bool NeedElevation(InfoBarButton button) const { return false; } | 208 virtual bool NeedElevation(InfoBarButton button) const; |
236 | 209 |
237 // Called when the OK button is pressed. If the function returns true, the | 210 // Called when the OK button is pressed. If the function returns true, the |
238 // InfoBarDelegate should be removed from the associated TabContents. | 211 // InfoBarDelegate should be removed from the associated TabContents. |
239 virtual bool Accept() { return true; } | 212 virtual bool Accept(); |
240 | 213 |
241 // Called when the Cancel button is pressed. If the function returns true, | 214 // Called when the Cancel button is pressed. If the function returns true, |
242 // the InfoBarDelegate should be removed from the associated TabContents. | 215 // the InfoBarDelegate should be removed from the associated TabContents. |
243 virtual bool Cancel() { return true; } | 216 virtual bool Cancel(); |
244 | 217 |
245 // Returns the text of the link to be displayed, if any. Otherwise returns | 218 // Returns the text of the link to be displayed, if any. Otherwise returns |
246 // and empty string. | 219 // and empty string. |
247 virtual string16 GetLinkText() { | 220 virtual string16 GetLinkText(); |
248 return string16(); | |
249 } | |
250 | 221 |
251 // Called when the Link is clicked. The |disposition| specifies how the | 222 // Called when the Link is clicked. The |disposition| specifies how the |
252 // resulting document should be loaded (based on the event flags present when | 223 // resulting document should be loaded (based on the event flags present when |
253 // the link was clicked). This function returns true if the InfoBar should be | 224 // the link was clicked). This function returns true if the InfoBar should be |
254 // closed now or false if it should remain until the user explicitly closes | 225 // closed now or false if it should remain until the user explicitly closes |
255 // it. | 226 // it. |
256 // Will only be called if GetLinkText() returns non-empty string. | 227 // Will only be called if GetLinkText() returns non-empty string. |
257 virtual bool LinkClicked(WindowOpenDisposition disposition) { | 228 virtual bool LinkClicked(WindowOpenDisposition disposition); |
258 return true; | |
259 } | |
260 | 229 |
261 // Overridden from InfoBarDelegate: | 230 // Overridden from InfoBarDelegate: |
262 virtual InfoBar* CreateInfoBar(); | 231 virtual InfoBar* CreateInfoBar(); |
263 virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate() { | 232 virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate(); |
264 return this; | |
265 } | |
266 | 233 |
267 protected: | 234 protected: |
268 explicit ConfirmInfoBarDelegate(TabContents* contents); | 235 explicit ConfirmInfoBarDelegate(TabContents* contents); |
269 | 236 |
270 DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBarDelegate); | 237 DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBarDelegate); |
271 }; | 238 }; |
272 | 239 |
273 // Simple implementations for common use cases --------------------------------- | 240 // Simple implementations for common use cases --------------------------------- |
274 | 241 |
275 class SimpleAlertInfoBarDelegate : public AlertInfoBarDelegate { | 242 class SimpleAlertInfoBarDelegate : public AlertInfoBarDelegate { |
(...skipping 13 matching lines...) Expand all Loading... |
289 | 256 |
290 private: | 257 private: |
291 string16 message_; | 258 string16 message_; |
292 SkBitmap* icon_; | 259 SkBitmap* icon_; |
293 bool auto_expire_; // Should it expire automatically on navigation? | 260 bool auto_expire_; // Should it expire automatically on navigation? |
294 | 261 |
295 DISALLOW_COPY_AND_ASSIGN(SimpleAlertInfoBarDelegate); | 262 DISALLOW_COPY_AND_ASSIGN(SimpleAlertInfoBarDelegate); |
296 }; | 263 }; |
297 | 264 |
298 #endif // CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ | 265 #endif // CHROME_BROWSER_TAB_CONTENTS_INFOBAR_DELEGATE_H_ |
OLD | NEW |