diff options
author | Kristian Monsen <kristianm@google.com> | 2011-05-31 20:30:28 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2011-06-14 20:31:41 -0700 |
commit | 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801 (patch) | |
tree | 382278a54ce7a744d62fa510a9a80688cc12434b /chrome/browser/gtk/location_bar_view_gtk.h | |
parent | c4becdd46e31d261b930e4b5a539cbc1d45c23a6 (diff) | |
download | external_chromium-72a454cd3513ac24fbdd0e0cb9ad70b86a99b801.zip external_chromium-72a454cd3513ac24fbdd0e0cb9ad70b86a99b801.tar.gz external_chromium-72a454cd3513ac24fbdd0e0cb9ad70b86a99b801.tar.bz2 |
Merge Chromium.org at r11.0.672.0: Initial merge by git.
Change-Id: I8b4aaf611a2a405fe3fe10e8a94ea7658645c192
Diffstat (limited to 'chrome/browser/gtk/location_bar_view_gtk.h')
-rw-r--r-- | chrome/browser/gtk/location_bar_view_gtk.h | 435 |
1 files changed, 0 insertions, 435 deletions
diff --git a/chrome/browser/gtk/location_bar_view_gtk.h b/chrome/browser/gtk/location_bar_view_gtk.h deleted file mode 100644 index f1b1534..0000000 --- a/chrome/browser/gtk/location_bar_view_gtk.h +++ /dev/null @@ -1,435 +0,0 @@ -// 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_GTK_LOCATION_BAR_VIEW_GTK_H_ -#define CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ -#pragma once - -#include <gtk/gtk.h> - -#include <map> -#include <string> - -#include "app/gtk_signal.h" -#include "base/basictypes.h" -#include "base/scoped_ptr.h" -#include "base/scoped_vector.h" -#include "chrome/browser/autocomplete/autocomplete_edit.h" -#include "chrome/browser/autocomplete/autocomplete_edit_view_gtk.h" -#include "chrome/browser/extensions/extension_context_menu_model.h" -#include "chrome/browser/extensions/image_loading_tracker.h" -#include "chrome/browser/first_run/first_run.h" -#include "chrome/browser/gtk/info_bubble_gtk.h" -#include "chrome/browser/gtk/menu_gtk.h" -#include "chrome/browser/gtk/owned_widget_gtk.h" -#include "chrome/browser/ui/omnibox/location_bar.h" -#include "chrome/common/content_settings_types.h" -#include "chrome/common/notification_observer.h" -#include "chrome/common/notification_registrar.h" -#include "chrome/common/page_transition_types.h" -#include "third_party/skia/include/core/SkBitmap.h" -#include "webkit/glue/window_open_disposition.h" - -class AutocompleteEditViewGtk; -class Browser; -class CommandUpdater; -class ContentSettingImageModel; -class ContentSettingBubbleGtk; -class ExtensionAction; -class GtkThemeProvider; -class Profile; -class SkBitmap; -class TabContents; -class ToolbarModel; - -class LocationBarViewGtk : public AutocompleteEditController, - public LocationBar, - public LocationBarTesting, - public NotificationObserver { - public: - explicit LocationBarViewGtk(Browser* browser); - virtual ~LocationBarViewGtk(); - - void Init(bool popup_window_mode); - - void SetProfile(Profile* profile); - - // Returns the widget the caller should host. You must call Init() first. - GtkWidget* widget() { return hbox_.get(); } - - // Returns the widget the page info bubble should point to. - GtkWidget* location_icon_widget() const { return location_icon_image_; } - - // Returns the widget the extension installed bubble should point to. - GtkWidget* location_entry_widget() const { return entry_box_; } - - // Returns the current TabContents. - TabContents* GetTabContents() const; - - // Sets |preview_enabled| for the PageActionViewGtk associated with this - // |page_action|. If |preview_enabled| is true, the view will display the - // page action's icon even though it has not been activated by the extension. - // This is used by the ExtensionInstalledBubbleGtk to preview what the icon - // will look like for the user upon installation of the extension. - void SetPreviewEnabledPageAction(ExtensionAction *page_action, - bool preview_enabled); - - // Retrieves the GtkWidget which is associated with PageActionView - // corresponding to |page_action|. - GtkWidget* GetPageActionWidget(ExtensionAction* page_action); - - // Updates the location bar. We also reset the bar's permanent text and - // security style, and, if |tab_for_state_restoring| is non-NULL, also - // restore saved state that the tab holds. - void Update(const TabContents* tab_for_state_restoring); - - // Show the bookmark bubble. - void ShowStarBubble(const GURL& url, bool newly_boomkarked); - - // Set the starred state of the bookmark star. - void SetStarred(bool starred); - - // Implement the AutocompleteEditController interface. - virtual void OnAutocompleteWillClosePopup(); - virtual void OnAutocompleteLosingFocus(gfx::NativeView view_gaining_focus); - virtual void OnAutocompleteWillAccept(); - // For this implementation, the parameter is ignored. - virtual bool OnCommitSuggestedText(const std::wstring& typed_text); - virtual bool AcceptCurrentInstantPreview(); - virtual void OnSetSuggestedSearchText(const string16& suggested_text); - virtual void OnPopupBoundsChanged(const gfx::Rect& bounds); - virtual void OnAutocompleteAccept(const GURL& url, - WindowOpenDisposition disposition, - PageTransition::Type transition, - const GURL& alternate_nav_url); - virtual void OnChanged(); - virtual void OnSelectionBoundsChanged(); - virtual void OnKillFocus(); - virtual void OnSetFocus(); - virtual void OnInputInProgress(bool in_progress); - virtual SkBitmap GetFavIcon() const; - virtual std::wstring GetTitle() const; - - // Implement the LocationBar interface. - virtual void ShowFirstRunBubble(FirstRun::BubbleType bubble_type); - virtual void SetSuggestedText(const string16& text); - virtual std::wstring GetInputString() const; - virtual WindowOpenDisposition GetWindowOpenDisposition() const; - virtual PageTransition::Type GetPageTransition() const; - virtual void AcceptInput(); - virtual void FocusLocation(bool select_all); - virtual void FocusSearch(); - virtual void UpdateContentSettingsIcons(); - virtual void UpdatePageActions(); - virtual void InvalidatePageActions(); - virtual void SaveStateToContents(TabContents* contents); - virtual void Revert(); - virtual const AutocompleteEditView* location_entry() const; - virtual AutocompleteEditView* location_entry(); - virtual LocationBarTesting* GetLocationBarForTesting(); - - // Implement the LocationBarTesting interface. - virtual int PageActionCount(); - virtual int PageActionVisibleCount(); - virtual ExtensionAction* GetPageAction(size_t index); - virtual ExtensionAction* GetVisiblePageAction(size_t index); - virtual void TestPageActionPressed(size_t index); - - // Implement the NotificationObserver interface. - virtual void Observe(NotificationType type, - const NotificationSource& source, - const NotificationDetails& details); - - // Edit background color. - static const GdkColor kBackgroundColor; - - private: - class ContentSettingImageViewGtk : public InfoBubbleGtkDelegate { - public: - ContentSettingImageViewGtk(ContentSettingsType content_type, - const LocationBarViewGtk* parent, - Profile* profile); - virtual ~ContentSettingImageViewGtk(); - - GtkWidget* widget() { return event_box_.get(); } - - void set_profile(Profile* profile) { profile_ = profile; } - - bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } - void UpdateFromTabContents(TabContents* tab_contents); - - private: - CHROMEGTK_CALLBACK_1(ContentSettingImageViewGtk, gboolean, OnButtonPressed, - GdkEvent*); - - // InfoBubbleDelegate overrides: - virtual void InfoBubbleClosing(InfoBubbleGtk* info_bubble, - bool closed_by_escape); - - scoped_ptr<ContentSettingImageModel> content_setting_image_model_; - - // The widgets for this content settings view. - OwnedWidgetGtk event_box_; - OwnedWidgetGtk image_; - - // The owning LocationBarViewGtk. - const LocationBarViewGtk* parent_; - - // The currently active profile. - Profile* profile_; - - // The currently shown info bubble if any. - ContentSettingBubbleGtk* info_bubble_; - - DISALLOW_COPY_AND_ASSIGN(ContentSettingImageViewGtk); - }; - - class PageActionViewGtk : public ImageLoadingTracker::Observer, - public ExtensionContextMenuModel::PopupDelegate { - public: - PageActionViewGtk( - LocationBarViewGtk* owner, Profile* profile, - ExtensionAction* page_action); - virtual ~PageActionViewGtk(); - - GtkWidget* widget() { return event_box_.get(); } - - ExtensionAction* page_action() { return page_action_; } - - void set_preview_enabled(bool preview_enabled) { - preview_enabled_ = preview_enabled; - } - - bool IsVisible() { return GTK_WIDGET_VISIBLE(widget()); } - - // Called to notify the PageAction that it should determine whether to be - // visible or hidden. |contents| is the TabContents that is active, |url| - // is the current page URL. - void UpdateVisibility(TabContents* contents, GURL url); - - // A callback from ImageLoadingTracker for when the image has loaded. - virtual void OnImageLoaded( - SkBitmap* image, ExtensionResource resource, int index); - - // Simulate left mouse click on the page action button. - void TestActivatePageAction(); - - // Overridden from ExtensionContextMenuModel::PopupDelegate: - virtual void InspectPopup(ExtensionAction* action); - - private: - // Show the popup for this page action. If |devtools| is true, show it - // with a debugger window attached. Returns true if a popup was shown. - bool ShowPopup(bool devtools); - - CHROMEGTK_CALLBACK_1(PageActionViewGtk, gboolean, OnButtonPressed, - GdkEvent*); - CHROMEGTK_CALLBACK_1(PageActionViewGtk, gboolean, OnExposeEvent, - GdkEventExpose*); - - // The location bar view that owns us. - LocationBarViewGtk* owner_; - - // The current profile (not owned by us). - Profile* profile_; - - // The PageAction that this view represents. The PageAction is not owned by - // us, it resides in the extension of this particular profile. - ExtensionAction* page_action_; - - // A cache of all the different icon paths associated with this page action. - typedef std::map<std::string, GdkPixbuf*> PixbufMap; - PixbufMap pixbufs_; - - // A cache of the last dynamically generated bitmap and the pixbuf that - // corresponds to it. We keep track of both so we can free old pixbufs as - // their icons are replaced. - SkBitmap last_icon_skbitmap_; - GdkPixbuf* last_icon_pixbuf_; - - // The object that is waiting for the image loading to complete - // asynchronously. - ImageLoadingTracker tracker_; - - // The widgets for this page action. - OwnedWidgetGtk event_box_; - OwnedWidgetGtk image_; - - // The tab id we are currently showing the icon for. - int current_tab_id_; - - // The URL we are currently showing the icon for. - GURL current_url_; - - // This is used for post-install visual feedback. The page_action icon - // is briefly shown even if it hasn't been enabled by its extension. - bool preview_enabled_; - - // The context menu view and model for this extension action. - scoped_ptr<MenuGtk> context_menu_; - scoped_refptr<ExtensionContextMenuModel> context_menu_model_; - - DISALLOW_COPY_AND_ASSIGN(PageActionViewGtk); - }; - friend class PageActionViewGtk; - - // Creates, initializes, and packs the location icon, EV certificate name, - // and optional border. - void BuildSiteTypeArea(); - - // Enable or disable the location icon/EV certificate as a drag source for - // the URL. - void SetSiteTypeDragSource(); - - GtkWidget* site_type_area() { return site_type_alignment_; } - - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, HandleExpose, - GdkEventExpose*); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, OnIconReleased, - GdkEventButton*); - CHROMEGTK_CALLBACK_4(LocationBarViewGtk, void, OnIconDragData, - GdkDragContext*, GtkSelectionData*, guint, guint); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnIconDragBegin, - GdkDragContext*); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnIconDragEnd, - GdkDragContext*); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnHboxSizeAllocate, - GtkAllocation*); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, void, OnEntryBoxSizeAllocate, - GtkAllocation*); - CHROMEGTK_CALLBACK_1(LocationBarViewGtk, gboolean, OnStarButtonPress, - GdkEventButton*); - - // Updates the site type area: changes the icon and shows/hides the EV - // certificate information. - void UpdateSiteTypeArea(); - - // Updates the maximum size of the EV certificate label. - void UpdateEVCertificateLabelSize(); - - // Sets the text that should be displayed in the info label and its associated - // tooltip text. Call with an empty string if the info label should be - // hidden. - void SetInfoText(); - - // Set the keyword text for the Search BLAH: keyword box. - void SetKeywordLabel(const std::wstring& keyword); - - // Set the keyword text for the "Press tab to search BLAH" hint box. - void SetKeywordHintLabel(const std::wstring& keyword); - - void ShowFirstRunBubbleInternal(FirstRun::BubbleType bubble_type); - - // Show or hide |tab_to_search_box_| and |tab_to_search_hint_| according to - // the value of |show_selected_keyword_|, |show_keyword_hint_|, and the - // available horizontal space in the location bar. - void AdjustChildrenVisibility(); - - // Build the star icon. - void CreateStarButton(); - - // Update the star icon after it is toggled or the theme changes. - void UpdateStarIcon(); - - // Returns true if we should only show the URL and none of the extras like - // the star button or page actions. - bool ShouldOnlyShowLocation(); - - // The outermost widget we want to be hosted. - OwnedWidgetGtk hbox_; - - // Star button. - OwnedWidgetGtk star_; - GtkWidget* star_image_; - bool starred_; - - // An icon to the left of the address bar. - GtkWidget* site_type_alignment_; - GtkWidget* site_type_event_box_; - GtkWidget* location_icon_image_; - GtkWidget* drag_icon_; - bool enable_location_drag_; - // TODO(pkasting): Split this label off and move the rest of the items to the - // left of the address bar. - GtkWidget* security_info_label_; - - // Content setting icons. - OwnedWidgetGtk content_setting_hbox_; - ScopedVector<ContentSettingImageViewGtk> content_setting_views_; - - // Extension page action icons. - OwnedWidgetGtk page_action_hbox_; - ScopedVector<PageActionViewGtk> page_action_views_; - - // The widget that contains our tab hints and the location bar. - GtkWidget* entry_box_; - - // Area on the left shown when in tab to search mode. - GtkWidget* tab_to_search_box_; - GtkWidget* tab_to_search_magnifier_; - GtkWidget* tab_to_search_full_label_; - GtkWidget* tab_to_search_partial_label_; - - // Hint to user that they can tab-to-search by hitting tab. - GtkWidget* tab_to_search_hint_; - GtkWidget* tab_to_search_hint_leading_label_; - GtkWidget* tab_to_search_hint_icon_; - GtkWidget* tab_to_search_hint_trailing_label_; - - scoped_ptr<AutocompleteEditViewGtk> location_entry_; - - // Alignment used to wrap |location_entry_|. - GtkWidget* location_entry_alignment_; - - Profile* profile_; - CommandUpdater* command_updater_; - ToolbarModel* toolbar_model_; - Browser* browser_; - - // When we get an OnAutocompleteAccept notification from the autocomplete - // edit, we save the input string so we can give it back to the browser on - // the LocationBar interface via GetInputString(). - std::wstring location_input_; - - // The user's desired disposition for how their input should be opened. - WindowOpenDisposition disposition_; - - // The transition type to use for the navigation. - PageTransition::Type transition_; - - // Used to schedule a task for the first run info bubble. - ScopedRunnableMethodFactory<LocationBarViewGtk> first_run_bubble_; - - // When true, the location bar view is read only and also is has a slightly - // different presentation (font size / color). This is used for popups. - bool popup_window_mode_; - - // Provides colors and rendering mode. - GtkThemeProvider* theme_provider_; - - NotificationRegistrar registrar_; - - // Width of the main |hbox_|. Used to properly elide the EV certificate. - int hbox_width_; - - // Width of the hbox that holds |tab_to_search_box_|, |location_entry_| and - // |tab_to_search_hint_|. - int entry_box_width_; - - // Indicate if |tab_to_search_box_| should be shown. - bool show_selected_keyword_; - - // Indicate if |tab_to_search_hint_| should be shown. - bool show_keyword_hint_; - - // The last search keyword that was shown via the |tab_to_search_box_|. - std::wstring last_keyword_; - - // True if we should update the instant controller when the edit text changes. - bool update_instant_; - - DISALLOW_COPY_AND_ASSIGN(LocationBarViewGtk); -}; - -#endif // CHROME_BROWSER_GTK_LOCATION_BAR_VIEW_GTK_H_ |