Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: chrome/browser/ui/ash/launcher/browser_shortcut_launcher_item_controller.h

Issue 2716403005: mash: Remove shelf app menu item objects. (Closed)
Patch Set: Address comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER _H_ 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_ 6 #define CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROLLER _H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "chrome/browser/ui/ash/launcher/launcher_item_controller.h" 9 #include "chrome/browser/ui/ash/launcher/launcher_item_controller.h"
10 #include "chrome/browser/ui/browser_list.h" 10 #include "chrome/browser/ui/browser_list.h"
11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h"
11 13
12 namespace ash { 14 namespace ash {
13 class ShelfModel; 15 class ShelfModel;
14 } 16 }
15 17
16 namespace content { 18 namespace content {
17 class WebContents; 19 class WebContents;
18 } 20 }
19 21
20 namespace gfx {
21 class Image;
22 }
23
24 class Browser;
25 class ChromeLauncherController; 22 class ChromeLauncherController;
26 23
27 // Item controller for an browser shortcut. 24 // Shelf item delegate for a browser shortcut; only one such item should exist.
28 class BrowserShortcutLauncherItemController : public LauncherItemController { 25 // This item shows an application menu that lists open browser windows or tabs.
26 class BrowserShortcutLauncherItemController
27 : public LauncherItemController,
28 public content::NotificationObserver {
29 public: 29 public:
30 BrowserShortcutLauncherItemController(ChromeLauncherController* controller, 30 BrowserShortcutLauncherItemController(ChromeLauncherController* controller,
31 ash::ShelfModel* shelf_model); 31 ash::ShelfModel* shelf_model);
32 32
33 ~BrowserShortcutLauncherItemController() override; 33 ~BrowserShortcutLauncherItemController() override;
34 34
35 // Updates the activation state of the Broswer item. 35 // Updates the activation state of the Broswer item.
36 void UpdateBrowserItemState(); 36 void UpdateBrowserItemState();
37 37
38 // Sets the shelf id for the browser window if the browser is represented. 38 // Sets the shelf id for the browser window if the browser is represented.
39 void SetShelfIDForBrowserWindowContents(Browser* browser, 39 void SetShelfIDForBrowserWindowContents(Browser* browser,
40 content::WebContents* web_contents); 40 content::WebContents* web_contents);
41 41
42 // Check if there is any active browsers windows. 42 // Check if there is any active browsers windows.
43 bool IsListOfActiveBrowserEmpty(); 43 bool IsListOfActiveBrowserEmpty();
44 44
45 // LauncherItemController overrides: 45 // LauncherItemController overrides:
46 ash::ShelfAction ItemSelected(ui::EventType event_type, 46 ash::ShelfAction ItemSelected(ui::EventType event_type,
47 int event_flags, 47 int event_flags,
48 int64_t display_id, 48 int64_t display_id,
49 ash::ShelfLaunchSource source) override; 49 ash::ShelfLaunchSource source) override;
50 ash::ShelfAppMenuItemList GetAppMenuItems(int event_flags) override; 50 ash::ShelfAppMenuItemList GetAppMenuItems(int event_flags) override;
51 void ExecuteCommand(uint32_t command_id, int event_flags) override;
51 void Close() override; 52 void Close() override;
52 53
53 private: 54 private:
54 // Get the favicon for the browser list entry for |web_contents|.
55 // Note that for incognito windows the incognito icon will be returned.
56 gfx::Image GetBrowserListIcon(content::WebContents* web_contents) const;
57
58 // Get the title for the browser list entry for |web_contents|.
59 // If |web_contents| has not loaded, returns "Net Tab".
60 base::string16 GetBrowserListTitle(content::WebContents* web_contents) const;
61
62 // Check if the given |web_contents| is in incognito mode.
63 bool IsIncognito(content::WebContents* web_contents) const;
64
65 // Activate a browser - or advance to the next one on the list. 55 // Activate a browser - or advance to the next one on the list.
66 // Returns the action performed. Should be one of SHELF_ACTION_NONE, 56 // Returns the action performed. Should be one of SHELF_ACTION_NONE,
67 // SHELF_ACTION_WINDOW_ACTIVATED, or SHELF_ACTION_NEW_WINDOW_CREATED. 57 // SHELF_ACTION_WINDOW_ACTIVATED, or SHELF_ACTION_NEW_WINDOW_CREATED.
68 ash::ShelfAction ActivateOrAdvanceToNextBrowser(); 58 ash::ShelfAction ActivateOrAdvanceToNextBrowser();
69 59
70 // Returns true when the given |browser| is listed in the browser application 60 // Returns true when the given |browser| is listed in the browser application
71 // list. 61 // list.
72 bool IsBrowserRepresentedInBrowserList(Browser* browser); 62 bool IsBrowserRepresentedInBrowserList(Browser* browser);
73 63
74 // Get a list of active browsers. 64 // Get a list of active browsers.
75 BrowserList::BrowserVector GetListOfActiveBrowsers(); 65 BrowserList::BrowserVector GetListOfActiveBrowsers();
76 66
67 // content::NotificationObserver:
68 void Observe(int type,
69 const content::NotificationSource& source,
70 const content::NotificationDetails& details) override;
71
77 ash::ShelfModel* shelf_model_; 72 ash::ShelfModel* shelf_model_;
78 73
74 // The cached list of open browser windows shown in an application menu.
75 BrowserList::BrowserVector browser_menu_items_;
76
77 // Registers for notifications of closing browser windows.
78 content::NotificationRegistrar registrar_;
79
79 DISALLOW_COPY_AND_ASSIGN(BrowserShortcutLauncherItemController); 80 DISALLOW_COPY_AND_ASSIGN(BrowserShortcutLauncherItemController);
80 }; 81 };
81 82
82 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROL LER_H_ 83 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_BROWSER_SHORTCUT_LAUNCHER_ITEM_CONTROL LER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698