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

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

Issue 115113006: Rename Launcher to Shelf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more fixes Created 7 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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_CHROME_LAUNCHER_CONTROLLER_H_ 5 #ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_ 6 #define CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 public ash::ShelfModelObserver, 94 public ash::ShelfModelObserver,
95 public ash::ShellObserver, 95 public ash::ShellObserver,
96 public ash::DisplayController::Observer, 96 public ash::DisplayController::Observer,
97 public content::NotificationObserver, 97 public content::NotificationObserver,
98 public extensions::AppIconLoader::Delegate, 98 public extensions::AppIconLoader::Delegate,
99 public PrefServiceSyncableObserver, 99 public PrefServiceSyncableObserver,
100 public AppSyncUIStateObserver, 100 public AppSyncUIStateObserver,
101 public ExtensionEnableFlowDelegate, 101 public ExtensionEnableFlowDelegate,
102 public ash::ShelfLayoutManagerObserver { 102 public ash::ShelfLayoutManagerObserver {
103 public: 103 public:
104 // Indicates if a launcher item is incognito or not. 104 // Indicates if a shelf item is incognito or not.
105 enum IncognitoState { 105 enum IncognitoState {
106 STATE_INCOGNITO, 106 STATE_INCOGNITO,
107 STATE_NOT_INCOGNITO, 107 STATE_NOT_INCOGNITO,
108 }; 108 };
109 109
110 // Used to update the state of non plaform apps, as web contents change. 110 // Used to update the state of non plaform apps, as web contents change.
111 enum AppState { 111 enum AppState {
112 APP_STATE_ACTIVE, 112 APP_STATE_ACTIVE,
113 APP_STATE_WINDOW_ACTIVE, 113 APP_STATE_WINDOW_ACTIVE,
114 APP_STATE_INACTIVE, 114 APP_STATE_INACTIVE,
(...skipping 25 matching lines...) Expand all
140 // Initializes this ChromeLauncherController. 140 // Initializes this ChromeLauncherController.
141 void Init(); 141 void Init();
142 142
143 // Creates an instance. 143 // Creates an instance.
144 static ChromeLauncherController* CreateInstance(Profile* profile, 144 static ChromeLauncherController* CreateInstance(Profile* profile,
145 ash::ShelfModel* model); 145 ash::ShelfModel* model);
146 146
147 // Returns the single ChromeLauncherController instance. 147 // Returns the single ChromeLauncherController instance.
148 static ChromeLauncherController* instance() { return instance_; } 148 static ChromeLauncherController* instance() { return instance_; }
149 149
150 // Creates a new app item on the launcher for |controller|. 150 // Creates a new app item on the shelf for |controller|.
151 ash::LauncherID CreateAppLauncherItem(LauncherItemController* controller, 151 ash::LauncherID CreateAppLauncherItem(LauncherItemController* controller,
152 const std::string& app_id, 152 const std::string& app_id,
153 ash::LauncherItemStatus status); 153 ash::LauncherItemStatus status);
154 154
155 // Updates the running status of an item. It will also update the status of 155 // Updates the running status of an item. It will also update the status of
156 // browsers launcher item if needed. 156 // browsers shelf item if needed.
157 void SetItemStatus(ash::LauncherID id, ash::LauncherItemStatus status); 157 void SetItemStatus(ash::LauncherID id, ash::LauncherItemStatus status);
158 158
159 // Updates the controller associated with id (which should be a shortcut). 159 // Updates the controller associated with id (which should be a shortcut).
160 // |controller| remains owned by caller. 160 // |controller| remains owned by caller.
161 void SetItemController(ash::LauncherID id, 161 void SetItemController(ash::LauncherID id,
162 LauncherItemController* controller); 162 LauncherItemController* controller);
163 163
164 // Closes or unpins the launcher item. 164 // Closes or unpins the shelf item.
165 void CloseLauncherItem(ash::LauncherID id); 165 void CloseLauncherItem(ash::LauncherID id);
166 166
167 // Pins the specified id. Currently only supports platform apps. 167 // Pins the specified id. Currently only supports platform apps.
168 void Pin(ash::LauncherID id); 168 void Pin(ash::LauncherID id);
169 169
170 // Unpins the specified id, closing if not running. 170 // Unpins the specified id, closing if not running.
171 void Unpin(ash::LauncherID id); 171 void Unpin(ash::LauncherID id);
172 172
173 // Returns true if the item identified by |id| is pinned. 173 // Returns true if the item identified by |id| is pinned.
174 bool IsPinned(ash::LauncherID id); 174 bool IsPinned(ash::LauncherID id);
175 175
176 // Pins/unpins the specified id. 176 // Pins/unpins the specified id.
177 void TogglePinned(ash::LauncherID id); 177 void TogglePinned(ash::LauncherID id);
178 178
179 // Returns true if the specified item can be pinned or unpinned. Only apps can 179 // Returns true if the specified item can be pinned or unpinned. Only apps can
180 // be pinned. 180 // be pinned.
181 bool IsPinnable(ash::LauncherID id) const; 181 bool IsPinnable(ash::LauncherID id) const;
182 182
183 // If there is no launcher item in the launcher for application |app_id|, one 183 // If there is no shelf item in the shelf for application |app_id|, one
184 // gets created. The (existing or created) launcher items get then locked 184 // gets created. The (existing or created) shelf items get then locked
185 // against a users un-pinning removal. 185 // against a users un-pinning removal.
186 void LockV1AppWithID(const std::string& app_id); 186 void LockV1AppWithID(const std::string& app_id);
187 187
188 // A previously locked launcher item of type |app_id| gets unlocked. If the 188 // A previously locked shelf item of type |app_id| gets unlocked. If the
189 // lock count reaches 0 and the item is not pinned it will go away. 189 // lock count reaches 0 and the item is not pinned it will go away.
190 void UnlockV1AppWithID(const std::string& app_id); 190 void UnlockV1AppWithID(const std::string& app_id);
191 191
192 // Requests that the launcher item controller specified by |id| open a new 192 // Requests that the shelf item controller specified by |id| open a new
193 // instance of the app. |event_flags| holds the flags of the event which 193 // instance of the app. |event_flags| holds the flags of the event which
194 // triggered this command. 194 // triggered this command.
195 void Launch(ash::LauncherID id, int event_flags); 195 void Launch(ash::LauncherID id, int event_flags);
196 196
197 // Closes the specified item. 197 // Closes the specified item.
198 void Close(ash::LauncherID id); 198 void Close(ash::LauncherID id);
199 199
200 // Returns true if the specified item is open. 200 // Returns true if the specified item is open.
201 bool IsOpen(ash::LauncherID id); 201 bool IsOpen(ash::LauncherID id);
202 202
203 // Returns true if the specified item is for a platform app. 203 // Returns true if the specified item is for a platform app.
204 bool IsPlatformApp(ash::LauncherID id); 204 bool IsPlatformApp(ash::LauncherID id);
205 205
206 // Opens a new instance of the application identified by |app_id|. 206 // Opens a new instance of the application identified by |app_id|.
207 // Used by the app-list, and by pinned-app launcher items. 207 // Used by the app-list, and by pinned-app shelf items.
208 void LaunchApp(const std::string& app_id, 208 void LaunchApp(const std::string& app_id,
209 ash::LaunchSource source, 209 ash::LaunchSource source,
210 int event_flags); 210 int event_flags);
211 211
212 // If |app_id| is running, reactivates the app's most recently active window, 212 // If |app_id| is running, reactivates the app's most recently active window,
213 // otherwise launches and activates the app. 213 // otherwise launches and activates the app.
214 // Used by the app-list, and by pinned-app launcher items. 214 // Used by the app-list, and by pinned-app shelf items.
215 void ActivateApp(const std::string& app_id, 215 void ActivateApp(const std::string& app_id,
216 ash::LaunchSource source, 216 ash::LaunchSource source,
217 int event_flags); 217 int event_flags);
218 218
219 // Returns the launch type of app for the specified id. 219 // Returns the launch type of app for the specified id.
220 extensions::LaunchType GetLaunchType(ash::LauncherID id); 220 extensions::LaunchType GetLaunchType(ash::LauncherID id);
221 221
222 // Set the image for a specific launcher item (e.g. when set by the app). 222 // Set the image for a specific shelf item (e.g. when set by the app).
223 void SetLauncherItemImage(ash::LauncherID launcher_id, 223 void SetLauncherItemImage(ash::LauncherID launcher_id,
224 const gfx::ImageSkia& image); 224 const gfx::ImageSkia& image);
225 225
226 // Find out if the given application |id| is a windowed app item and not a 226 // Find out if the given application |id| is a windowed app item and not a
227 // pinned item in the launcher. 227 // pinned item in the shelf.
228 bool IsWindowedAppInLauncher(const std::string& app_id); 228 bool IsWindowedAppInLauncher(const std::string& app_id);
229 229
230 // Updates the launch type of the app for the specified id to |launch_type|. 230 // Updates the launch type of the app for the specified id to |launch_type|.
231 void SetLaunchType(ash::LauncherID id, 231 void SetLaunchType(ash::LauncherID id,
232 extensions::LaunchType launch_type); 232 extensions::LaunchType launch_type);
233 233
234 // Returns true if the user is currently logged in as a guest. 234 // Returns true if the user is currently logged in as a guest.
235 // Makes virtual for unittest in LauncherContextMenuTest. 235 // Makes virtual for unittest in LauncherContextMenuTest.
236 virtual bool IsLoggedInAsGuest(); 236 virtual bool IsLoggedInAsGuest();
237 237
238 // Invoked when user clicks on button in the launcher and there is no last 238 // Invoked when user clicks on button in the shelf and there is no last
239 // used window (or CTRL is held with the click). 239 // used window (or CTRL is held with the click).
240 void CreateNewWindow(); 240 void CreateNewWindow();
241 241
242 // Invoked when the user clicks on button in the launcher to create a new 242 // Invoked when the user clicks on button in the shelf to create a new
243 // incognito window. 243 // incognito window.
244 void CreateNewIncognitoWindow(); 244 void CreateNewIncognitoWindow();
245 245
246 // Updates the pinned pref state. The pinned state consists of a list pref. 246 // Updates the pinned pref state. The pinned state consists of a list pref.
247 // Each item of the list is a dictionary. The key |kAppIDPath| gives the 247 // Each item of the list is a dictionary. The key |kAppIDPath| gives the
248 // id of the app. 248 // id of the app.
249 void PersistPinnedState(); 249 void PersistPinnedState();
250 250
251 ash::ShelfModel* model(); 251 ash::ShelfModel* model();
252 252
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // Returns the extension identified by |app_id|. 284 // Returns the extension identified by |app_id|.
285 const extensions::Extension* GetExtensionForAppID( 285 const extensions::Extension* GetExtensionForAppID(
286 const std::string& app_id) const; 286 const std::string& app_id) const;
287 287
288 // Activates a |window|. If |allow_minimize| is true and the system allows 288 // Activates a |window|. If |allow_minimize| is true and the system allows
289 // it, the the window will get minimized instead. 289 // it, the the window will get minimized instead.
290 void ActivateWindowOrMinimizeIfActive(ui::BaseWindow* window, 290 void ActivateWindowOrMinimizeIfActive(ui::BaseWindow* window,
291 bool allow_minimize); 291 bool allow_minimize);
292 292
293 // ash::ShelfDelegate overrides: 293 // ash::ShelfDelegate overrides:
294 virtual void OnLauncherCreated(ash::Launcher* launcher) OVERRIDE; 294 virtual void OnShelfCreated(ash::Shelf* shelf) OVERRIDE;
295 virtual void OnLauncherDestroyed(ash::Launcher* launcher) OVERRIDE; 295 virtual void OnShelfDestroyed(ash::Shelf* shelf) OVERRIDE;
296 virtual ash::LauncherID GetLauncherIDForAppID( 296 virtual ash::LauncherID GetLauncherIDForAppID(
297 const std::string& app_id) OVERRIDE; 297 const std::string& app_id) OVERRIDE;
298 virtual const std::string& GetAppIDForLauncherID(ash::LauncherID id) OVERRIDE; 298 virtual const std::string& GetAppIDForLauncherID(ash::LauncherID id) OVERRIDE;
299 virtual void PinAppWithID(const std::string& app_id) OVERRIDE; 299 virtual void PinAppWithID(const std::string& app_id) OVERRIDE;
300 virtual bool IsAppPinned(const std::string& app_id) OVERRIDE; 300 virtual bool IsAppPinned(const std::string& app_id) OVERRIDE;
301 virtual bool CanPin() const OVERRIDE; 301 virtual bool CanPin() const OVERRIDE;
302 virtual void UnpinAppWithID(const std::string& app_id) OVERRIDE; 302 virtual void UnpinAppWithID(const std::string& app_id) OVERRIDE;
303 303
304 // ash::ShelfModelObserver overrides: 304 // ash::ShelfModelObserver overrides:
305 virtual void ShelfItemAdded(int index) OVERRIDE; 305 virtual void ShelfItemAdded(int index) OVERRIDE;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 BrowserStatusMonitor* browser_status_monitor_for_test() { 390 BrowserStatusMonitor* browser_status_monitor_for_test() {
391 return browser_status_monitor_.get(); 391 return browser_status_monitor_.get();
392 } 392 }
393 393
394 // Access to the ShellWindowController for tests. 394 // Access to the ShellWindowController for tests.
395 ShellWindowLauncherController* shell_window_controller_for_test() { 395 ShellWindowLauncherController* shell_window_controller_for_test() {
396 return shell_window_controller_.get(); 396 return shell_window_controller_.get();
397 } 397 }
398 398
399 protected: 399 protected:
400 // Creates a new app shortcut item and controller on the launcher at |index|. 400 // Creates a new app shortcut item and controller on the shelf at |index|.
401 // Use kInsertItemAtEnd to add a shortcut as the last item. 401 // Use kInsertItemAtEnd to add a shortcut as the last item.
402 ash::LauncherID CreateAppShortcutLauncherItem(const std::string& app_id, 402 ash::LauncherID CreateAppShortcutLauncherItem(const std::string& app_id,
403 int index); 403 int index);
404 404
405 // Sets the AppTabHelper/AppIconLoader, taking ownership of the helper class. 405 // Sets the AppTabHelper/AppIconLoader, taking ownership of the helper class.
406 // These are intended for testing. 406 // These are intended for testing.
407 void SetAppTabHelperForTest(AppTabHelper* helper); 407 void SetAppTabHelperForTest(AppTabHelper* helper);
408 void SetAppIconLoaderForTest(extensions::AppIconLoader* loader); 408 void SetAppIconLoaderForTest(extensions::AppIconLoader* loader);
409 const std::string& GetAppIdFromLauncherIdForTest(ash::LauncherID id); 409 const std::string& GetAppIdFromLauncherIdForTest(ash::LauncherID id);
410 410
411 // Sets the ash::ShelfItemDelegateManager only for unittests and doesn't 411 // Sets the ash::ShelfItemDelegateManager only for unittests and doesn't
412 // take an ownership of it. 412 // take an ownership of it.
413 void SetShelfItemDelegateManagerForTest( 413 void SetShelfItemDelegateManagerForTest(
414 ash::ShelfItemDelegateManager* manager); 414 ash::ShelfItemDelegateManager* manager);
415 415
416 private: 416 private:
417 friend class ChromeLauncherControllerTest; 417 friend class ChromeLauncherControllerTest;
418 friend class LauncherAppBrowserTest; 418 friend class ShelfAppBrowserTest;
419 friend class LauncherPlatformAppBrowserTest; 419 friend class LauncherPlatformAppBrowserTest;
420 420
421 typedef std::map<ash::LauncherID, LauncherItemController*> 421 typedef std::map<ash::LauncherID, LauncherItemController*>
422 IDToItemControllerMap; 422 IDToItemControllerMap;
423 typedef std::list<content::WebContents*> WebContentsList; 423 typedef std::list<content::WebContents*> WebContentsList;
424 typedef std::map<std::string, WebContentsList> AppIDToWebContentsListMap; 424 typedef std::map<std::string, WebContentsList> AppIDToWebContentsListMap;
425 typedef std::map<content::WebContents*, std::string> WebContentsToAppIDMap; 425 typedef std::map<content::WebContents*, std::string> WebContentsToAppIDMap;
426 426
427 // Creates a new app shortcut item and controller on the launcher at |index|. 427 // Creates a new app shortcut item and controller on the shelf at |index|.
428 // Use kInsertItemAtEnd to add a shortcut as the last item. 428 // Use kInsertItemAtEnd to add a shortcut as the last item.
429 ash::LauncherID CreateAppShortcutLauncherItemWithType( 429 ash::LauncherID CreateAppShortcutLauncherItemWithType(
430 const std::string& app_id, 430 const std::string& app_id,
431 int index, 431 int index,
432 ash::LauncherItemType launcher_item_type); 432 ash::LauncherItemType launcher_item_type);
433 433
434 // Invoked when the associated browser or app is closed. 434 // Invoked when the associated browser or app is closed.
435 void LauncherItemClosed(ash::LauncherID id); 435 void LauncherItemClosed(ash::LauncherID id);
436 436
437 // Internal helpers for pinning and unpinning that handle both 437 // Internal helpers for pinning and unpinning that handle both
438 // client-triggered and internal pinning operations. 438 // client-triggered and internal pinning operations.
439 void DoPinAppWithID(const std::string& app_id); 439 void DoPinAppWithID(const std::string& app_id);
440 void DoUnpinAppWithID(const std::string& app_id); 440 void DoUnpinAppWithID(const std::string& app_id);
441 441
442 // Pin a running app with |launcher_id| internally to |index|. It returns 442 // Pin a running app with |launcher_id| internally to |index|. It returns
443 // the index where the item was pinned. 443 // the index where the item was pinned.
444 int PinRunningAppInternal(int index, ash::LauncherID launcher_id); 444 int PinRunningAppInternal(int index, ash::LauncherID launcher_id);
445 445
446 // Unpin a locked application. This is an internal call which converts the 446 // Unpin a locked application. This is an internal call which converts the
447 // model type of the given app index from a shortcut into an unpinned running 447 // model type of the given app index from a shortcut into an unpinned running
448 // app. 448 // app.
449 void UnpinRunningAppInternal(int index); 449 void UnpinRunningAppInternal(int index);
450 450
451 // Re-syncs launcher model with prefs::kPinnedLauncherApps. 451 // Re-syncs shelf model with prefs::kPinnedLauncherApps.
452 void UpdateAppLaunchersFromPref(); 452 void UpdateAppLaunchersFromPref();
453 453
454 // Persists the shelf auto-hide behavior to prefs. 454 // Persists the shelf auto-hide behavior to prefs.
455 void SetShelfAutoHideBehaviorPrefs(ash::ShelfAutoHideBehavior behavior, 455 void SetShelfAutoHideBehaviorPrefs(ash::ShelfAutoHideBehavior behavior,
456 aura::Window* root_window); 456 aura::Window* root_window);
457 457
458 // Sets the shelf auto-hide behavior from prefs. 458 // Sets the shelf auto-hide behavior from prefs.
459 void SetShelfAutoHideBehaviorFromPrefs(); 459 void SetShelfAutoHideBehaviorFromPrefs();
460 460
461 // Sets the shelf alignment from prefs. 461 // Sets the shelf alignment from prefs.
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 scoped_ptr<extensions::AppIconLoader> app_icon_loader_; 565 scoped_ptr<extensions::AppIconLoader> app_icon_loader_;
566 566
567 content::NotificationRegistrar notification_registrar_; 567 content::NotificationRegistrar notification_registrar_;
568 568
569 PrefChangeRegistrar pref_change_registrar_; 569 PrefChangeRegistrar pref_change_registrar_;
570 570
571 AppSyncUIState* app_sync_ui_state_; 571 AppSyncUIState* app_sync_ui_state_;
572 572
573 scoped_ptr<ExtensionEnableFlow> extension_enable_flow_; 573 scoped_ptr<ExtensionEnableFlow> extension_enable_flow_;
574 574
575 // Launchers that are currently being observed. 575 // Shelves that are currently being observed.
576 std::set<ash::Launcher*> launchers_; 576 std::set<ash::Shelf*> shelves_;
577 577
578 // The owned browser status monitor. 578 // The owned browser status monitor.
579 scoped_ptr<BrowserStatusMonitor> browser_status_monitor_; 579 scoped_ptr<BrowserStatusMonitor> browser_status_monitor_;
580 580
581 // A special observer class to detect user switches. 581 // A special observer class to detect user switches.
582 scoped_ptr<ChromeLauncherControllerUserSwitchObserver> user_switch_observer_; 582 scoped_ptr<ChromeLauncherControllerUserSwitchObserver> user_switch_observer_;
583 583
584 // If true, incoming pinned state changes should be ignored. 584 // If true, incoming pinned state changes should be ignored.
585 bool ignore_persist_pinned_state_change_; 585 bool ignore_persist_pinned_state_change_;
586 586
587 // True if each user has an own desktop. 587 // True if each user has an own desktop.
588 bool multi_profile_desktop_separation_; 588 bool multi_profile_desktop_separation_;
589 589
590 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherController); 590 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherController);
591 }; 591 };
592 592
593 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_ 593 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698