12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 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_BROWSER_WINDOW_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_BROWSER_WINDOW_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/lifetime/browser_close_manager.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/bookmarks/bookmark_bar.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/host_desktop.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/sync/one_click_signin_sync_starter.h" 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/ui/translate/translate_bubble_model.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/content_settings_types.h" 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/common/translate/translate_errors.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/base/base_window.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/window_open_disposition.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Browser; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserWindowTesting; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadShelf; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FindBar; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBar; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StatusBubble; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURL; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ToolbarView; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace autofill { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PasswordGenerator; 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)struct PasswordForm; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NativeWebKeyboardEvent; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SSLStatus; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Extension; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Rect; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Size; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace web_modal { 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class WebContentsModalDialogHost; 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// BrowserWindow interface 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An interface implemented by the "view" of the Browser window. 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// This interface includes ui::BaseWindow methods as well as Browser window 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// specific methods. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: All getters may return NULL. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class BrowserWindow : public ui::BaseWindow { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~BrowserWindow() {} 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ////////////////////////////////////////////////////////////////////////////// 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // ui::BaseWindow interface notes: 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Closes the window as soon as possible. If the window is not in a drag 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // session, it will close immediately; otherwise, it will move offscreen (so 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // events are still fired) until the drag ends, then close. This assumes 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that the Browser is not immediately destroyed, but will be eventually 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // destroyed by other means (eg, the tab strip going to zero elements). 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Bad things happen if the Browser dtor is called directly as a result of 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // invoking this method. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // virtual void Close() = 0; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Browser::OnWindowDidShow should be called after showing the window. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // virtual void Show() = 0; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ////////////////////////////////////////////////////////////////////////////// 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Browser specific methods: 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a pointer to the testing interface to the Browser window, or NULL 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // if there is none. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual BrowserWindowTesting* GetBrowserWindowTesting() = 0; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Return the status bubble associated with the frame 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual StatusBubble* GetStatusBubble() = 0; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inform the frame that the selected tab favicon or title has changed. Some 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // frames may need to refresh their title bar. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateTitleBar() = 0; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when the state of the bookmark bar changes. This is only invoked if 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the state changes for the current tab, it is not sent when switching tabs. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void BookmarkBarStateChanged( 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkBar::AnimateChangeType change_type) = 0; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inform the frame that the dev tools window for the selected tab has 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // changed. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateDevTools() = 0; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update any loading animations running in the window. |should_animate| is 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if there are tabs loading and the animations should continue, false 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // if there are no active loads and the animations should end. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateLoadingAnimations(bool should_animate) = 0; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the starred state for the current tab. 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetStarredState(bool is_starred) = 0; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Sets whether the translate icon is lit for the current tab. 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void SetTranslateIconToggled(bool is_lit) = 0; 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Called when the active tab changes. Subclasses which implement 12068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // TabStripModelObserver should implement this instead of ActiveTabChanged(); 12168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // the Browser will call this method while processing that one. 12268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void OnActiveTabChanged(content::WebContents* old_contents, 12368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::WebContents* new_contents, 12468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int index, 12568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int reason) = 0; 12668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to force the zoom state to for the active tab to be recalculated. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |can_show_bubble| is true when a user presses the zoom up or down keyboard 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // shortcuts and will be false in other cases (e.g. switching tabs, "clicking" 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // + or - in the wrench menu to change zoom). 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ZoomChangedForActiveTab(bool can_show_bubble) = 0; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Accessors for fullscreen mode state. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnterFullscreen(const GURL& url, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenExitBubbleType bubble_type) = 0; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExitFullscreen() = 0; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateFullscreenExitBubbleContent( 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenExitBubbleType bubble_type) = 0; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Windows and GTK remove the top controls in fullscreen, but Mac and Ash 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // keep the controls in a slide-down panel. 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool ShouldHideUIForFullscreen() const = 0; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the fullscreen bubble is visible. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsFullscreenBubbleVisible() const = 0; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets state for entering or exiting Win8 Metro snap mode. 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetMetroSnapMode(bool enable) = 0; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether the window is currently in Win8 Metro snap mode. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsInMetroSnapMode() const = 0; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the location bar. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual LocationBar* GetLocationBar() const = 0; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tries to focus the location bar. Clears the window focus (to avoid 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // inconsistent state) if this fails. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetFocusToLocationBar(bool select_all) = 0; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Informs the view whether or not a load is in progress for the current tab. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The view can use this notification to update the reload/stop button. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateReloadStopState(bool is_loading, bool force) = 0; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the toolbar with the state for the specified |contents|. 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void UpdateToolbar(content::WebContents* contents) = 0; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focuses the toolbar (for accessibility). 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusToolbar() = 0; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focuses the app menu like it was a menu bar. 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Not used on the Mac, which has a "normal" menu bar. 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusAppMenu() = 0; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focuses the bookmarks toolbar (for accessibility). 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusBookmarksToolbar() = 0; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Focuses an infobar, if shown (for accessibility). 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void FocusInfobars() = 0; 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Moves keyboard focus to the next pane. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RotatePaneFocus(bool forwards) = 0; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether the bookmark bar is visible or not. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsBookmarkBarVisible() const = 0; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether the bookmark bar is animating or not. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsBookmarkBarAnimating() const = 0; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether the tab strip is editable (for extensions). 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsTabStripEditable() const = 0; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether the tool bar is visible or not. 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsToolbarVisible() const = 0; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the rect where the resize corner should be drawn by the render 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // widget host view (on top of what the renderer returns). We return an empty 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // rect to identify that there shouldn't be a resize corner (in the cases 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // where we take care of it ourselves at the browser level). 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetRootWindowResizerRect() const = 0; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tells the frame not to render as inactive until the next activation change. 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is required on Windows when dropdown selects are shown to prevent the 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // select from deactivating the browser frame. A stub implementation is 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // provided here since the functionality is Windows-specific. 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DisableInactiveFrame() {} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows a confirmation dialog box for adding a search engine described by 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |template_url|. Takes ownership of |template_url|. 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ConfirmAddSearchProvider(TemplateURL* template_url, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile) = 0; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the Update Recommended dialog box. 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowUpdateChromeDialog() = 0; 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the Bookmark bubble. |url| is the URL being bookmarked, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |already_bookmarked| is true if the url is already bookmarked. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked) = 0; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the bookmark prompt. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(yosin): Make ShowBookmarkPrompt pure virtual. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowBookmarkPrompt() {} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Shows the translate bubble. 2281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void ShowTranslateBubble( 2291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) content::WebContents* contents, 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TranslateBubbleModel::ViewState view_state, 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TranslateErrors::Type error_type) = 0; 2321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_ONE_CLICK_SIGNIN) 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum OneClickSigninBubbleType { 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE, 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG, 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback type used with the ShowOneClickSigninBubble() method. If the 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // user chooses to accept the sign in, the callback is called to start the 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sync process. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(OneClickSigninSyncStarter::StartSyncMode)> 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartSyncCallback; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Shows the one-click sign in bubble. |email| holds the full email address 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // of the account that has signed in. 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowOneClickSigninBubble( 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OneClickSigninBubbleType type, 250a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& email, 251a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& error_message, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StartSyncCallback& start_sync_callback) = 0; 2531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether or not the shelf view is visible. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsDownloadShelfVisible() const = 0; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the DownloadShelf. 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual DownloadShelf* GetDownloadShelf() = 0; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the confirmation dialog box warning that the browser is closing with 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in-progress downloads. 2633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // This method should call |callback| with the user's response. 2643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void ConfirmBrowserCloseWithPendingDownloads( 2653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int download_count, 2663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Browser::DownloadClosePreventionType dialog_type, 2673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool app_modal, 2683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::Callback<void(bool)>& callback) = 0; 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ThemeService calls this when a user has changed his or her theme, 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // indicating that it's time to redraw everything. 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UserChangedTheme() = 0; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get extra vertical height that the render view should add to its requests 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to webkit. This can help prevent sending extraneous layout/repaint requests 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when the delegate is in the process of resizing the tab contents view (e.g. 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // during infobar animations). 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetExtraRenderViewHeight() const = 0; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notification that |contents| got the focus through user action (click 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // on the page). 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WebContentsFocused(content::WebContents* contents) = 0; 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the website settings using the specified information. |url| is the 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // url of the page/frame the info applies to, |ssl| is the SSL information for 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that page/frame. If |show_history| is true, a section showing how many 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // times that URL has been visited is added to the page info. 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowWebsiteSettings(Profile* profile, 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents, 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 2917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const content::SSLStatus& ssl) = 0; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the app menu (for accessibility). 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAppMenu() = 0; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Allows the BrowserWindow object to handle the specified keyboard event 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // before sending it to the renderer. 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the |event| was handled. Otherwise, if the |event| would 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be handled in HandleKeyboardEvent() method as a normal keyboard shortcut, 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |*is_keyboard_shortcut| should be set to true. 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PreHandleKeyboardEvent( 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NativeWebKeyboardEvent& event, 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* is_keyboard_shortcut) = 0; 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Allows the BrowserWindow object to handle the specified keyboard event, 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // if the renderer did not process it. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleKeyboardEvent( 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NativeWebKeyboardEvent& event) = 0; 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clipboard commands applied to the whole browser window. 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Cut() = 0; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Copy() = 0; 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Paste() = 0; 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Opens the tabpose view. 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OpenTabpose() = 0; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enters Mac specific fullscreen mode with chrome displayed (e.g. omnibox) 3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // on OSX 10.7+, a.k.a. Lion Fullscreen mode. 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Invalid to call on OSX earlier than 10.7. 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enters either from non fullscreen, or from fullscreen without chrome. 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Exit to normal fullscreen with EnterFullscreen(). 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void EnterFullscreenWithChrome() = 0; 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsFullscreenWithChrome() = 0; 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsFullscreenWithoutChrome() = 0; 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Return the correct disposition for a popup window based on |bounds|. 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WindowOpenDisposition GetDispositionForPopupBounds( 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& bounds) = 0; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Construct a FindBar implementation for the |browser|. 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual FindBar* CreateFindBar() = 0; 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Return the WebContentsModalDialogHost for use in positioning web contents 33758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // modal dialogs within the browser window. This can sometimes be NULL (for 33858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // instance during tab drag on Views/Win32). 33990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual web_modal::WebContentsModalDialogHost* 34090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetWebContentsModalDialogHost() = 0; 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when the preferred size of the contents in current tab has been 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // changed. We might choose to update the window size to accomodate this 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // change. 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Note that this won't be fired if we change tabs. 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdatePreferredSize(content::WebContents* web_contents, 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& pref_size) {} 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when the contents auto-resized and the container should match it. 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResizeDueToAutoResize(content::WebContents* web_contents, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& new_size) {} 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Construct a BrowserWindow implementation for the specified |browser|. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static BrowserWindow* CreateBrowserWindow(Browser* browser); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 356f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Returns a HostDesktopType that is compatible with the current Chrome window 357f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // configuration. On Windows with Ash, this is always HOST_DESKTOP_TYPE_ASH 358f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // while Chrome is running in Metro mode. Otherwise returns |desktop_type|. 359f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static chrome::HostDesktopType AdjustHostDesktopType( 360f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::HostDesktopType desktop_type); 361f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the avatar bubble inside |web_contents|. The bubble is positioned 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // relative to |rect|. |rect| should be in the |web_contents| coordinate 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // system. 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAvatarBubble(content::WebContents* web_contents, 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& rect) = 0; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the avatar bubble on the window frame off of the avatar button. 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowAvatarBubbleFromAvatarButton() = 0; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show bubble for password generation positioned relative to |rect|. The 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // subclasses implementing this interface do not own the |password_generator| 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // object which is passed to generate the password. |form| is the form that 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // contains the password field that the bubble will be associated with. 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowPasswordGenerationBubble( 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& rect, 37758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const autofill::PasswordForm& form, 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) autofill::PasswordGenerator* password_generator) = 0; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 380bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // Invoked when the amount of vertical overscroll changes. |delta_y| is the 381bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // amount of overscroll that has occured in the y-direction. 382bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch virtual void OverscrollUpdate(int delta_y) {} 383bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 384424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Returns the height inset for RenderView when detached bookmark bar is 385424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // shown. Invoked when a new RenderHostView is created for a non-NTP 386424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // navigation entry and the bookmark bar is detached. 387424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual int GetRenderViewHeightInsetWithDetachedBookmarkBar() = 0; 388424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 3903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) friend class BrowserCloseManager; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class BrowserView; 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyBrowser() = 0; 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) || defined(TOOLKIT_VIEWS) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BookmarkBarView; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarView; 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class View; 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A BrowserWindow utility interface used for accessing elements of the browser 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// UI used only by UI test automation. 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserWindowTesting { 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) || defined(TOOLKIT_VIEWS) 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the BookmarkBarView. 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual BookmarkBarView* GetBookmarkBarView() const = 0; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the LocationBarView. 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual LocationBarView* GetLocationBarView() const = 0; 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the TabContentsContainer. 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* GetTabContentsContainerView() const = 0; 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the ToolbarView. 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ToolbarView* GetToolbarView() const = 0; 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~BrowserWindowTesting() {} 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_BROWSER_WINDOW_H_ 427