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_GTK_LOCATION_BAR_VIEW_GTK_H_ | 5 #ifndef CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ |
6 #define CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ | 6 #define CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ |
7 | 7 |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
11 #include <string> | 11 #include <string> |
12 | 12 |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/scoped_ptr.h" | 14 #include "base/scoped_ptr.h" |
15 #include "base/scoped_vector.h" | 15 #include "base/scoped_vector.h" |
16 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 16 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
17 #include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" | 17 #include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" |
| 18 #include "chrome/browser/extensions/extension_context_menu_model.h" |
18 #include "chrome/browser/extensions/image_loading_tracker.h" | 19 #include "chrome/browser/extensions/image_loading_tracker.h" |
19 #include "chrome/browser/gtk/info_bubble_gtk.h" | 20 #include "chrome/browser/gtk/info_bubble_gtk.h" |
20 #include "chrome/browser/gtk/menu_gtk.h" | 21 #include "chrome/browser/gtk/menu_gtk.h" |
21 #include "chrome/browser/location_bar.h" | 22 #include "chrome/browser/location_bar.h" |
22 #include "chrome/common/content_settings_types.h" | 23 #include "chrome/common/content_settings_types.h" |
23 #include "chrome/common/notification_observer.h" | 24 #include "chrome/common/notification_observer.h" |
24 #include "chrome/common/notification_registrar.h" | 25 #include "chrome/common/notification_registrar.h" |
25 #include "chrome/common/owned_widget_gtk.h" | 26 #include "chrome/common/owned_widget_gtk.h" |
26 #include "chrome/common/page_transition_types.h" | 27 #include "chrome/common/page_transition_types.h" |
27 #include "third_party/skia/include/core/SkBitmap.h" | 28 #include "third_party/skia/include/core/SkBitmap.h" |
28 #include "webkit/glue/window_open_disposition.h" | 29 #include "webkit/glue/window_open_disposition.h" |
29 | 30 |
30 class AutocompleteEditViewGtk; | 31 class AutocompleteEditViewGtk; |
31 class BubblePositioner; | 32 class BubblePositioner; |
32 class Browser; | 33 class Browser; |
33 class CommandUpdater; | 34 class CommandUpdater; |
34 class ContentSettingImageModel; | 35 class ContentSettingImageModel; |
35 class ContentSettingBubbleGtk; | 36 class ContentSettingBubbleGtk; |
36 class ExtensionAction; | 37 class ExtensionAction; |
37 class ExtensionActionContextMenuModel; | |
38 class GtkThemeProvider; | 38 class GtkThemeProvider; |
39 class Profile; | 39 class Profile; |
40 class SkBitmap; | 40 class SkBitmap; |
41 class TabContents; | 41 class TabContents; |
42 class ToolbarModel; | 42 class ToolbarModel; |
43 | 43 |
44 class LocationBarViewGtk : public AutocompleteEditController, | 44 class LocationBarViewGtk : public AutocompleteEditController, |
45 public LocationBar, | 45 public LocationBar, |
46 public LocationBarTesting, | 46 public LocationBarTesting, |
47 public NotificationObserver { | 47 public NotificationObserver { |
48 public: | 48 public: |
49 LocationBarViewGtk(CommandUpdater* command_updater, | 49 LocationBarViewGtk(const BubblePositioner* bubble_positioner, |
50 ToolbarModel* toolbar_model, | |
51 const BubblePositioner* bubble_positioner, | |
52 Browser* browser_); | 50 Browser* browser_); |
53 virtual ~LocationBarViewGtk(); | 51 virtual ~LocationBarViewGtk(); |
54 | 52 |
55 void Init(bool popup_window_mode); | 53 void Init(bool popup_window_mode); |
56 | 54 |
57 void SetProfile(Profile* profile); | 55 void SetProfile(Profile* profile); |
58 | 56 |
59 // Returns the widget the caller should host. You must call Init() first. | 57 // Returns the widget the caller should host. You must call Init() first. |
60 GtkWidget* widget() { return hbox_.get(); } | 58 GtkWidget* widget() { return hbox_.get(); } |
61 | 59 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 | 162 |
165 // The currently active profile. | 163 // The currently active profile. |
166 Profile* profile_; | 164 Profile* profile_; |
167 | 165 |
168 // The currently shown info bubble if any. | 166 // The currently shown info bubble if any. |
169 ContentSettingBubbleGtk* info_bubble_; | 167 ContentSettingBubbleGtk* info_bubble_; |
170 | 168 |
171 DISALLOW_COPY_AND_ASSIGN(ContentSettingImageViewGtk); | 169 DISALLOW_COPY_AND_ASSIGN(ContentSettingImageViewGtk); |
172 }; | 170 }; |
173 | 171 |
174 class PageActionViewGtk : public ImageLoadingTracker::Observer { | 172 class PageActionViewGtk : public ImageLoadingTracker::Observer, |
| 173 public ExtensionContextMenuModel::PopupDelegate { |
175 public: | 174 public: |
176 PageActionViewGtk( | 175 PageActionViewGtk( |
177 LocationBarViewGtk* owner, Profile* profile, | 176 LocationBarViewGtk* owner, Profile* profile, |
178 ExtensionAction* page_action); | 177 ExtensionAction* page_action); |
179 virtual ~PageActionViewGtk(); | 178 virtual ~PageActionViewGtk(); |
180 | 179 |
181 GtkWidget* widget() { return event_box_.get(); } | 180 GtkWidget* widget() { return event_box_.get(); } |
182 | 181 |
183 ExtensionAction* page_action() { return page_action_; } | 182 ExtensionAction* page_action() { return page_action_; } |
184 | 183 |
185 void set_preview_enabled(bool preview_enabled) { | 184 void set_preview_enabled(bool preview_enabled) { |
186 preview_enabled_ = preview_enabled; | 185 preview_enabled_ = preview_enabled; |
187 } | 186 } |
188 | 187 |
189 bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } | 188 bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } |
190 | 189 |
191 // Called to notify the PageAction that it should determine whether to be | 190 // Called to notify the PageAction that it should determine whether to be |
192 // visible or hidden. |contents| is the TabContents that is active, |url| | 191 // visible or hidden. |contents| is the TabContents that is active, |url| |
193 // is the current page URL. | 192 // is the current page URL. |
194 void UpdateVisibility(TabContents* contents, GURL url); | 193 void UpdateVisibility(TabContents* contents, GURL url); |
195 | 194 |
196 // A callback from ImageLoadingTracker for when the image has loaded. | 195 // A callback from ImageLoadingTracker for when the image has loaded. |
197 virtual void OnImageLoaded(SkBitmap* image, size_t index); | 196 virtual void OnImageLoaded(SkBitmap* image, size_t index); |
198 | 197 |
199 // Simulate left mouse click on the page action button. | 198 // Simulate left mouse click on the page action button. |
200 void TestActivatePageAction(); | 199 void TestActivatePageAction(); |
201 | 200 |
| 201 // Overridden from ExtensionContextMenuModel::PopupDelegate: |
| 202 virtual void InspectPopup(ExtensionAction* action); |
| 203 |
202 private: | 204 private: |
203 static gboolean OnButtonPressedThunk(GtkWidget* sender, | 205 static gboolean OnButtonPressedThunk(GtkWidget* sender, |
204 GdkEvent* event, | 206 GdkEvent* event, |
205 PageActionViewGtk* page_action_view) { | 207 PageActionViewGtk* page_action_view) { |
206 return page_action_view->OnButtonPressed(sender, event); | 208 return page_action_view->OnButtonPressed(sender, event); |
207 } | 209 } |
208 gboolean OnButtonPressed(GtkWidget* sender, GdkEvent* event); | 210 gboolean OnButtonPressed(GtkWidget* sender, GdkEvent* event); |
209 | 211 |
210 static gboolean OnExposeEventThunk(GtkWidget* widget, | 212 static gboolean OnExposeEventThunk(GtkWidget* widget, |
211 GdkEventExpose* event, | 213 GdkEventExpose* event, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 249 |
248 // The URL we are currently showing the icon for. | 250 // The URL we are currently showing the icon for. |
249 GURL current_url_; | 251 GURL current_url_; |
250 | 252 |
251 // This is used for post-install visual feedback. The page_action icon | 253 // This is used for post-install visual feedback. The page_action icon |
252 // is briefly shown even if it hasn't been enabled by its extension. | 254 // is briefly shown even if it hasn't been enabled by its extension. |
253 bool preview_enabled_; | 255 bool preview_enabled_; |
254 | 256 |
255 // The context menu view and model for this extension action. | 257 // The context menu view and model for this extension action. |
256 scoped_ptr<MenuGtk> context_menu_; | 258 scoped_ptr<MenuGtk> context_menu_; |
257 scoped_ptr<ExtensionActionContextMenuModel> context_menu_model_; | 259 scoped_ptr<ExtensionContextMenuModel> context_menu_model_; |
258 | 260 |
259 DISALLOW_COPY_AND_ASSIGN(PageActionViewGtk); | 261 DISALLOW_COPY_AND_ASSIGN(PageActionViewGtk); |
260 }; | 262 }; |
261 friend class PageActionViewGtk; | 263 friend class PageActionViewGtk; |
262 | 264 |
263 static gboolean HandleExposeThunk(GtkWidget* widget, GdkEventExpose* event, | 265 static gboolean HandleExposeThunk(GtkWidget* widget, GdkEventExpose* event, |
264 gpointer userdata) { | 266 gpointer userdata) { |
265 return reinterpret_cast<LocationBarViewGtk*>(userdata)-> | 267 return reinterpret_cast<LocationBarViewGtk*>(userdata)-> |
266 HandleExpose(widget, event); | 268 HandleExpose(widget, event); |
267 } | 269 } |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 // Indicate if |tab_to_search_hint_| should be shown. | 379 // Indicate if |tab_to_search_hint_| should be shown. |
378 bool show_keyword_hint_; | 380 bool show_keyword_hint_; |
379 | 381 |
380 // Indicate if |type_to_search_hint_| should be shown. | 382 // Indicate if |type_to_search_hint_| should be shown. |
381 bool show_search_hint_; | 383 bool show_search_hint_; |
382 | 384 |
383 DISALLOW_COPY_AND_ASSIGN(LocationBarViewGtk); | 385 DISALLOW_COPY_AND_ASSIGN(LocationBarViewGtk); |
384 }; | 386 }; |
385 | 387 |
386 #endif // CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ | 388 #endif // CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ |
OLD | NEW |