172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// found in the LICENSE file. 4513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 5513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#ifndef CHROME_BROWSER_UI_BROWSER_WINDOW_H_ 6513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define CHROME_BROWSER_UI_BROWSER_WINDOW_H_ 7513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#pragma once 8513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 9513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/common/content_settings_types.h" 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/navigation_entry.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/native_widget_types.h" 12513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 13513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass Browser; 14513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass BrowserWindowTesting; 15513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass DownloadShelf; 16513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass FindBar; 17513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass GURL; 18513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass HtmlDialogUIDelegate; 19513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass LocationBar; 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Panel; 21513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass Profile; 22513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass StatusBubble; 23513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass TabContents; 24201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochclass TabContentsWrapper; 25513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass TemplateURL; 26513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass TemplateURLModel; 27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if !defined(OS_MACOSX) 28513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass ToolbarView; 29513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 30513209b27ff55e2841eac0e4120199c23acce758Ben Murdochstruct NativeWebKeyboardEvent; 31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 32513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace gfx { 33513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass Rect; 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 36513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace views { 37513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass Window; 38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 40201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochclass Extension; 41201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch//////////////////////////////////////////////////////////////////////////////// 43513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// BrowserWindow interface 44513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// An interface implemented by the "view" of the Browser window. 45513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// 46513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// NOTE: All getters may return NULL. 47513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass BrowserWindow { 48513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~BrowserWindow() {} 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Show the window, or activates it if it's already visible. 52513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Show() = 0; 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Show the window, but do not activate it. Does nothing if window 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // is already visible. 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ShowInactive() = 0; 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 58513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Sets the window's size and position to the specified values. 59513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void SetBounds(const gfx::Rect& bounds) = 0; 60513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 61513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Closes the frame as soon as possible. If the frame is not in a drag 62513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // session, it will close immediately; otherwise, it will move offscreen (so 63513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // events are still fired) until the drag ends, then close. This assumes 64513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // that the Browser is not immediately destroyed, but will be eventually 65513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // destroyed by other means (eg, the tab strip going to zero elements). 66513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Bad things happen if the Browser dtor is called directly as a result of 67513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // invoking this method. 68513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Close() = 0; 69513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 70513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Activates (brings to front) the window. Restores the window from minimized 71513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // state if necessary. 72513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Activate() = 0; 73513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 74513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Deactivates the window, making the next window in the Z order the active 75513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // window. 76513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Deactivate() = 0; 77513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 78513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns true if the window is currently the active/focused window. 79513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsActive() const = 0; 80513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 81513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Flashes the taskbar item associated with this frame. 82513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void FlashFrame() = 0; 83513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 84513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Return a platform dependent identifier for this frame. On Windows, this 85513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // returns an HWND. 86513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual gfx::NativeWindow GetNativeHandle() = 0; 87513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 88513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns a pointer to the testing interface to the Browser window, or NULL 89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // if there is none. 90513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual BrowserWindowTesting* GetBrowserWindowTesting() = 0; 91513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 92513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Return the status bubble associated with the frame 93513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual StatusBubble* GetStatusBubble() = 0; 94513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 95513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Inform the receiving frame that an animation has progressed in the 96513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // selected tab. 97513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // TODO(beng): Remove. Infobars/Boomarks bars should talk directly to 98513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // BrowserView. 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ToolbarSizeChanged(bool is_animating) = 0; 100513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 101513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Inform the frame that the selected tab favicon or title has changed. Some 102513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // frames may need to refresh their title bar. 103513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void UpdateTitleBar() = 0; 104513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 105513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Invoked when the visibility of the bookmark bar. 106513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // NOTE: this is NOT sent when the user toggles the visibility of this, 107513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // but rather when the user transitions from a page that forces 108513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // it to be visibile to one that doesn't have it visible (or 109513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // vice-versa). 110513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // TODO(sky): see about routing visibility pref changing through here too. 111513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShelfVisibilityChanged() = 0; 112513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 113513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Inform the frame that the dev tools window for the selected tab has 114513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // changed. 115513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void UpdateDevTools() = 0; 116513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 117513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Update any loading animations running in the window. |should_animate| is 118513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // true if there are tabs loading and the animations should continue, false 119513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // if there are no active loads and the animations should end. 120513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void UpdateLoadingAnimations(bool should_animate) = 0; 121513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 122513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Sets the starred state for the current tab. 123513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void SetStarredState(bool is_starred) = 0; 124513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 125513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the nonmaximized bounds of the frame (even if the frame is 126513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // currently maximized or minimized) in terms of the screen coordinates. 127513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual gfx::Rect GetRestoredBounds() const = 0; 128513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 12972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Retrieves the window's current bounds, including its frame. 13072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // This will only differ from GetRestoredBounds() for maximized 13172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // and minimized windows. 13272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual gfx::Rect GetBounds() const = 0; 13372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 134513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // TODO(beng): REMOVE? 135513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns true if the frame is maximized (aka zoomed). 136513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsMaximized() const = 0; 137513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 138513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Accessors for fullscreen mode state. 139513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void SetFullscreen(bool fullscreen) = 0; 140513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsFullscreen() const = 0; 141513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 142513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns true if the fullscreen bubble is visible. 143513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsFullscreenBubbleVisible() const = 0; 144513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 145513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the location bar. 146513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual LocationBar* GetLocationBar() const = 0; 147513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 148513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Tries to focus the location bar. Clears the window focus (to avoid 149513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // inconsistent state) if this fails. 150513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void SetFocusToLocationBar(bool select_all) = 0; 151513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 152513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Informs the view whether or not a load is in progress for the current tab. 153513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // The view can use this notification to update the reload/stop button. 154513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void UpdateReloadStopState(bool is_loading, bool force) = 0; 155513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 156513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Updates the toolbar with the state for the specified |contents|. 157201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void UpdateToolbar(TabContentsWrapper* contents, 158513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch bool should_restore_state) = 0; 159513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 160513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Focuses the toolbar (for accessibility). 161513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void FocusToolbar() = 0; 162513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 163513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Focuses the app menu like it was a menu bar. 164513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // 165513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Not used on the Mac, which has a "normal" menu bar. 166513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void FocusAppMenu() = 0; 167513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 168513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Focuses the bookmarks toolbar (for accessibility). 169513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void FocusBookmarksToolbar() = 0; 170513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 171513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Focuses the Chrome OS status view (for accessibility). 172513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void FocusChromeOSStatus() = 0; 173513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 174513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Moves keyboard focus to the next pane. 175513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void RotatePaneFocus(bool forwards) = 0; 176513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 177513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns whether the bookmark bar is visible or not. 178513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsBookmarkBarVisible() const = 0; 179513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 180513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns whether the bookmark bar is animating or not. 181513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsBookmarkBarAnimating() const = 0; 182513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 18321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Returns whether the tab strip is editable (for extensions). 18421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual bool IsTabStripEditable() const = 0; 18521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 186513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns whether the tool bar is visible or not. 187513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsToolbarVisible() const = 0; 188513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 189513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Tells the frame not to render as inactive until the next activation change. 190513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // This is required on Windows when dropdown selects are shown to prevent the 191513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // select from deactivating the browser frame. A stub implementation is 192513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // provided here since the functionality is Windows-specific. 193513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void DisableInactiveFrame() {} 194513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 195513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows a confirmation dialog box for setting the default search engine 196513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // described by |template_url|. Takes ownership of |template_url|. 197513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ConfirmSetDefaultSearchProvider( 198513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch TabContents* tab_contents, 199513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch TemplateURL* template_url, 200513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch TemplateURLModel* template_url_model) { 201513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // TODO(levin): Implement this for non-Windows platforms and make it pure. 202dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // http://crbug.com/38475 203513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 204513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 205513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows a confirmation dialog box for adding a search engine described by 206513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // |template_url|. Takes ownership of |template_url|. 207513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ConfirmAddSearchProvider(const TemplateURL* template_url, 208513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch Profile* profile) = 0; 209513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 210513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows or hides the bookmark bar depending on its current visibility. 211513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ToggleBookmarkBar() = 0; 212513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 213513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the About Chrome dialog box. 214dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void ShowAboutChromeDialog() = 0; 215513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 216513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the Update Recommended dialog box. 217513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowUpdateChromeDialog() = 0; 218513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 219513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the Task manager. 220513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowTaskManager() = 0; 221513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 22272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Shows task information related to background pages. 22372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void ShowBackgroundPages() = 0; 22472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 225513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the Bookmark bubble. |url| is the URL being bookmarked, 226513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // |already_bookmarked| is true if the url is already bookmarked. 227513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked) = 0; 228513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 229513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Whether or not the shelf view is visible. 230513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool IsDownloadShelfVisible() const = 0; 231513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 232513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the DownloadShelf. 233513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual DownloadShelf* GetDownloadShelf() = 0; 234513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 235513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the repost form confirmation dialog box. 236513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowRepostFormWarningDialog(TabContents* tab_contents) = 0; 237513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 238513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the collected cookies dialog box. 239513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowCollectedCookiesDialog(TabContents* tab_contents) = 0; 240513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 241513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Show the bubble that indicates to the user that a theme is being installed. 242513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowThemeInstallBubble() = 0; 243513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 244513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the confirmation dialog box warning that the browser is closing with 245513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // in-progress downloads. 246513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // This method should call Browser::InProgressDownloadResponse once the user 247513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // has confirmed. 248513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ConfirmBrowserCloseWithPendingDownloads() = 0; 249513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 250ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Shows a dialog box with HTML content. |parent_window| is the window the 251ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // dialog should be opened modal to and is a native window handle. 252513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowHTMLDialog(HtmlDialogUIDelegate* delegate, 253513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch gfx::NativeWindow parent_window) = 0; 254513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 255ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // ThemeService calls this when a user has changed his or her theme, 256513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // indicating that it's time to redraw everything. 257513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void UserChangedTheme() = 0; 258513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 259513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Get extra vertical height that the render view should add to its requests 260513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // to webkit. This can help prevent sending extraneous layout/repaint requests 261513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // when the delegate is in the process of resizing the tab contents view (e.g. 262513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // during infobar animations). 263513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual int GetExtraRenderViewHeight() const = 0; 264513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 265513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Notification that |tab_contents| got the focus through user action (click 266513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // on the page). 267513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void TabContentsFocused(TabContents* tab_contents) = 0; 268513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 269513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the page info using the specified information. 270513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // |url| is the url of the page/frame the info applies to, |ssl| is the SSL 271513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // information for that page/frame. If |show_history| is true, a section 272513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // showing how many times that URL has been visited is added to the page info. 273513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowPageInfo(Profile* profile, 274513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const GURL& url, 275513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const NavigationEntry::SSLStatus& ssl, 276513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch bool show_history) = 0; 277513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 278513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the app menu (for accessibility). 279513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ShowAppMenu() = 0; 280513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 281513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Allows the BrowserWindow object to handle the specified keyboard event 282513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // before sending it to the renderer. 283513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns true if the |event| was handled. Otherwise, if the |event| would 284513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // be handled in HandleKeyboardEvent() method as a normal keyboard shortcut, 285513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // |*is_keyboard_shortcut| should be set to true. 286513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, 287513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch bool* is_keyboard_shortcut) = 0; 288513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 289513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Allows the BrowserWindow object to handle the specified keyboard event, 290513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // if the renderer did not process it. 291513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event) = 0; 292513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 293513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Shows the create web app shortcut dialog box. 294ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ShowCreateWebAppShortcutsDialog( 295ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TabContentsWrapper* tab_contents) = 0; 296201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 297201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // Shows the create chrome app shortcut dialog box. 298201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void ShowCreateChromeAppShortcutsDialog(Profile* profile, 299201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const Extension* app) = 0; 300513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 301513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Clipboard commands applied to the whole browser window. 302513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Cut() = 0; 303513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Copy() = 0; 304513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void Paste() = 0; 305513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 306513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Switches between available tabstrip display modes. 307513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ToggleTabStripMode() = 0; 308513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 309513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_MACOSX) 310513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Opens the tabpose view. 311513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OpenTabpose() = 0; 312513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 313513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 3144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // See InstantDelegate for details. 3154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void PrepareForInstant() = 0; 3164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 317513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Invoked when instant's tab contents should be shown. 318ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ShowInstant(TabContentsWrapper* preview) = 0; 319513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 320513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Invoked when the instant's tab contents should be hidden. 321201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // |instant_is_active| indicates if instant is still active. 322201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void HideInstant(bool instant_is_active) = 0; 323513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 324513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the desired bounds for instant in screen coordinates. Note that if 325513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // instant isn't currently visible this returns the bounds instant would be 326513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // placed at. 327513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual gfx::Rect GetInstantBounds() = 0; 328513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 32921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#if defined(OS_CHROMEOS) 33021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Shows the keyboard overlay dialog box. 33121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual void ShowKeyboardOverlay(gfx::NativeWindow owning_window) = 0; 33221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif 33321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 334513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Construct a BrowserWindow implementation for the specified |browser|. 335513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch static BrowserWindow* CreateBrowserWindow(Browser* browser); 336513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 337513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Construct a FindBar implementation for the specified |browser|. 338513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch static FindBar* CreateFindBar(Browser* browser_window); 339513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 340513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 341513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch friend class BrowserList; 342513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch friend class BrowserView; 343513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void DestroyBrowser() = 0; 344513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}; 345513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 346513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) || defined(TOOLKIT_VIEWS) 347513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass BookmarkBarView; 348513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass LocationBarView; 349513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 350513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace views { 351513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass View; 352513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 353513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif // defined(OS_WIN) 354513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 355513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// A BrowserWindow utility interface used for accessing elements of the browser 356513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// UI used only by UI test automation. 357513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass BrowserWindowTesting { 358513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 359513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_WIN) || defined(TOOLKIT_VIEWS) 360513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the BookmarkBarView. 361513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual BookmarkBarView* GetBookmarkBarView() const = 0; 362513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 363513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the LocationBarView. 364513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual LocationBarView* GetLocationBarView() const = 0; 365513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 366513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the TabContentsContainer. 367513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual views::View* GetTabContentsContainerView() const = 0; 368513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 369513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the TabContentsContainer. 370513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual views::View* GetSidebarContainerView() const = 0; 371513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 372513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Returns the ToolbarView. 373513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ToolbarView* GetToolbarView() const = 0; 374513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 375513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 376513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 377513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~BrowserWindowTesting() {} 378513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}; 379513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 380513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif // CHROME_BROWSER_UI_BROWSER_WINDOW_H_ 381