1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 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) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_member.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/command_observer.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/toolbar/back_forward_menu_model.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/location_bar/location_bar_view.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/accelerators/accelerator.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/accessible_pane_view.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/menu_button.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/menu_button_listener.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class BackButton; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserActionsContainer; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Browser; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class HomeButton; 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ReloadButton; 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class ToolbarButton; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WrenchMenu; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WrenchMenuModel; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WrenchToolbarButton; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace extensions { 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class Command; 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class Extension; 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass ExtensionMessageBubbleFactory; 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MenuListener; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The Browser Window's toolbar. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ToolbarView : public views::AccessiblePaneView, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::MenuButtonListener, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ui::AcceleratorProvider, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public LocationBarView::Delegate, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public content::NotificationObserver, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public CommandObserver, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::ButtonListener, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public views::WidgetObserver { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The view class name. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kViewClassName[]; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit ToolbarView(Browser* browser); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ToolbarView(); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create the contents of the Browser Toolbar. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Init(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Forces the toolbar (and transitively the location bar) to update its 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // current state. If |tab| is non-NULL, we're switching (back?) to this tab 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // and should restore any previous location bar state (such as user editing) 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // as well. 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void Update(content::WebContents* tab); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set focus to the toolbar with complete keyboard access, with the 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // focus initially set to the app menu. Focus will be restored 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to the last focused view if the user escapes. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetPaneFocusAndFocusAppMenu(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the app menu is focused. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsAppMenuFocused(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a listener to receive a callback when the menu opens. 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddMenuListener(views::MenuListener* listener); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remove a menu listener. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveMenuListener(views::MenuListener* listener); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetAcceleratorInfo(int id, ui::Accelerator* accel); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the view to which the bookmark bubble should be anchored. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View* GetBookmarkBubbleAnchor(); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns the view to which the Translate bubble should be anchored. 881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) views::View* GetTranslateBubbleAnchor(); 891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Executes |command| registered by |extension|. 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ExecuteExtensionCommand(const extensions::Extension* extension, 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const extensions::Command& command); 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Shows the extension's page action, if present. 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ShowPageActionPopup(const extensions::Extension* extension); 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Shows the extension's browser action, if present. 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ShowBrowserActionPopup(const extensions::Extension* extension); 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessors... 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser() const { return browser_; } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserActionsContainer* browser_actions() const { return browser_actions_; } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReloadButton* reload_button() const { return reload_; } 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationBarView* location_bar() const { return location_bar_; } 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::MenuButton* app_menu() const; 106effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch HomeButton* home_button() const { return home_; } 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from AccessiblePaneView 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool SetPaneFocus(View* initial_focus) OVERRIDE; 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::MenuButtonListener: 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnMenuButtonClicked(views::View* source, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& point) OVERRIDE; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from LocationBarView::Delegate: 1173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual content::WebContents* GetWebContents() OVERRIDE; 1183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ToolbarModel* GetToolbarModel() OVERRIDE; 1193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual const ToolbarModel* GetToolbarModel() const OVERRIDE; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual InstantController* GetInstant() OVERRIDE; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::Widget* CreateViewsBubble( 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::BubbleDelegateView* bubble_delegate) OVERRIDE; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PageActionImageView* CreatePageActionImageView( 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationBarView* owner, ExtensionAction* action) OVERRIDE; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ContentSettingBubbleModelDelegate* 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetContentSettingBubbleModelDelegate() OVERRIDE; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ShowWebsiteSettings(content::WebContents* web_contents, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url, 1297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const content::SSLStatus& ssl) OVERRIDE; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from CommandObserver: 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnabledStateChangedForCommand(int id, bool enabled) OVERRIDE; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::ButtonListener: 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ButtonPressed(views::Button* sender, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::Event& event) OVERRIDE; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Overridden from views::WidgetObserver: 139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void OnWidgetVisibilityChanged(views::Widget* widget, 140f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool visible) OVERRIDE; 141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from content::NotificationObserver: 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::AcceleratorProvider: 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetAcceleratorForCommandId( 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command_id, ui::Accelerator* accelerator) OVERRIDE; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::View: 152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual gfx::Size GetPreferredSize() const OVERRIDE; 153cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual gfx::Size GetMinimumSize() const OVERRIDE; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Layout() OVERRIDE; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnThemeChanged() OVERRIDE; 158b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual const char* GetClassName() const OVERRIDE; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AcceleratorPressed(const ui::Accelerator& acc) OVERRIDE; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether the wrench/hotdogs menu is currently showing. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsWrenchMenuShowing() const; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Whether the toolbar view needs its background painted by the 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // BrowserNonClientFrameView. 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool ShouldPaintBackground() const; 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) enum { 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The apparent horizontal space between most items, and the vertical 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // padding above and below them. 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) kStandardSpacing = 3, 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The top of the toolbar has an edge we have to skip over in addition to 174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // the standard spacing. 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) kVertSpacing = 5, 176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from AccessiblePaneView 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool SetPaneFocusAndFocusDefault() OVERRIDE; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RemovePaneFocus() OVERRIDE; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Types of display mode this toolbar can have. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum DisplayMode { 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISPLAYMODE_NORMAL, // Normal toolbar with buttons, etc. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISPLAYMODE_LOCATION // Slimline toolbar showing only compact location 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bar, used for popups. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if we should show the upgrade recommended dot. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ShouldShowUpgradeRecommended(); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if we should show the background page badge. 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ShouldShowBackgroundPageBadge(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if we should show the warning for incompatible software. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ShouldShowIncompatibilityWarning(); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the number of pixels above the location bar in non-normal display. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int PopupTopSpacing() const; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 203cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Given toolbar contents of size |size|, returns the total toolbar size. 204cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) gfx::Size SizeForContentSize(gfx::Size size) const; 205cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Loads the images for all the child views. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadImages(); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_display_mode_normal() const { 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return display_mode_ == DISPLAYMODE_NORMAL; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the critical notification bubble against the wrench menu. 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowCriticalNotification(); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Shows the outdated install notification bubble against the wrench menu. 217effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // |auto_update_enabled| is set to true when auto-upate is on. 218effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void ShowOutdatedInstallNotification(bool auto_update_enabled); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the badge and the accessible name of the app menu (Wrench). 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAppMenuState(); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Updates the severity level on the wrench menu button. 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void UpdateWrenchButtonSeverity(); 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShowHomeButtonChanged(); 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int content_shadow_height() const; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Controls 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BackButton* back_; 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ToolbarButton* forward_; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReloadButton* reload_; 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) HomeButton* home_; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LocationBarView* location_bar_; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserActionsContainer* browser_actions_; 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WrenchToolbarButton* app_menu_; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser_; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Controls whether or not a home button should be shown on the toolbar. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BooleanPrefMember show_home_button_; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The display mode used when laying out the toolbar. 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayMode display_mode_; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Wrench model and menu. 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note that the menu should be destroyed before the model it uses, so the 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // menu should be listed later. 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<WrenchMenuModel> wrench_menu_model_; 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<WrenchMenu> wrench_menu_; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // The factory to create bubbles to warn about dangerous/suspicious 253effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // extensions. 254effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch scoped_ptr<extensions::ExtensionMessageBubbleFactory> 255effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch extension_message_bubble_factory_; 256effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A list of listeners to call when the menu opens. 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<views::MenuListener> menu_listeners_; 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarView); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TOOLBAR_VIEW_H_ 266