location_bar_view.h revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_BAR_VIEW_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_BAR_VIEW_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/weak_ptr.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_member.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_context_menu_model.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_observer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/omnibox/location_bar.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/omnibox/omnibox_edit_controller.h" 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/ui/search/search_model_observer.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/toolbar/toolbar_model.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/dropdown_bar_host.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/dropdown_bar_host_delegate.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/extensions/extension_popup.h" 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/gfx/animation/animation_delegate.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/font.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h" 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/views/controls/button/button.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/drag_controller.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ActionBoxButtonView; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandUpdater; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingBubbleModelDelegate; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingImageView; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EVBubbleView; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionAction; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass GeneratedCreditCardView; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InstantController; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class KeywordHintView; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationIconView; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OpenPDFInReaderView; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ManagePasswordsIconView; 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class OriginChipView; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PageActionWithBadgeView; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PageActionImageView; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SelectedKeywordView; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StarView; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURLService; 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class ToolbarOriginChipView; 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class TranslateIconView; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ZoomView; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content { 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct SSLStatus; 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace gfx { 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass SlideAnimation; 62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BubbleDelegateView; 66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass ImageButton; 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ImageView; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Label; 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class LabelButton; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Widget; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///////////////////////////////////////////////////////////////////////////// 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// LocationBarView class 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LocationBarView class is a View subclass that paints the background 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of the URL bar strip and contains its content. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///////////////////////////////////////////////////////////////////////////// 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarView : public LocationBar, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public LocationBarTesting, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::View, 847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public views::ButtonListener, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::DragController, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public OmniboxEditController, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public DropdownBarHostDelegate, 88effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public gfx::AnimationDelegate, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public TemplateURLServiceObserver, 907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public content::NotificationObserver, 917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public SearchModelObserver { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The location bar view's class name. 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kViewClassName[]; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 96effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Returns the offset used during dropdown animation. 97effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int dropdown_animation_offset() const { return dropdown_animation_offset_; } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Delegate { 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Should return the current web contents. 1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual content::WebContents* GetWebContents() = 0; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the InstantController, or NULL if there isn't one. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual InstantController* GetInstant() = 0; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ToolbarModel* GetToolbarModel() = 0; 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual const ToolbarModel* GetToolbarModel() const = 0; 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates Widget for the given delegate. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::Widget* CreateViewsBubble( 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::BubbleDelegateView* bubble_delegate) = 0; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates PageActionImageView. Caller gets an ownership. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PageActionImageView* CreatePageActionImageView( 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationBarView* owner, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExtensionAction* action) = 0; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns ContentSettingBubbleModelDelegate. 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ContentSettingBubbleModelDelegate* 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetContentSettingBubbleModelDelegate() = 0; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Shows permissions and settings for the given web contents. 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ShowWebsiteSettings(content::WebContents* web_contents, 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url, 1267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const content::SSLStatus& ssl) = 0; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Delegate() {} 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ColorKind { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BACKGROUND = 0, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TEXT, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SELECTED_TEXT, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DEEMPHASIZED_TEXT, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SECURITY_TEXT, 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationBarView(Browser* browser, 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandUpdater* command_updater, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate, 14490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool is_popup_mode); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~LocationBarView(); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initializes the LocationBarView. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Init(); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if this instance has been initialized by calling Init, which can only 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be called when the receiving instance is attached to a view container. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsInitialized() const; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the appropriate color for the desired kind, based on the user's 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // system theme. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkColor GetColor(ToolbarModel::SecurityLevel security_level, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ColorKind kind) const; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the delegate. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate() const { return delegate_; } 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See comment in browser_window.h for more info. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ZoomChangedForActiveTab(bool can_show_bubble); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The zoom icon. It may not be visible. 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ZoomView* zoom_view() { return zoom_view_; } 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The passwords icon. It may not be visible. 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ManagePasswordsIconView* manage_passwords_icon_view() { 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return manage_passwords_icon_view_; 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets |preview_enabled| for the PageAction View associated with this 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |page_action|. If |preview_enabled| is true, the view will display the 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PageActions icon even though it has not been activated by the extension. 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is used by the ExtensionInstalledBubble to preview what the icon 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // will look like for the user upon installation of the extension. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetPreviewEnabledPageAction(ExtensionAction* page_action, 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool preview_enabled); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Retrieves the PageAction View which is associated with |page_action|. 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PageActionWithBadgeView* GetPageActionView(ExtensionAction* page_action); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Toggles the star on or off. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetStarToggled(bool on); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The star. It may not be visible. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StarView* star_view() { return star_view_; } 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Toggles the translate icon on or off. 192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void SetTranslateIconToggled(bool on); 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The translate icon. It may not be visible. 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TranslateIconView* translate_icon_view() { return translate_icon_view_; } 1961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void set_toolbar_origin_chip_view( 198a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ToolbarOriginChipView* toolbar_origin_chip_view) { 199a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) toolbar_origin_chip_view_ = toolbar_origin_chip_view; 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the bookmark prompt. 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowBookmarkPrompt(); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Returns the screen coordinates of the omnibox (where the URL text appears, 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // not where the icons are shown). 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::Point GetOmniboxViewOrigin() const; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 209868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Shows |text| as an inline autocompletion. This is useful for IMEs, where 210868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // we can't show the autocompletion inside the actual OmniboxView. See 211868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // comments on |ime_inline_autocomplete_view_|. 212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetImeInlineAutocompletion(const base::string16& text); 213868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Invoked from OmniboxViewWin to show gray text autocompletion. 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetGrayTextAutocompletion(const base::string16& text); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Returns the current gray text autocompletion. 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 GetGrayTextAutocompletion() const; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set if we should show a focus rect while the location entry field is 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // focused. Used when the toolbar is in full keyboard accessibility mode. 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Repaints if necessary. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetShowFocusRect(bool show); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Select all of the text. Needed when the user tabs through controls 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in the toolbar in full keyboard accessibility mode. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SelectAll(); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) views::ImageView* GetLocationIconView(); 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const views::ImageView* GetLocationIconView() const; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Return a view suitable for anchoring location-bar-anchored bubbles to. 233f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) views::View* GetLocationBarAnchor(); 234f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Return the point suitable for anchoring location-bar-anchored bubbles at. 235f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The point will be returned in the coordinates of the LocationBarView. 236f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::Point GetLocationBarAnchorPoint() const; 237f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) OmniboxViewViews* omnibox_view() { return omnibox_view_; } 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 240ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::View* generated_credit_card_view(); 2417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the height of the control without the top and bottom 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // edges(i.e. the height of the edit control inside). If 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |use_preferred_size| is true this will be the preferred height, 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // otherwise it will be the current height. 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetInternalHeight(bool use_preferred_size); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 248868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Returns the position and width that the popup should be, and also the left 249868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // edge that the results should align themselves to (which will leave some 250868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // border on the left of the popup). 251ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch void GetOmniboxPopupPositioningInfo(gfx::Point* top_left_screen_coord, 252ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch int* popup_width, 253ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch int* left_margin, 254ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch int* right_margin); 255868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 256c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // LocationBar: 257c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void FocusLocation(bool select_all) OVERRIDE; 258c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Revert() OVERRIDE; 259c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual OmniboxView* GetOmniboxView() OVERRIDE; 260c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 261c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // views::View: 262c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool HasFocus() const OVERRIDE; 263c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 264c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual gfx::Size GetPreferredSize() OVERRIDE; 265c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Layout() OVERRIDE; 266c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 267c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // OmniboxEditController: 268c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Update(const content::WebContents* contents) OVERRIDE; 269c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ShowURL() OVERRIDE; 270c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ToolbarModel* GetToolbarModel() OVERRIDE; 271c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual content::WebContents* GetWebContents() OVERRIDE; 272c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 273868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Thickness of the edges of the omnibox background images, in normal mode. 274868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static const int kNormalEdgeThickness; 27590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The same, but for popup mode. 27690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static const int kPopupEdgeThickness; 2775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Space between items in the location bar, as well as between items and the 2785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // edges. 2795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu static const int kItemPadding; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Amount of padding built into the standard omnibox icons. 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kIconInternalPadding; 282a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Amount of padding to place between the origin chip and the leading edge of 283a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // the location bar. 284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static const int kOriginChipEdgeItemPadding; 285a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Amount of padding built into the origin chip. 286a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static const int kOriginChipBuiltinPadding; 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Space between the edge and a bubble. 28890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static const int kBubblePadding; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 290effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private: 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector<ContentSettingImageView*> ContentSettingViews; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class PageActionImageView; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class PageActionWithBadgeView; 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef std::vector<ExtensionAction*> PageActions; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector<PageActionWithBadgeView*> PageActionViews; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 29890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Returns the thickness of any visible left and right edge, in pixels. 29990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int GetHorizontalEdgeThickness() const; 30090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The same, but for the top and bottom edges. 30290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int vertical_edge_thickness() const { 303868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return is_popup_mode_ ? kPopupEdgeThickness : kNormalEdgeThickness; 30490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 30590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Updates the visibility state of the Content Blocked icons to reflect what 307f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // is actually blocked on the current page. Returns true if the visibility 308f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // of at least one of the views in |content_setting_views_| changed. 309f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool RefreshContentSettingViews(); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Deletes all page action views that we have created. 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DeletePageActionViews(); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Updates the views for the Page Actions, to reflect state changes for 315f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // PageActions. Returns true if the visibility of a PageActionWithBadgeView 316f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // changed, or PageActionWithBadgeView were created/destroyed. 317f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool RefreshPageActionViews(); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 319f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Updates the view for the zoom icon based on the current tab's zoom. Returns 320f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // true if the visibility of the view changed. 321f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool RefreshZoomView(); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Updates the Translate icon based on the current tab's Translate status. 3241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void RefreshTranslateIcon(); 3251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 326f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Updates |manage_passwords_icon_view_|. Returns true if visibility changed. 327f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool RefreshManagePasswordsIconView(); 328f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 329f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Shows the manage passwords bubble if there is a savable password. 330f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void ShowManagePasswordsBubbleIfNeeded(); 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper to show the first run info bubble. 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowFirstRunBubbleInternal(); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Handles a request to change the value of this text field from software 33658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // using an accessibility API (typically automation software, screen readers 33758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // don't normally use this). Sets the value and clears the selection. 338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void AccessibilitySetValue(const base::string16& new_value); 33958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 340c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Returns true if the suggest text is valid. 341c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool HasValidSuggestText() const; 342c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 343effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Origin chip animation control methods. 344effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnShowURLAnimationEnded(); 345effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnHideURLAnimationEnded(); 346effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 347c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // LocationBar: 348c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ShowFirstRunBubble() OVERRIDE; 349c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual GURL GetDestinationURL() const OVERRIDE; 350c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual WindowOpenDisposition GetWindowOpenDisposition() const OVERRIDE; 351c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual content::PageTransition GetPageTransition() const OVERRIDE; 352c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void AcceptInput() OVERRIDE; 353c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void FocusSearch() OVERRIDE; 354c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void UpdateContentSettingsIcons() OVERRIDE; 355c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void UpdateManagePasswordsIconAndBubble() OVERRIDE; 356c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void UpdatePageActions() OVERRIDE; 357c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void InvalidatePageActions() OVERRIDE; 358c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void UpdateOpenPDFInReaderPrompt() OVERRIDE; 359c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void UpdateGeneratedCreditCardView() OVERRIDE; 360c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void SaveStateToContents(content::WebContents* contents) OVERRIDE; 361c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const OmniboxView* GetOmniboxView() const OVERRIDE; 362c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual LocationBarTesting* GetLocationBarForTesting() OVERRIDE; 363c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 364c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // LocationBarTesting: 365c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual int PageActionCount() OVERRIDE; 366c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual int PageActionVisibleCount() OVERRIDE; 367c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ExtensionAction* GetPageAction(size_t index) OVERRIDE; 368c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ExtensionAction* GetVisiblePageAction(size_t index) OVERRIDE; 369c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void TestPageActionPressed(size_t index) OVERRIDE; 370c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool GetBookmarkStarVisibility() OVERRIDE; 371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 372c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // views::View: 373c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const char* GetClassName() const OVERRIDE; 374c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE; 375c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnFocus() OVERRIDE; 376c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 377c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE; 378c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 379c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // views::ButtonListener: 380c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ButtonPressed(views::Button* sender, 381c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const ui::Event& event) OVERRIDE; 382c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 383c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // views::DragController: 384c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void WriteDragDataForView(View* sender, 385c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& press_pt, 386c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch OSExchangeData* data) OVERRIDE; 387c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual int GetDragOperationsForView(View* sender, 388c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& p) OVERRIDE; 389c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool CanStartDragForView(View* sender, 390c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& press_pt, 391c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& p) OVERRIDE; 392c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 393c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // OmniboxEditController: 394c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnChanged() OVERRIDE; 395c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnSetFocus() OVERRIDE; 396c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual InstantController* GetInstant() OVERRIDE; 397c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const ToolbarModel* GetToolbarModel() const OVERRIDE; 398c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void HideURL() OVERRIDE; 399c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 400c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // DropdownBarHostDelegate: 401c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void SetFocusAndSelection(bool select_all) OVERRIDE; 402c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void SetAnimationOffset(int offset) OVERRIDE; 403c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 404c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // gfx::AnimationDelegate: 405c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; 406c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void AnimationEnded(const gfx::Animation* animation) OVERRIDE; 407c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 408c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // TemplateURLServiceObserver: 409c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnTemplateURLServiceChanged() OVERRIDE; 410c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 411c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // content::NotificationObserver: 412c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Observe(int type, 413c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const content::NotificationSource& source, 414c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const content::NotificationDetails& details) OVERRIDE; 415c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 416c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // SearchModelObserver: 417c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ModelChanged(const SearchModel::State& old_state, 418c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const SearchModel::State& new_state) OVERRIDE; 419c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Browser this LocationBarView is in. Note that at least 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // chromeos::SimpleWebViewDialog uses a LocationBarView outside any browser 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window, so this may be NULL. 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser_; 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OmniboxViewViews* omnibox_view_; 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Our delegate. 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate_; 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Object used to paint the border. 4315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<views::Painter> border_painter_; 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 433a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The version of the origin chip that appears in the location bar. 434a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OriginChipView* origin_chip_view_; 435a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 436a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The version of the origin chip that appears in the toolbar. 437a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ToolbarOriginChipView* toolbar_origin_chip_view_; 438a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // An icon to the left of the edit field. 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationIconView* location_icon_view_; 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A bubble displayed for EV HTTPS sites. 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EVBubbleView* ev_bubble_view_; 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // A view to show inline autocompletion when an IME is active. In this case, 446868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // we shouldn't change the text or selection inside the OmniboxView itself, 447868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // since this will conflict with the IME's control over the text. So instead 448868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // we show any autocompletion in a separate field after the OmniboxView. 449868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) views::Label* ime_inline_autocomplete_view_; 450868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The following views are used to provide hints and remind the user as to 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // what is going in the edit. They are all added a children of the 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // LocationBarView. At most one is visible at a time. Preference is 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // given to the keyword_view_, then hint_view_. 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // These autocollapse when the edit needs the room. 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shown if the user has selected a keyword. 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SelectedKeywordView* selected_keyword_view_; 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // View responsible for showing suggested text. This is NULL when there is no 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // suggested text. 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Label* suggested_text_view_; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shown if the selected url has a corresponding keyword. 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) KeywordHintView* keyword_hint_view_; 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // The voice search icon. 468ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::ImageButton* mic_search_view_; 4697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The content setting views. 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingViews content_setting_views_; 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The zoom icon. 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ZoomView* zoom_view_; 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 476ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // A bubble that shows after successfully generating a new credit card number. 477ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GeneratedCreditCardView* generated_credit_card_view_; 4787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The icon to open a PDF in Reader. 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OpenPDFInReaderView* open_pdf_in_reader_view_; 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 482f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The manage passwords icon. 483f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ManagePasswordsIconView* manage_passwords_icon_view_; 484f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current page actions. 4865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PageActions page_actions_; 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The page action icon views. 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageActionViews page_action_views_; 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // The icon for Translate. 4921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) TranslateIconView* translate_icon_view_; 4931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 494f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The star. 495f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) StarView* star_view_; 496f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 497a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // The search/go button. 498a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) views::LabelButton* search_button_; 499a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Whether we're in popup mode. This value also controls whether the location 5014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // bar is read-only. 50290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const bool is_popup_mode_; 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if we should show a focus rect while the location entry field is 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // focused. Used when the toolbar is in full keyboard accessibility mode. 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool show_focus_rect_; 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is in case we're destroyed before the model loads. We need to make 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add/RemoveObserver calls. 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService* template_url_service_; 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tracks this preference to determine whether bookmark editing is allowed. 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember edit_bookmarks_enabled_; 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // During dropdown animation, the host clips the widget and draws only the 516effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // bottom part of it. The view needs to know the pixel offset at which we are 517effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // drawing the widget so that we can draw the curved edges that attach to the 518effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // toolbar in the right location. 519effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int dropdown_animation_offset_; 520effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 521effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Origin chip animations. 522effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch scoped_ptr<gfx::SlideAnimation> show_url_animation_; 523effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch scoped_ptr<gfx::SlideAnimation> hide_url_animation_; 524effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 525effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Text label shown only during origin chip animations. 526effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch views::Label* animated_host_label_; 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to register for notifications received by NotificationObserver. 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Used to bind callback functions to this object. 53258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::WeakPtrFactory<LocationBarView> weak_ptr_factory_; 53358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 53490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(LocationBarView); 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_LOCATION_BAR_VIEW_H_ 538