190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/ash/launcher/launcher_item_controller.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace content { 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class WebContents; 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace gfx { 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Image; 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Browser; 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class ChromeLauncherController; 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Item controller for an browser shortcut. 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class BrowserShortcutLauncherItemController : public LauncherItemController { 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) explicit BrowserShortcutLauncherItemController( 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ChromeLauncherController* controller); 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ~BrowserShortcutLauncherItemController(); 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Updates the activation state of the Broswer item. 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void UpdateBrowserItemState(); 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Sets the shelf id for the browser window if the browser is represented. 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void SetShelfIDForBrowserWindowContents(Browser* browser, 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch content::WebContents* web_contents); 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // LauncherItemController overrides: 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual bool IsOpen() const OVERRIDE; 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual bool IsVisible() const OVERRIDE; 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Launch(ash::LaunchSource source, int event_flags) OVERRIDE; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool Activate(ash::LaunchSource source) OVERRIDE; 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ChromeLauncherAppMenuItems GetApplicationList( 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int event_flags) OVERRIDE; 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool ItemSelected(const ui::Event& event) OVERRIDE; 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual base::string16 GetTitle() OVERRIDE; 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ui::MenuModel* CreateContextMenu( 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root_window) OVERRIDE; 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual ash::ShelfMenuModel* CreateApplicationMenu(int event_flags) OVERRIDE; 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual bool IsDraggable() OVERRIDE; 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual bool ShouldShowTooltip() OVERRIDE; 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void Close() OVERRIDE; 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Get the favicon for the browser list entry for |web_contents|. 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Note that for incognito windows the incognito icon will be returned. 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::Image GetBrowserListIcon(content::WebContents* web_contents) const; 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Get the title for the browser list entry for |web_contents|. 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // If |web_contents| has not loaded, returns "Net Tab". 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 GetBrowserListTitle(content::WebContents* web_contents) const; 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Check if the given |web_contents| is in incognito mode. 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool IsIncognito(content::WebContents* web_contents) const; 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Activate a browser - or advance to the next one on the list. 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void ActivateOrAdvanceToNextBrowser(); 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Returns true when the given |browser| is listed in the browser application 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // list. 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool IsBrowserRepresentedInBrowserList(Browser* browser); 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowserShortcutLauncherItemController); 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif // CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 75