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_BROWSER_COMMANDS_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_BROWSER_COMMANDS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/devtools/devtools_toggle_action.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/host_desktop.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model_delegate.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_zoom.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/window_open_disposition.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Browser; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandObserver; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PageState; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SSLStatus; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// For all commands, where a tab is not specified, the active tab is assumed. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsCommandEnabled(Browser* browser, int command); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SupportsCommand(Browser* browser, int command); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ExecuteCommand(Browser* browser, int command); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ExecuteCommandWithDisposition(Browser* browser, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowOpenDisposition disposition); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateCommandEnabled(Browser* browser, int command, bool enabled); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddCommandObserver(Browser*, int command, CommandObserver* observer); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RemoveCommandObserver(Browser*, int command, CommandObserver* observer); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetContentRestrictions(const Browser* browser); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Opens a new window with the default blank tab. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NewEmptyWindow(Profile* profile, HostDesktopType desktop_type); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Opens a new window with the default blank tab. This bypasses metrics and 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// various internal bookkeeping; NewEmptyWindow (above) is preferred. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Browser* OpenEmptyWindow(Profile* profile, HostDesktopType desktop_type); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Opens a new window with the tabs from |profile|'s TabRestoreService. 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void OpenWindowWithRestoredTabs(Profile* profile, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HostDesktopType host_desktop_type); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Opens the specified URL in a new browser window in an incognito session on 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the desktop specified by |desktop_type|. If there is already an existing 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// active incognito session for the specified |profile|, that session is re- 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// used. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenURLOffTheRecord(Profile* profile, const GURL& url, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::HostDesktopType desktop_type); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanGoBack(const Browser* browser); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GoBack(Browser* browser, WindowOpenDisposition disposition); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanGoForward(const Browser* browser); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GoForward(Browser* browser, WindowOpenDisposition disposition); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NavigateToIndexWithDisposition(Browser* browser, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index, 6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) WindowOpenDisposition disposition); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Reload(Browser* browser, WindowOpenDisposition disposition); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ReloadIgnoringCache(Browser* browser, WindowOpenDisposition disposition); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanReload(const Browser* browser); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Home(Browser* browser, WindowOpenDisposition disposition); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenCurrentURL(Browser* browser); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Stop(Browser* browser); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NewWindow(Browser* browser); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NewIncognitoWindow(Browser* browser); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CloseWindow(Browser* browser); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NewTab(Browser* browser); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CloseTab(Browser* browser); 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool CanZoomIn(content::WebContents* contents); 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool CanZoomOut(content::WebContents* contents); 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool ActualSize(content::WebContents* contents); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RestoreTab(Browser* browser); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TabStripModelDelegate::RestoreTabType GetRestoreTabType( 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Browser* browser); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SelectNextTab(Browser* browser); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SelectPreviousTab(Browser* browser); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MoveTabNext(Browser* browser); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MoveTabPrevious(Browser* browser); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SelectNumberedTab(Browser* browser, int index); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SelectLastTab(Browser* browser); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DuplicateTab(Browser* browser); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanDuplicateTab(const Browser* browser); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)content::WebContents* DuplicateTabAt(Browser* browser, int index); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanDuplicateTabAt(Browser* browser, int index); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ConvertPopupToTabbedBrowser(Browser* browser); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Exit(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkCurrentPage(Browser* browser); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanBookmarkCurrentPage(const Browser* browser); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BookmarkAllTabs(Browser* browser); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanBookmarkAllTabs(const Browser* browser); 1011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void Translate(Browser* browser); 102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void ManagePasswordsForPage(Browser* browser); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TogglePagePinnedToStartScreen(Browser* browser); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SavePage(Browser* browser); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanSavePage(const Browser* browser); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShowFindBar(Browser* browser); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ShowWebsiteSettings(Browser* browser, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url, 1107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const content::SSLStatus& ssl); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Print(Browser* browser); 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool CanPrint(Browser* browser); 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if !defined(DISABLE_BASIC_PRINTING) 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BasicPrint(Browser* browser); 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool CanBasicPrint(Browser* browser); 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // !DISABLE_BASIC_PRINTING 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void EmailPageLocation(Browser* browser); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanEmailPageLocation(const Browser* browser); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Cut(Browser* browser); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Copy(Browser* browser); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Paste(Browser* browser); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Find(Browser* browser); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FindNext(Browser* browser); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FindPrevious(Browser* browser); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FindInPage(Browser* browser, bool find_next, bool forward_direction); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void Zoom(Browser* browser, content::PageZoom zoom); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusToolbar(Browser* browser); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusLocationBar(Browser* browser); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusSearch(Browser* browser); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusAppMenu(Browser* browser); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusBookmarksToolbar(Browser* browser); 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void FocusInfobars(Browser* browser); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusNextPane(Browser* browser); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FocusPreviousPane(Browser* browser); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ToggleDevToolsWindow(Browser* browser, DevToolsToggleAction action); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanOpenTaskManager(); 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid OpenTaskManager(Browser* browser); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenFeedbackDialog(Browser* browser); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ToggleBookmarkBar(Browser* browser); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShowAppMenu(Browser* browser); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShowAvatarMenu(Browser* browser); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenUpdateChromeDialog(Browser* browser); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ToggleSpeechInput(Browser* browser); 144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void DistillCurrentPage(Browser* browser); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanRequestTabletSite(content::WebContents* current_tab); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsRequestingTabletSite(Browser* browser); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ToggleRequestTabletSite(Browser* browser); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ToggleFullscreenMode(Browser* browser); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ClearCache(Browser* browser); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsDebuggerAttachedToCurrentTab(Browser* browser); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Opens a view-source tab for a given web contents. 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ViewSource(Browser* browser, content::WebContents* tab); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Opens a view-source tab for any frame within a given web contents. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ViewSource(Browser* browser, 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* tab, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 15990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const content::PageState& page_state); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ViewSelectedSource(Browser* browser); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanViewSource(const Browser* browser); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CreateApplicationShortcuts(Browser* browser); 165c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid CreateBookmarkAppFromCurrentWebContents(Browser* browser); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool CanCreateApplicationShortcuts(const Browser* browser); 167c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbool CanCreateBookmarkApp(const Browser* browser); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ConvertTabToAppWindow(Browser* browser, content::WebContents* contents); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_BROWSER_COMMANDS_H_ 174