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_FRAME_BROWSER_VIEW_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/timer/timer.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/devtools/devtools_window.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/infobars/infobar_container.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/ui/omnibox/omnibox_popup_model_observer.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model_observer.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/frame/browser_frame.h" 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/views/frame/immersive_mode_controller.h" 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/ui/views/frame/scroll_end_effect_controller.h" 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/views/load_complete_listener.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/accelerators/accelerator.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/simple_menu_model.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/sys_color_change_listener.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/button.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/single_split_view_listener.h" 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_delegate.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_observer.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/client_view.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/hang_monitor/hung_plugin_action.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/hang_monitor/hung_window_detector.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: For more information about the objects and files in this directory, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// view: http://dev.chromium.org/developers/design-documents/browser-window 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BookmarkBarView; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Browser; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserViewLayout; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentsContainer; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadShelfView; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FullscreenExitBubbleViews; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InfoBarContainerView; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarView; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StatusBubbleViews; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SearchViewController; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabStrip; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabStripModel; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ToolbarView; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TopContainerView; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class JumpList; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace autofill { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PasswordGenerator; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHost; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Extension; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessiblePaneView; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExternalFocusTracker; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebView; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/////////////////////////////////////////////////////////////////////////////// 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// BrowserView 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A ClientView subclass that provides the contents of a browser window, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// including the TabStrip, toolbars, download shelves, the content area etc. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserView : public BrowserWindow, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public BrowserWindowTesting, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public TabStripModelObserver, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ui::AcceleratorProvider, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::WidgetDelegate, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::WidgetObserver, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::ClientView, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public InfoBarContainer::Delegate, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::SingleSplitViewListener, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public gfx::SysColorChangeListener, 987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public LoadCompleteListener::Delegate, 997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public OmniboxPopupModelObserver { 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The browser view's class name. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kViewClassName[]; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BrowserView(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~BrowserView(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Takes ownership of |browser|. 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(Browser* browser); 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_frame(BrowserFrame* frame) { frame_ = frame; } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserFrame* frame() const { return frame_; } 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a pointer to the BrowserView* interface implementation (an 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // instance of this object, typically) for a given native window, or NULL if 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // there is no such association. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't use this unless you only have a NativeWindow. In nearly all 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // situations plumb through browser and use it. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static BrowserView* GetBrowserViewForNativeWindow(gfx::NativeWindow window); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the BrowserView used for the specified Browser. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static BrowserView* GetBrowserViewForBrowser(const Browser* browser); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a Browser instance of this view. 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Browser* browser() { return browser_.get(); } 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Initializes (or re-initializes) the status bubble. We try to only create 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // the bubble once and re-use it for the life of the browser, but certain 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // events (such as changing enabling/disabling Aero on Win) can force a need 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // to change some of the bubble's creation parameters. 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void InitStatusBubble(); 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the apparent bounds of the toolbar, in BrowserView coordinates. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // These differ from |toolbar_.bounds()| in that they match where the toolbar 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // background image is drawn -- slightly outside the "true" bounds 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // horizontally. Note that this returns the bounds for the toolbar area. 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect GetToolbarBounds() const; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the constraining bounding box that should be used to lay out the 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // FindBar within. This is _not_ the size of the find bar, just the bounding 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // box it should be laid out within. The coordinate system of the returned 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // rect is in the coordinate system of the frame, since the FindBar is a child 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window. 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect GetFindBarBoundingBox() const; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the preferred height of the TabStrip. Used to position the OTR 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // avatar icon. 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int GetTabStripHeight() const; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Takes some view's origin (relative to this BrowserView) and offsets it such 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that it can be used as the source origin for seamlessly tiling the toolbar 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // background image over that view. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point OffsetPointForToolbarBackgroundImage( 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& point) const; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Container for the tabstrip, toolbar, etc. 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TopContainerView* top_container() { return top_container_; } 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessor for the TabStrip. 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStrip* tabstrip() { return tabstrip_; } 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessor for the Toolbar. 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ToolbarView* toolbar() { return toolbar_; } 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Bookmark bar may be NULL, for example for pop-ups. 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BookmarkBarView* bookmark_bar() { return bookmark_bar_view_.get(); } 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Returns the do-nothing view which controls the z-order of the find bar 169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // widget relative to views which paint into layers and views which have an 170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // associated NativeView. The presence / visibility of this view is not 171868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // indicative of the visibility of the find bar widget or even whether 172868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // FindBarController is initialized. 173868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) View* find_bar_host_view() { return find_bar_host_view_; } 174868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Accessor for the InfobarContainer. 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) InfoBarContainerView* infobar_container() { return infobar_container_; } 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Accessor for the FullscreenExitBubbleViews. 1797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FullscreenExitBubbleViews* fullscreen_exit_bubble() { 1807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return fullscreen_bubble_.get(); 1817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 1827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if various window components are visible. 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool IsTabStripVisible() const; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the profile associated with this Browser window is 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // incognito. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsOffTheRecord() const; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the profile associated with this Browser window is 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // a guest session. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsGuestSession() const; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Returns true if the profile associated with this Browser window is 1958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // not off the record or a guest session. 1968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool IsRegularOrGuestSession() const; 1978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 1988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Returns the resource ID to use for the OTR icon, which depends on 1998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // which layout is being shown and whether we are full-screen. 2008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) int GetOTRIconResourceID() const; 2018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 2023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Returns the resource ID to use for the Guest icon, which may depend on 2033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // which layout is being shown and whether we are full-screen. 2043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int GetGuestIconResourceID() const; 2053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the non-client view should render an avatar icon. 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool ShouldShowAvatar() const; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Provides the containing frame with the accelerator for the specified 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // command id. This can be used to provide menu item shortcut hints etc. 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if an accelerator was found for the specified |cmd_id|, false 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // otherwise. 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Returns true if the specificed |accelerator| is registered with this view. 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool IsAcceleratorRegistered(const ui::Accelerator& accelerator); 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the active WebContents. Used by our NonClientView's 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TabIconView::TabContentsProvider implementations. 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): exposing this here is a bit bogus, since it's only used to 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // determine loading state. It'd be nicer if we could change this to be 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bool IsSelectedTabLoading() const; or something like that. We could even 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // move it to a WindowDelegate subclass. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* GetActiveWebContents() const; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Retrieves the icon to use in the frame to indicate an OTR window. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::ImageSkia GetOTRAvatarIcon() const; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the Browser object associated with this BrowserView is a 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // tabbed-type window (i.e. a browser window, not an app or popup). 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool IsBrowserTypeNormal() const { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return browser_->is_type_tabbed(); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // See ImmersiveModeController for description. 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ImmersiveModeController* immersive_mode_controller() const { 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return immersive_mode_controller_.get(); 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Restores the focused view. This is also used to set the initial focus 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when a new browser window is created. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RestoreFocus(); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetWindowSwitcherButton(views::Button* button); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Button* window_switcher_button() { 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return window_switcher_button_; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 250f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Called after the widget's fullscreen state is changed without going through 251f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // FullscreenController. This method does any processing which was skipped. 252f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Only exiting fullscreen in this way is currently supported. 253f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void FullscreenStateChanged(); 254f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called from BookmarkBarView/DownloadShelfView during their show/hide 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // animations. 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ToolbarSizeChanged(bool is_animating); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from BrowserWindow: 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Show() OVERRIDE; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowInactive() OVERRIDE; 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Hide() OVERRIDE; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Close() OVERRIDE; 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Activate() OVERRIDE; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Deactivate() OVERRIDE; 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsActive() const OVERRIDE; 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FlashFrame(bool flash) OVERRIDE; 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsAlwaysOnTop() const OVERRIDE; 2704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void SetAlwaysOnTop(bool always_on_top) OVERRIDE; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::NativeWindow GetNativeWindow() OVERRIDE; 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual StatusBubble* GetStatusBubble() OVERRIDE; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateTitleBar() OVERRIDE; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void BookmarkBarStateChanged( 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkBar::AnimateChangeType change_type) OVERRIDE; 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateDevTools() OVERRIDE; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetStarredState(bool is_starred) OVERRIDE; 280f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void SetTranslateIconToggled(bool is_lit) OVERRIDE; 28168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void OnActiveTabChanged(content::WebContents* old_contents, 28268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WebContents* new_contents, 28368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int index, 28468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int reason) OVERRIDE; 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ZoomChangedForActiveTab(bool can_show_bubble) OVERRIDE; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetRestoredBounds() const OVERRIDE; 287b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual ui::WindowShowState GetRestoredState() const OVERRIDE; 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetBounds() const OVERRIDE; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsMaximized() const OVERRIDE; 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsMinimized() const OVERRIDE; 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Maximize() OVERRIDE; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Minimize() OVERRIDE; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Restore() OVERRIDE; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnterFullscreen( 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, FullscreenExitBubbleType bubble_type) OVERRIDE; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExitFullscreen() OVERRIDE; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFullscreenExitBubbleContent( 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenExitBubbleType bubble_type) OVERRIDE; 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool ShouldHideUIForFullscreen() const OVERRIDE; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsFullscreen() const OVERRIDE; 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsFullscreenBubbleVisible() const OVERRIDE; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetMetroSnapMode(bool enable) OVERRIDE; 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsInMetroSnapMode() const OVERRIDE; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual LocationBar* GetLocationBar() const OVERRIDE; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetFocusToLocationBar(bool select_all) OVERRIDE; 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE; 3103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void UpdateToolbar(content::WebContents* contents) OVERRIDE; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusToolbar() OVERRIDE; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusAppMenu() OVERRIDE; 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusBookmarksToolbar() OVERRIDE; 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void FocusInfobars() OVERRIDE; 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RotatePaneFocus(bool forwards) OVERRIDE; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyBrowser() OVERRIDE; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsBookmarkBarVisible() const OVERRIDE; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsBookmarkBarAnimating() const OVERRIDE; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsTabStripEditable() const OVERRIDE; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsToolbarVisible() const OVERRIDE; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DisableInactiveFrame() OVERRIDE; 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ConfirmAddSearchProvider(TemplateURL* template_url, 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile) OVERRIDE; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowUpdateChromeDialog() OVERRIDE; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowBookmarkBubble(const GURL& url, 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool already_bookmarked) OVERRIDE; 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowBookmarkPrompt() OVERRIDE; 3291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void ShowTranslateBubble( 3301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) content::WebContents* contents, 331a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TranslateBubbleModel::ViewState view_state, 332a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TranslateErrors::Type error_type) OVERRIDE; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_ONE_CLICK_SIGNIN) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowOneClickSigninBubble( 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OneClickSigninBubbleType type, 336a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& email, 337a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& error_message, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StartSyncCallback& start_sync_callback) OVERRIDE; 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): Not an override, move somewhere else. 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDownloadShelfVisible(bool visible); 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsDownloadShelfVisible() const OVERRIDE; 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual DownloadShelf* GetDownloadShelf() OVERRIDE; 3443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void ConfirmBrowserCloseWithPendingDownloads( 3453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int download_count, 3463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Browser::DownloadClosePreventionType dialog_type, 3473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool app_modal, 3483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Callback<void(bool)>& callback) OVERRIDE; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UserChangedTheme() OVERRIDE; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetExtraRenderViewHeight() const OVERRIDE; 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WebContentsFocused(content::WebContents* contents) OVERRIDE; 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowWebsiteSettings(Profile* profile, 3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents, 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 3557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const content::SSLStatus& ssl) OVERRIDE; 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAppMenu() OVERRIDE; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PreHandleKeyboardEvent( 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NativeWebKeyboardEvent& event, 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* is_keyboard_shortcut) OVERRIDE; 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleKeyboardEvent( 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NativeWebKeyboardEvent& event) OVERRIDE; 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Cut() OVERRIDE; 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Copy() OVERRIDE; 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Paste() OVERRIDE; 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WindowOpenDisposition GetDispositionForPopupBounds( 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& bounds) OVERRIDE; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual FindBar* CreateFindBar() OVERRIDE; 36890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual web_modal::WebContentsModalDialogHost* 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetWebContentsModalDialogHost() OVERRIDE; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAvatarBubble(content::WebContents* web_contents, 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& rect) OVERRIDE; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAvatarBubbleFromAvatarButton() OVERRIDE; 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowPasswordGenerationBubble( 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& rect, 37558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const autofill::PasswordForm& form, 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) autofill::PasswordGenerator* password_generator) OVERRIDE; 377bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch virtual void OverscrollUpdate(int delta_y) OVERRIDE; 378424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual int GetRenderViewHeightInsetWithDetachedBookmarkBar() OVERRIDE; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from BrowserWindowTesting: 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual BookmarkBarView* GetBookmarkBarView() const OVERRIDE; 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual LocationBarView* GetLocationBarView() const OVERRIDE; 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* GetTabContentsContainerView() const OVERRIDE; 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ToolbarView* GetToolbarView() const OVERRIDE; 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from TabStripModelObserver: 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TabDetachedAt(content::WebContents* contents, 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index) OVERRIDE; 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TabDeactivated(content::WebContents* contents) OVERRIDE; 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TabStripEmpty() OVERRIDE; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::AcceleratorProvider: 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetAcceleratorForCommandId(int command_id, 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::Accelerator* accelerator) OVERRIDE; 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::WidgetDelegate: 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanResize() const OVERRIDE; 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanMaximize() const OVERRIDE; 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanActivate() const OVERRIDE; 400a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetWindowTitle() const OVERRIDE; 401a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetAccessibleWindowTitle() const OVERRIDE; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* GetInitiallyFocusedView() OVERRIDE; 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShouldShowWindowTitle() const OVERRIDE; 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::ImageSkia GetWindowAppIcon() OVERRIDE; 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::ImageSkia GetWindowIcon() OVERRIDE; 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShouldShowWindowIcon() const OVERRIDE; 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ExecuteWindowsCommand(int command_id) OVERRIDE; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetWindowName() const OVERRIDE; 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SaveWindowPlacement(const gfx::Rect& bounds, 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::WindowShowState show_state) OVERRIDE; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetSavedWindowPlacement( 4120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const views::Widget* widget, 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect* bounds, 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::WindowShowState* show_state) const OVERRIDE; 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* GetContentsView() OVERRIDE; 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::ClientView* CreateClientView(views::Widget* widget) OVERRIDE; 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWindowBeginUserBoundsChange() OVERRIDE; 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWidgetMove() OVERRIDE; 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::Widget* GetWidget() OVERRIDE; 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const views::Widget* GetWidget() const OVERRIDE; 421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void GetAccessiblePanes(std::vector<View*>* panes) OVERRIDE; 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::WidgetObserver: 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWidgetActivationChanged(views::Widget* widget, 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool active) OVERRIDE; 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::ClientView: 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanClose() OVERRIDE; 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE; 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Size GetMinimumSize() OVERRIDE; 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // InfoBarContainer::Delegate overrides 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual SkColor GetInfoBarSeparatorColor() const OVERRIDE; 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarContainerStateChanged(bool is_animating) OVERRIDE; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool DrawInfoBarArrows(int* x) const OVERRIDE; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // views::SingleSplitViewListener overrides: 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool SplitHandleMoved(views::SingleSplitView* sender) OVERRIDE; 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // gfx::SysColorChangeListener overrides: 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSysColorChange() OVERRIDE; 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Overridden from views::View: 444b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual const char* GetClassName() const OVERRIDE; 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void Layout() OVERRIDE; 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE; 447a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual void ViewHierarchyChanged( 448a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const ViewHierarchyChangedDetails& details) OVERRIDE; 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ChildPreferredSizeChanged(View* child) OVERRIDE; 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Overridden from ui::AcceleratorTarget: 453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // OmniboxPopupModelObserver overrides 4567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnOmniboxPopupShownOrHidden() OVERRIDE; 4577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 458c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Testing interface: 459c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::SingleSplitView* GetContentsSplitForTest() { return contents_split_; } 460c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentsContainer* GetContentsContainerForTest() { 461c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return contents_container_; 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 463c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::WebView* GetContentsWebViewForTest() { return contents_web_view_; } 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 46690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Do not friend BrowserViewLayout. Use the BrowserViewLayoutDelegate 46790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // interface to keep these two classes decoupled and testable. 46890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) friend class BrowserViewLayoutDelegateImpl; 469c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(BrowserViewTest, BrowserView); 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(BrowserViewsAccessibilityTest, 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestAboutChromeViewAccObj); 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum FullscreenType { 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FOR_DESKTOP, 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FOR_METRO 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 478c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Appends to |toolbars| a pointer to each AccessiblePaneView that 479c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // can be traversed using F6, in the order they should be traversed. 480c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void GetAccessiblePanes(std::vector<views::AccessiblePaneView*>* panes); 481c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Constructs and initializes the child views. 483c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void InitViews(); 484c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 485c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Callback for the loading animation(s) associated with this view. 486c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void LoadingAnimationCallback(); 487c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 488c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // LoadCompleteListener::Delegate implementation. Creates and initializes the 489c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // |jumplist_| after the first page load. 490c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void OnLoadCompleted() OVERRIDE; 491c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the BrowserViewLayout. 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserViewLayout* GetBrowserViewLayout() const; 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Layout the Status Bubble. 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LayoutStatusBubble(); 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Prepare to show the Bookmark Bar for the specified WebContents. 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the Bookmark Bar can be shown (i.e. it's supported for this 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Browser type) and there should be a subsequent re-layout to show it. 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |contents| can be NULL. 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool MaybeShowBookmarkBar(content::WebContents* contents); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 504c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Moves the bookmark bar view to the specified parent, which may be NULL, 505c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // |this|, or |top_container_|. Ensures that |top_container_| stays in front 506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // of |bookmark_bar_view_|. 507c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetBookmarkBarParent(views::View* new_parent); 508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Prepare to show an Info Bar for the specified WebContents. Returns 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if there is an Info Bar to show and one is supported for this Browser 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // type, and there should be a subsequent re-layout to show it. 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |contents| can be NULL. 5132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool MaybeShowInfoBar(content::WebContents* contents); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates devtools window for given contents. This method will show docked 5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // devtools window for inspected |web_contents| that has docked devtools 5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and hide it for NULL or not inspected |web_contents|. It will also make 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sure devtools window size and position are restored for given tab. 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateDevToolsForContents(content::WebContents* web_contents); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows docked devtools. 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowDevToolsContainer(); 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Hides docked devtools. 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void HideDevToolsContainer(); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reads split position from the current tab's devtools window and applies 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it to the devtools split. 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateDevToolsSplitPosition(); 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates various optional child Views, e.g. Bookmarks Bar, Info Bar or the 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Download Shelf in response to a change notification from the specified 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |contents|. |contents| can be NULL. In this case, all optional UI will be 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // removed. 5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateUIForContents(content::WebContents* contents); 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked to update the necessary things when our fullscreen state changes 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to |fullscreen|. On Windows this is invoked immediately when we toggle the 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // full screen state. On Linux changing the fullscreen state is async, so we 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ask the window to change its fullscreen state, then when we get 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // notification that it succeeded this method is invoked. 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If |url| is not empty, it is the URL of the page that requested fullscreen 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (via the fullscreen JS API). 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |bubble_type| determines what should be shown in the fullscreen exit 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bubble. 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ProcessFullscreen(bool fullscreen, 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenType fullscreen_type, 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenExitBubbleType bubble_type); 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 551eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Returns whether immmersive fullscreen should replace fullscreen. This 552eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // should only occur for "browser-fullscreen" for tabbed-typed windows (not 553eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // for tab-fullscreen and not for app/popup type windows). 554eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool ShouldUseImmersiveFullscreenForUrl(const GURL& url) const; 555eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Copy the accelerator table from the app resources into something we can 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use. 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadAccelerators(); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Retrieves the command id for the specified Windows app command. 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetCommandIDForAppCommandID(int app_command_id) const; 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initialize the hung plugin detector. 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitHangMonitor(); 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Possibly records a user metrics action corresponding to the passed-in 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // accelerator. Only implemented for Chrome OS, where we're interested in 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // learning about how frequently the top-row keys are used. 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateAcceleratorMetrics(const ui::Accelerator& accelerator, 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command_id); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Calls |method| which is either RenderWidgetHost::Cut, ::Copy, or ::Paste, 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // first trying the content WebContents, then the devtools WebContents, and 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // lastly the Views::Textfield if one is focused. 5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DoCutCopyPaste(void (content::RenderWidgetHost::*method)(), 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int command_id); 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Calls |method| which is either RenderWidgetHost::Cut, ::Copy, or ::Paste on 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the given WebContents, returning true if it consumed the event. 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool DoCutCopyPasteForWebContents( 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* contents, 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void (content::RenderWidgetHost::*method)()); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the next app-modal dialog box, if there is one to be shown, or moves 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // an existing showing one to the front. 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ActivateAppModalDialog() const; 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Returns the max top arrow height for infobar. 589a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) int GetMaxTopInfoBarArrowHeight(); 590a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Last focused view that issued a tab traversal. 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int last_focused_view_storage_id_; 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The BrowserFrame that hosts this view. 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserFrame* frame_; 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Browser object we are associated with. 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<Browser> browser_; 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BrowserView layout (LTR one is pictured here). 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // -------------------------------------------------------------------- 6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | TopContainerView (top_container_) | 6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | Tabs (tabstrip_) | | 6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | |------------------------------------------------------------| | 6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | Navigation buttons, address bar, menu (toolbar_) | | 6082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 6092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |------------------------------------------------------------------| 610ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // | All infobars (infobar_container_) [1] | 611a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // |------------------------------------------------------------------| 612ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // | Bookmarks (bookmark_bar_view_) [1] | 6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |------------------------------------------------------------------| 6142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | Debugger splitter (contents_split_) | 6152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 616c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // | | Page content (contents_container_) | | 6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | -------------------------------------------------------- | | 618a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // | | | contents_web_view_ | | | 6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | -------------------------------------------------------- | | 6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | Debugger (devtools_container_) | | 6232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | | | | 6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | -------------------------------------------------------------- | 6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |------------------------------------------------------------------| 6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // | Active downloads (download_shelf_) | 6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // -------------------------------------------------------------------- 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 629ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // [1] The bookmark bar and info bar are swapped when on the new tab page. 630ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Additionally when the bookmark bar is detached, contents_container_ is 631ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // positioned on top of the bar while the tab's contents are placed below 632ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // the bar. This allows the find bar to always align with the top of 633ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // contents_container_ regardless if there's bookmark or info bars. 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The view that manages the tab strip, toolbar, and sometimes the bookmark 636ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // bar. Stacked top in the view hiearachy so it can be used to slide out 637a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // the top views in immersive fullscreen. 6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TopContainerView* top_container_; 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The TabStrip. 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tabstrip_; 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Toolbar containing the navigation buttons, menus and the address bar. 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ToolbarView* toolbar_; 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This button sits next to the tabs on the right hand side and it is used 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // only in windows metro metro mode to allow the user to flip among browser 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // windows. 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Button* window_switcher_button_; 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 651c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The Bookmark Bar View for this window. Lazily created. May be NULL for 652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // non-tabbed browsers like popups. May not be visible. 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<BookmarkBarView> bookmark_bar_view_; 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // The do-nothing view which controls the z-order of the find bar widget 656868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // relative to views which paint into layers and views with an associated 657868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // NativeView. 658868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) View* find_bar_host_view_; 659868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The download shelf view (view at the bottom of the page). 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<DownloadShelfView> download_shelf_; 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The InfoBarContainerView that contains InfoBars for the current tab. 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InfoBarContainerView* infobar_container_; 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The view that contains the selected WebContents. 667c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::WebView* contents_web_view_; 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The view that contains devtools window for the selected WebContents. 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::WebView* devtools_container_; 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 672a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // The view managing the |contents_web_view_|. 673c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ContentsContainer* contents_container_; 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Split view containing the contents container and devtools container. 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::SingleSplitView* contents_split_; 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Side to dock devtools to. 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DevToolsDockSide devtools_dock_side_; 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Docked devtools window instance. NULL when current tab is not inspected 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or is inspected with undocked version of DevToolsWindow. 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DevToolsWindow* devtools_window_; 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tracks and stores the last focused view which is not the 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // devtools_container_ or any of its children. Used to restore focus once 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the devtools_container_ is hidden. 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<views::ExternalFocusTracker> devtools_focus_tracker_; 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The Status information bubble that appears at the bottom of the window. 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<StatusBubbleViews> status_bubble_; 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A mapping between accelerators and commands. 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<ui::Accelerator, int> accelerator_table_; 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if we have already been initialized. 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool initialized_; 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // True when in ProcessFullscreen(). The flag is used to avoid reentrance and 7001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // to ignore requests to layout while in ProcessFullscreen() to reduce 7011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // jankiness. 7021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool in_process_fullscreen_; 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<FullscreenExitBubbleViews> fullscreen_bubble_; 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 706f60fc993c7b081abf77ce2ffc7fcca1142c8cb01Torne (Richard Coles)#if defined(OS_WIN) 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This object is used to perform periodic actions in a worker 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // thread. It is currently used to monitor hung plugin windows. 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WorkerThreadTicker ticker_; 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This object is initialized with the frame window HWND. This 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // object is also passed as a tick handler with the ticker_ object. 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // It is used to periodically monitor for hung plugin windows 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HungWindowDetector hung_window_detector_; 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This object is invoked by hung_window_detector_ when it detects a hung 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // plugin window. 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HungPluginAction hung_plugin_action_; 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Helper class to listen for completion of first page load. 7212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<LoadCompleteListener> load_complete_listener_; 7222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The custom JumpList for Windows 7. 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<JumpList> jumplist_; 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The timer used to update frames for the Loading Animation. 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RepeatingTimer<BrowserView> loading_animation_timer_; 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 730c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_; 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to measure the loading spinner animation rate. 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeTicks last_animation_time_; 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If this flag is set then SetFocusToLocationBar() will set focus to the 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // location bar even if the browser window is not active. 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool force_location_bar_focus_; 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ImmersiveModeController> immersive_mode_controller_; 7402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 741a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<ScrollEndEffectController> scroll_end_effect_controller_; 742a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::ScopedSysColorChangeListener color_change_listener_; 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable base::WeakPtrFactory<BrowserView> activate_modal_dialog_factory_; 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowserView); 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_VIEW_H_ 751