location_bar_view_gtk.h revision dc0f95d653279beabeb9817299e2902918ba123e
172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef CHROME_BROWSER_UI_GTK_LOCATION_BAR_VIEW_GTK_H_ 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define CHROME_BROWSER_UI_GTK_LOCATION_BAR_VIEW_GTK_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <gtk/gtk.h> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <map> 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/scoped_ptr.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/scoped_vector.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autocomplete/autocomplete_edit.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/extension_context_menu_model.h" 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/image_loading_tracker.h" 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/first_run/first_run.h" 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/info_bubble_gtk.h" 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/menu_gtk.h" 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/owned_widget_gtk.h" 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/omnibox/location_bar.h" 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/content_settings_types.h" 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/page_transition_types.h" 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/common/notification_observer.h" 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/common/notification_registrar.h" 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "third_party/skia/include/core/SkBitmap.h" 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "ui/base/animation/slide_animation.h" 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/gtk/gtk_signal.h" 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/glue/window_open_disposition.h" 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutocompleteEditViewGtk; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Browser; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass CommandUpdater; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContentSettingImageModel; 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContentSettingBubbleGtk; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionAction; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GtkThemeProvider; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SkBitmap; 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TabContents; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ToolbarModel; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocationBarViewGtk : public AutocompleteEditController, 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public LocationBar, 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public LocationBarTesting, 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public NotificationObserver { 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit LocationBarViewGtk(Browser* browser); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~LocationBarViewGtk(); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Init(bool popup_window_mode); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetProfile(Profile* profile); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns the widget the caller should host. You must call Init() first. 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* widget() { return hbox_.get(); } 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Returns the widget the page info bubble should point to. 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GtkWidget* location_icon_widget() const { return location_icon_image_; } 643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the widget the extension installed bubble should point to. 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch GtkWidget* location_entry_widget() const { return entry_box_; } 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns the current TabContents. 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabContents* GetTabContents() const; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets |preview_enabled| for the PageActionViewGtk associated with this 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |page_action|. If |preview_enabled| is true, the view will display the 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // page action's icon even though it has not been activated by the extension. 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This is used by the ExtensionInstalledBubbleGtk to preview what the icon 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // will look like for the user upon installation of the extension. 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetPreviewEnabledPageAction(ExtensionAction *page_action, 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool preview_enabled); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Retrieves the GtkWidget which is associated with PageActionView 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // corresponding to |page_action|. 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* GetPageActionWidget(ExtensionAction* page_action); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Updates the location bar. We also reset the bar's permanent text and 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // security style, and, if |tab_for_state_restoring| is non-NULL, also 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // restore saved state that the tab holds. 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Update(const TabContents* tab_for_state_restoring); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Show the bookmark bubble. 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void ShowStarBubble(const GURL& url, bool newly_boomkarked); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Set the starred state of the bookmark star. 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetStarred(bool starred); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Implement the AutocompleteEditController interface. 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnAutocompleteAccept(const GURL& url, 96dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen WindowOpenDisposition disposition, 97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen PageTransition::Type transition, 98dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const GURL& alternate_nav_url) OVERRIDE; 99dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnChanged() OVERRIDE; 100dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnSelectionBoundsChanged() OVERRIDE; 101dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnKillFocus() OVERRIDE; 102dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnSetFocus() OVERRIDE; 103dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnInputInProgress(bool in_progress) OVERRIDE; 104dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual SkBitmap GetFavIcon() const OVERRIDE; 105dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual string16 GetTitle() const OVERRIDE; 106dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual InstantController* GetInstant() OVERRIDE; 107dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual TabContentsWrapper* GetTabContentsWrapper() OVERRIDE; 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Implement the LocationBar interface. 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ShowFirstRunBubble(FirstRun::BubbleType bubble_type); 1113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void SetSuggestedText(const string16& text); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual std::wstring GetInputString() const; 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual WindowOpenDisposition GetWindowOpenDisposition() const; 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual PageTransition::Type GetPageTransition() const; 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void AcceptInput(); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void FocusLocation(bool select_all); 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void FocusSearch(); 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void UpdateContentSettingsIcons(); 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void UpdatePageActions(); 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void InvalidatePageActions(); 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SaveStateToContents(TabContents* contents); 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Revert(); 1233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual const AutocompleteEditView* location_entry() const; 1243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual AutocompleteEditView* location_entry(); 1253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual LocationBarTesting* GetLocationBarForTesting(); 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Implement the LocationBarTesting interface. 12821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual int PageActionCount(); 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual int PageActionVisibleCount(); 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ExtensionAction* GetPageAction(size_t index); 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ExtensionAction* GetVisiblePageAction(size_t index); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TestPageActionPressed(size_t index); 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Implement the NotificationObserver interface. 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Observe(NotificationType type, 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const NotificationSource& source, 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const NotificationDetails& details); 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Edit background color. 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static const GdkColor kBackgroundColor; 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 143dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen class ContentSettingImageViewGtk : public InfoBubbleGtkDelegate, 144dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public ui::AnimationDelegate { 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingImageViewGtk(ContentSettingsType content_type, 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const LocationBarViewGtk* parent, 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Profile* profile); 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~ContentSettingImageViewGtk(); 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 151dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GtkWidget* widget() { return alignment_.get(); } 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_profile(Profile* profile) { profile_ = profile; } 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } 156201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch void UpdateFromTabContents(TabContents* tab_contents); 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 158dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Overridden from ui::AnimationDelegate: 159dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void AnimationProgressed(const ui::Animation* animation); 160dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void AnimationEnded(const ui::Animation* animation); 161dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void AnimationCanceled(const ui::Animation* animation); 162dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 164dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Start the process of showing the label. 165dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void StartAnimating(); 166dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 167dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Slide the label shut. 168dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void CloseAnimation(); 169dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(ContentSettingImageViewGtk, gboolean, OnButtonPressed, 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkEvent*); 172dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CHROMEGTK_CALLBACK_1(ContentSettingImageViewGtk, gboolean, OnExpose, 173dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GdkEventExpose*); 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // InfoBubbleDelegate overrides: 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void InfoBubbleClosing(InfoBubbleGtk* info_bubble, 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool closed_by_escape); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ContentSettingImageModel> content_setting_image_model_; 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The widgets for this content settings view. 182dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen OwnedWidgetGtk alignment_; 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk event_box_; 184dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GtkWidget* hbox_; 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk image_; 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 187dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Explanatory text ("popup blocked"). 188dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen OwnedWidgetGtk label_; 189dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The owning LocationBarViewGtk. 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const LocationBarViewGtk* parent_; 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The currently active profile. 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Profile* profile_; 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The currently shown info bubble if any. 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ContentSettingBubbleGtk* info_bubble_; 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 199dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // When we show explanatory text, we slide it in/out. 200dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ui::SlideAnimation animation_; 201dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 202dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // The label's default requisition (cached so we can animate accordingly). 203dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GtkRequisition label_req_; 204dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 205dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ScopedRunnableMethodFactory<ContentSettingImageViewGtk> method_factory_; 206dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(ContentSettingImageViewGtk); 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch class PageActionViewGtk : public ImageLoadingTracker::Observer, 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public ExtensionContextMenuModel::PopupDelegate { 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PageActionViewGtk( 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LocationBarViewGtk* owner, Profile* profile, 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionAction* page_action); 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~PageActionViewGtk(); 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* widget() { return event_box_.get(); } 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionAction* page_action() { return page_action_; } 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_preview_enabled(bool preview_enabled) { 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch preview_enabled_ = preview_enabled; 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Called to notify the PageAction that it should determine whether to be 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // visible or hidden. |contents| is the TabContents that is active, |url| 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // is the current page URL. 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdateVisibility(TabContents* contents, GURL url); 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // A callback from ImageLoadingTracker for when the image has loaded. 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnImageLoaded( 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkBitmap* image, ExtensionResource resource, int index); 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Simulate left mouse click on the page action button. 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void TestActivatePageAction(); 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Overridden from ExtensionContextMenuModel::PopupDelegate: 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void InspectPopup(ExtensionAction* action); 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Show the popup for this page action. If |devtools| is true, show it 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // with a debugger window attached. Returns true if a popup was shown. 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool ShowPopup(bool devtools); 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(PageActionViewGtk, gboolean, OnButtonPressed, 24972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen GdkEventButton*); 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(PageActionViewGtk, gboolean, OnExposeEvent, 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkEventExpose*); 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The location bar view that owns us. 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LocationBarViewGtk* owner_; 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The current profile (not owned by us). 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Profile* profile_; 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The PageAction that this view represents. The PageAction is not owned by 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // us, it resides in the extension of this particular profile. 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionAction* page_action_; 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // A cache of all the different icon paths associated with this page action. 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef std::map<std::string, GdkPixbuf*> PixbufMap; 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PixbufMap pixbufs_; 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // A cache of the last dynamically generated bitmap and the pixbuf that 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // corresponds to it. We keep track of both so we can free old pixbufs as 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // their icons are replaced. 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkBitmap last_icon_skbitmap_; 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkPixbuf* last_icon_pixbuf_; 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The object that is waiting for the image loading to complete 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // asynchronously. 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ImageLoadingTracker tracker_; 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The widgets for this page action. 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk event_box_; 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk image_; 280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The tab id we are currently showing the icon for. 282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int current_tab_id_; 283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The URL we are currently showing the icon for. 285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GURL current_url_; 286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This is used for post-install visual feedback. The page_action icon 288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // is briefly shown even if it hasn't been enabled by its extension. 289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool preview_enabled_; 290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The context menu view and model for this extension action. 292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<MenuGtk> context_menu_; 293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<ExtensionContextMenuModel> context_menu_model_; 294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(PageActionViewGtk); 296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch friend class PageActionViewGtk; 298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Creates, initializes, and packs the location icon, EV certificate name, 300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // and optional border. 301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void BuildSiteTypeArea(); 302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Enable or disable the location icon/EV certificate as a drag source for 304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the URL. 305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetSiteTypeDragSource(); 306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* site_type_area() { return site_type_alignment_; } 308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, HandleExpose, 310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkEventExpose*); 311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, OnIconReleased, 312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkEventButton*); 313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_4(LocationBarViewGtk, void, OnIconDragData, 314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkDragContext*, GtkSelectionData*, guint, guint); 315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnIconDragBegin, 316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkDragContext*); 317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnIconDragEnd, 318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkDragContext*); 319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnHboxSizeAllocate, 320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkAllocation*); 321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnEntryBoxSizeAllocate, 322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkAllocation*); 323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, OnStarButtonPress, 324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GdkEventButton*); 325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Updates the site type area: changes the icon and shows/hides the EV 327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // certificate information. 328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdateSiteTypeArea(); 329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Updates the maximum size of the EV certificate label. 331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdateEVCertificateLabelSize(); 332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets the text that should be displayed in the info label and its associated 334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // tooltip text. Call with an empty string if the info label should be 335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // hidden. 336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetInfoText(); 337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Set the keyword text for the Search BLAH: keyword box. 33972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void SetKeywordLabel(const string16& keyword); 340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Set the keyword text for the "Press tab to search BLAH" hint box. 34272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void SetKeywordHintLabel(const string16& keyword); 343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void ShowFirstRunBubbleInternal(FirstRun::BubbleType bubble_type); 345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Show or hide |tab_to_search_box_| and |tab_to_search_hint_| according to 347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the value of |show_selected_keyword_|, |show_keyword_hint_|, and the 348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // available horizontal space in the location bar. 349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void AdjustChildrenVisibility(); 350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Build the star icon. 352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateStarButton(); 353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Update the star icon after it is toggled or the theme changes. 355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdateStarIcon(); 356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Returns true if we should only show the URL and none of the extras like 358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the star button or page actions. 359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool ShouldOnlyShowLocation(); 360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The outermost widget we want to be hosted. 362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk hbox_; 363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Star button. 365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk star_; 366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* star_image_; 367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool starred_; 368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // An icon to the left of the address bar. 370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* site_type_alignment_; 371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* site_type_event_box_; 372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* location_icon_image_; 373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* drag_icon_; 374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool enable_location_drag_; 375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // TODO(pkasting): Split this label off and move the rest of the items to the 376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // left of the address bar. 377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* security_info_label_; 378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Content setting icons. 380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk content_setting_hbox_; 381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedVector<ContentSettingImageViewGtk> content_setting_views_; 382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Extension page action icons. 384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OwnedWidgetGtk page_action_hbox_; 385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedVector<PageActionViewGtk> page_action_views_; 386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The widget that contains our tab hints and the location bar. 388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* entry_box_; 389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Area on the left shown when in tab to search mode. 391dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GtkWidget* tab_to_search_alignment_; 392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_box_; 393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_magnifier_; 394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_full_label_; 395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_partial_label_; 396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Hint to user that they can tab-to-search by hitting tab. 398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_hint_; 399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_hint_leading_label_; 400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_hint_icon_; 401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* tab_to_search_hint_trailing_label_; 402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<AutocompleteEditViewGtk> location_entry_; 404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Alignment used to wrap |location_entry_|. 406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkWidget* location_entry_alignment_; 407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Profile* profile_; 409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CommandUpdater* command_updater_; 410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ToolbarModel* toolbar_model_; 411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Browser* browser_; 412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // When we get an OnAutocompleteAccept notification from the autocomplete 414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // edit, we save the input string so we can give it back to the browser on 415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the LocationBar interface via GetInputString(). 416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::wstring location_input_; 417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The user's desired disposition for how their input should be opened. 419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WindowOpenDisposition disposition_; 420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The transition type to use for the navigation. 422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PageTransition::Type transition_; 423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Used to schedule a task for the first run info bubble. 425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedRunnableMethodFactory<LocationBarViewGtk> first_run_bubble_; 426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // When true, the location bar view is read only and also is has a slightly 428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // different presentation (font size / color). This is used for popups. 429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool popup_window_mode_; 430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Provides colors and rendering mode. 432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GtkThemeProvider* theme_provider_; 433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NotificationRegistrar registrar_; 435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Width of the main |hbox_|. Used to properly elide the EV certificate. 437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int hbox_width_; 438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Width of the hbox that holds |tab_to_search_box_|, |location_entry_| and 440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // |tab_to_search_hint_|. 441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int entry_box_width_; 442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Indicate if |tab_to_search_box_| should be shown. 444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool show_selected_keyword_; 445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Indicate if |tab_to_search_hint_| should be shown. 447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool show_keyword_hint_; 448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The last search keyword that was shown via the |tab_to_search_box_|. 45072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen string16 last_keyword_; 451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(LocationBarViewGtk); 453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // CHROME_BROWSER_UI_GTK_LOCATION_BAR_VIEW_GTK_H_ 456