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

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

Issue 10066015: ash: Replace launcher app type with Extension launch type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_
6 #define CHROME_BROWSER_UI_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_ 6 #define CHROME_BROWSER_UI_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <queue> 10 #include <queue>
11 #include <string> 11 #include <string>
12 12
13 #include "ash/launcher/launcher_delegate.h" 13 #include "ash/launcher/launcher_delegate.h"
14 #include "ash/launcher/launcher_model_observer.h" 14 #include "ash/launcher/launcher_model_observer.h"
15 #include "ash/launcher/launcher_types.h" 15 #include "ash/launcher/launcher_types.h"
16 #include "ash/wm/shelf_auto_hide_behavior.h" 16 #include "ash/wm/shelf_auto_hide_behavior.h"
17 #include "base/basictypes.h" 17 #include "base/basictypes.h"
18 #include "base/compiler_specific.h" 18 #include "base/compiler_specific.h"
19 #include "base/memory/scoped_ptr.h" 19 #include "base/memory/scoped_ptr.h"
20 #include "chrome/browser/extensions/extension_prefs.h"
20 #include "content/public/browser/notification_observer.h" 21 #include "content/public/browser/notification_observer.h"
21 #include "content/public/browser/notification_registrar.h" 22 #include "content/public/browser/notification_registrar.h"
22 23
23 namespace ash { 24 namespace ash {
24 class LauncherModel; 25 class LauncherModel;
25 } 26 }
26 27
27 class LauncherUpdater; 28 class LauncherUpdater;
28 class LauncherUpdaterTest; 29 class LauncherUpdaterTest;
29 class PrefService; 30 class PrefService;
30 class Profile; 31 class Profile;
31 class TabContentsWrapper; 32 class TabContentsWrapper;
32 33
33 // ChromeLauncherDelegate manages the launcher items needed for tabbed browsers 34 // ChromeLauncherDelegate manages the launcher items needed for tabbed browsers
34 // and apps. It does this by way of LauncherUpdaters. 35 // and apps. It does this by way of LauncherUpdaters.
35 // TODO: rename this. ChromeLauncherDelegate is a poor name for what it actually 36 // TODO: rename this. ChromeLauncherDelegate is a poor name for what it actually
36 // does. 37 // does.
37 class ChromeLauncherDelegate : public ash::LauncherDelegate, 38 class ChromeLauncherDelegate : public ash::LauncherDelegate,
38 public ash::LauncherModelObserver, 39 public ash::LauncherModelObserver,
39 public content::NotificationObserver { 40 public content::NotificationObserver {
40 public: 41 public:
41 // Indicates what should happen when the app is launched.
42 enum AppType {
43 APP_TYPE_WINDOW,
44 APP_TYPE_APP_PANEL, // Panel opened from the app list.
45 APP_TYPE_EXTENSION_PANEL, // Panel opened by an extension.
46 APP_TYPE_TAB
47 };
48
49 // Indicates if a launcher item is incognito or not. 42 // Indicates if a launcher item is incognito or not.
50 enum IncognitoState { 43 enum IncognitoState {
51 STATE_INCOGNITO, 44 STATE_INCOGNITO,
52 STATE_NOT_INCOGNITO, 45 STATE_NOT_INCOGNITO,
53 }; 46 };
54 47
55 // Interface used to load app icons. This is in it's own class so that it can 48 // Interface used to load app icons. This is in it's own class so that it can
56 // be mocked. 49 // be mocked.
57 class AppIconLoader { 50 class AppIconLoader {
58 public: 51 public:
(...skipping 26 matching lines...) Expand all
85 78
86 // Creates a new tabbed item on the launcher for |updater|. 79 // Creates a new tabbed item on the launcher for |updater|.
87 ash::LauncherID CreateTabbedLauncherItem(LauncherUpdater* updater, 80 ash::LauncherID CreateTabbedLauncherItem(LauncherUpdater* updater,
88 IncognitoState is_incognito, 81 IncognitoState is_incognito,
89 ash::LauncherItemStatus status); 82 ash::LauncherItemStatus status);
90 83
91 // Creates a new app item on the launcher for |updater|. If there is an 84 // Creates a new app item on the launcher for |updater|. If there is an
92 // existing pinned app that isn't running on the launcher, its id is returned. 85 // existing pinned app that isn't running on the launcher, its id is returned.
93 ash::LauncherID CreateAppLauncherItem(LauncherUpdater* updater, 86 ash::LauncherID CreateAppLauncherItem(LauncherUpdater* updater,
94 const std::string& app_id, 87 const std::string& app_id,
95 AppType app_type,
96 ash::LauncherItemStatus status); 88 ash::LauncherItemStatus status);
97 89
98 // Updates the running status of an item. 90 // Updates the running status of an item.
99 void SetItemStatus(ash::LauncherID id, ash::LauncherItemStatus status); 91 void SetItemStatus(ash::LauncherID id, ash::LauncherItemStatus status);
100 92
101 // Invoked when the underlying browser/app is closed. 93 // Invoked when the underlying browser/app is closed.
102 void LauncherItemClosed(ash::LauncherID id); 94 void LauncherItemClosed(ash::LauncherID id);
103 95
104 // Unpins the specified id, closing if not running. 96 // Unpins the specified id, closing if not running.
105 void Unpin(ash::LauncherID id); 97 void Unpin(ash::LauncherID id);
(...skipping 10 matching lines...) Expand all
116 108
117 // Opens the specified item. 109 // Opens the specified item.
118 void Open(ash::LauncherID id); 110 void Open(ash::LauncherID id);
119 111
120 // Closes the specified item. 112 // Closes the specified item.
121 void Close(ash::LauncherID id); 113 void Close(ash::LauncherID id);
122 114
123 // Returns true if the specified item is open. 115 // Returns true if the specified item is open.
124 bool IsOpen(ash::LauncherID id); 116 bool IsOpen(ash::LauncherID id);
125 117
126 // Returns the type of app for the specified id. 118 // Returns the launch type of app for the specified id.
127 AppType GetAppType(ash::LauncherID id); 119 ExtensionPrefs::LaunchType GetLaunchType(ash::LauncherID id);
128 120
129 // Returns the id of the app for the specified tab. 121 // Returns the id of the app for the specified tab.
130 std::string GetAppID(TabContentsWrapper* tab); 122 std::string GetAppID(TabContentsWrapper* tab);
131 123
132 // Sets the image for an app tab. This is intended to be invoked from the 124 // Sets the image for an app tab. This is intended to be invoked from the
133 // AppIconLoader. 125 // AppIconLoader.
134 void SetAppImage(const std::string& app_id, const SkBitmap* image); 126 void SetAppImage(const std::string& app_id, const SkBitmap* image);
135 127
136 // Returns true if a pinned launcher item with given |app_id| could be found. 128 // Returns true if a pinned launcher item with given |app_id| could be found.
137 bool IsAppPinned(const std::string& app_id); 129 bool IsAppPinned(const std::string& app_id);
138 130
139 // Pins an app with |app_id| to launcher. If there is a running instance in 131 // Pins an app with |app_id| to launcher. If there is a running instance in
140 // launcher, the running instance is pinned. If there is no running instance, 132 // launcher, the running instance is pinned. If there is no running instance,
141 // a new launcher item is created with |app_type| and pinned. 133 // a new launcher item is created and pinned.
142 void PinAppWithID(const std::string& app_id, AppType app_type); 134 void PinAppWithID(const std::string& app_id);
143 135
144 // Modifies an app shortcut to open with the new |app_type|. 136 // Updates the launche type of the app for the specified id to |launch_type|.
145 void SetAppType(ash::LauncherID id, AppType app_type); 137 void SetLaunchType(ash::LauncherID id,
138 ExtensionPrefs::LaunchType launch_type);
146 139
147 // Unpins any app items whose id is |app_id|. 140 // Unpins any app items whose id is |app_id|.
148 void UnpinAppsWithID(const std::string& app_id); 141 void UnpinAppsWithID(const std::string& app_id);
149 142
150 ash::LauncherModel* model() { return model_; } 143 ash::LauncherModel* model() { return model_; }
151 144
152 Profile* profile() { return profile_; } 145 Profile* profile() { return profile_; }
153 146
154 void SetAutoHideBehavior(ash::ShelfAutoHideBehavior behavior); 147 void SetAutoHideBehavior(ash::ShelfAutoHideBehavior behavior);
155 148
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 // Used to identity an item on the launcher. 180 // Used to identity an item on the launcher.
188 struct Item { 181 struct Item {
189 Item(); 182 Item();
190 ~Item(); 183 ~Item();
191 184
192 bool is_pinned() const { return updater == NULL; } 185 bool is_pinned() const { return updater == NULL; }
193 186
194 // Type of item. 187 // Type of item.
195 ItemType item_type; 188 ItemType item_type;
196 189
197 // If |item_type| is |TYPE_APP|, this identifies how the app is launched.
198 AppType app_type;
199
200 // ID of the app. 190 // ID of the app.
201 std::string app_id; 191 std::string app_id;
202 192
203 // The LauncherUpdater this item came from. NULL if a shortcut. 193 // The LauncherUpdater this item came from. NULL if a shortcut.
204 LauncherUpdater* updater; 194 LauncherUpdater* updater;
205 }; 195 };
206 196
207 typedef std::map<ash::LauncherID, Item> IDToItemMap; 197 typedef std::map<ash::LauncherID, Item> IDToItemMap;
208 198
209 // Updates the pinned pref state. The pinned state consists of a list pref. 199 // Updates the pinned pref state. The pinned state consists of a list pref.
210 // Each item of the list is a dictionary. The key |kAppIDPath| gives the 200 // Each item of the list is a dictionary. The key |kAppIDPath| gives the
211 // id of the app. |kAppTypePath| is one of |kAppTypeTab| or |kAppTypeWindow| 201 // id of the app.
212 // and indicates how the app is opened.
213 void PersistPinnedState(); 202 void PersistPinnedState();
214 203
215 // Sets the AppIconLoader, taking ownership of |loader|. This is intended for 204 // Sets the AppIconLoader, taking ownership of |loader|. This is intended for
216 // testing. 205 // testing.
217 void SetAppIconLoaderForTest(AppIconLoader* loader); 206 void SetAppIconLoaderForTest(AppIconLoader* loader);
218 207
219 // Returns the profile used for new windows. 208 // Returns the profile used for new windows.
220 Profile* GetProfileForNewWindows(); 209 Profile* GetProfileForNewWindows();
221 210
222 // Checks |pending_pinnned_apps_| list and creates pinned app items for apps 211 // Checks |pending_pinnned_apps_| list and creates pinned app items for apps
(...skipping 19 matching lines...) Expand all
242 // are installed (via sync or external extension provider.) The order of the 231 // are installed (via sync or external extension provider.) The order of the
243 // list reflects the original order in pinned app list. 232 // list reflects the original order in pinned app list.
244 std::queue<Item> pending_pinned_apps_; 233 std::queue<Item> pending_pinned_apps_;
245 234
246 content::NotificationRegistrar registrar_; 235 content::NotificationRegistrar registrar_;
247 236
248 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherDelegate); 237 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherDelegate);
249 }; 238 };
250 239
251 #endif // CHROME_BROWSER_UI_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_ 240 #endif // CHROME_BROWSER_UI_VIEWS_ASH_LAUNCHER_CHROME_LAUNCHER_DELEGATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698