1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 6#define CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 7 8#include "chrome/browser/ui/ash/launcher/launcher_item_controller.h" 9 10namespace content { 11class WebContents; 12} 13 14namespace gfx { 15class Image; 16} 17 18class Browser; 19class ChromeLauncherController; 20 21// Item controller for an browser shortcut. 22class BrowserShortcutLauncherItemController : public LauncherItemController { 23 public: 24 explicit BrowserShortcutLauncherItemController( 25 ChromeLauncherController* controller); 26 27 virtual ~BrowserShortcutLauncherItemController(); 28 29 // Updates the activation state of the Broswer item. 30 void UpdateBrowserItemState(); 31 32 // Sets the shelf id for the browser window if the browser is represented. 33 void SetShelfIDForBrowserWindowContents(Browser* browser, 34 content::WebContents* web_contents); 35 36 // LauncherItemController overrides: 37 virtual bool IsOpen() const OVERRIDE; 38 virtual bool IsVisible() const OVERRIDE; 39 virtual void Launch(ash::LaunchSource source, int event_flags) OVERRIDE; 40 virtual bool Activate(ash::LaunchSource source) OVERRIDE; 41 virtual ChromeLauncherAppMenuItems GetApplicationList( 42 int event_flags) OVERRIDE; 43 virtual bool ItemSelected(const ui::Event& event) OVERRIDE; 44 virtual base::string16 GetTitle() OVERRIDE; 45 virtual ui::MenuModel* CreateContextMenu( 46 aura::Window* root_window) OVERRIDE; 47 virtual ash::ShelfMenuModel* CreateApplicationMenu(int event_flags) OVERRIDE; 48 virtual bool IsDraggable() OVERRIDE; 49 virtual bool ShouldShowTooltip() OVERRIDE; 50 virtual void Close() OVERRIDE; 51 52 private: 53 // Get the favicon for the browser list entry for |web_contents|. 54 // Note that for incognito windows the incognito icon will be returned. 55 gfx::Image GetBrowserListIcon(content::WebContents* web_contents) const; 56 57 // Get the title for the browser list entry for |web_contents|. 58 // If |web_contents| has not loaded, returns "Net Tab". 59 base::string16 GetBrowserListTitle(content::WebContents* web_contents) const; 60 61 // Check if the given |web_contents| is in incognito mode. 62 bool IsIncognito(content::WebContents* web_contents) const; 63 64 // Activate a browser - or advance to the next one on the list. 65 void ActivateOrAdvanceToNextBrowser(); 66 67 // Returns true when the given |browser| is listed in the browser application 68 // list. 69 bool IsBrowserRepresentedInBrowserList(Browser* browser); 70 71 DISALLOW_COPY_AND_ASSIGN(BrowserShortcutLauncherItemController); 72}; 73 74#endif // CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER_H_ 75