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

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

Issue 1851883002: Cleanup shelf initialization and observation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check for shelf before setting prefs in ChromeLauncherController. Created 4 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
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>
11 #include <string> 10 #include <string>
12 #include <vector> 11 #include <vector>
13 12
14 #include "ash/display/window_tree_host_manager.h" 13 #include "ash/display/window_tree_host_manager.h"
15 #include "ash/shelf/shelf_delegate.h" 14 #include "ash/shelf/shelf_delegate.h"
16 #include "ash/shelf/shelf_item_delegate.h" 15 #include "ash/shelf/shelf_item_delegate.h"
17 #include "ash/shelf/shelf_item_delegate_manager.h" 16 #include "ash/shelf/shelf_item_delegate_manager.h"
18 #include "ash/shelf/shelf_item_types.h" 17 #include "ash/shelf/shelf_item_types.h"
19 #include "ash/shelf/shelf_layout_manager_observer.h"
20 #include "ash/shelf/shelf_model_observer.h" 18 #include "ash/shelf/shelf_model_observer.h"
21 #include "ash/shelf/shelf_types.h" 19 #include "ash/shelf/shelf_types.h"
22 #include "ash/shell_observer.h"
23 #include "base/compiler_specific.h" 20 #include "base/compiler_specific.h"
24 #include "base/macros.h" 21 #include "base/macros.h"
25 #include "base/memory/scoped_ptr.h" 22 #include "base/memory/scoped_ptr.h"
26 #include "base/memory/scoped_vector.h" 23 #include "base/memory/scoped_vector.h"
27 #include "build/build_config.h" 24 #include "build/build_config.h"
28 #include "chrome/browser/ui/app_icon_loader.h" 25 #include "chrome/browser/ui/app_icon_loader.h"
29 #include "chrome/browser/ui/ash/app_sync_ui_state_observer.h" 26 #include "chrome/browser/ui/ash/app_sync_ui_state_observer.h"
30 #include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item.h" 27 #include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item.h"
31 #include "chrome/browser/ui/ash/launcher/chrome_launcher_types.h" 28 #include "chrome/browser/ui/ash/launcher/chrome_launcher_types.h"
32 #include "chrome/browser/ui/ash/launcher/launcher_app_updater.h" 29 #include "chrome/browser/ui/ash/launcher/launcher_app_updater.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 // windows. Launcher items have a type, an optional app id, and a controller. 77 // windows. Launcher items have a type, an optional app id, and a controller.
81 // This incarnation groups running tabs/windows in application specific lists. 78 // This incarnation groups running tabs/windows in application specific lists.
82 // * Browser app windows have BrowserLauncherItemController, owned by the 79 // * Browser app windows have BrowserLauncherItemController, owned by the
83 // BrowserView instance. 80 // BrowserView instance.
84 // * App windows have AppWindowLauncherItemController, owned by 81 // * App windows have AppWindowLauncherItemController, owned by
85 // AppWindowLauncherController. 82 // AppWindowLauncherController.
86 // * Shortcuts have no LauncherItemController. 83 // * Shortcuts have no LauncherItemController.
87 class ChromeLauncherController 84 class ChromeLauncherController
88 : public ash::ShelfDelegate, 85 : public ash::ShelfDelegate,
89 public ash::ShelfModelObserver, 86 public ash::ShelfModelObserver,
90 public ash::ShellObserver,
91 public ash::WindowTreeHostManager::Observer, 87 public ash::WindowTreeHostManager::Observer,
92 public AppIconLoaderDelegate, 88 public AppIconLoaderDelegate,
93 public syncable_prefs::PrefServiceSyncableObserver, 89 public syncable_prefs::PrefServiceSyncableObserver,
94 public AppSyncUIStateObserver, 90 public AppSyncUIStateObserver,
95 public ExtensionEnableFlowDelegate, 91 public ExtensionEnableFlowDelegate,
96 public LauncherAppUpdater::Delegate, 92 public LauncherAppUpdater::Delegate,
97 public ash::ShelfLayoutManagerObserver,
98 public ash::ShelfItemDelegateManagerObserver { 93 public ash::ShelfItemDelegateManagerObserver {
99 public: 94 public:
100 // Indicates if a shelf item is incognito or not. 95 // Indicates if a shelf item is incognito or not.
101 enum IncognitoState { 96 enum IncognitoState {
102 STATE_INCOGNITO, 97 STATE_INCOGNITO,
103 STATE_NOT_INCOGNITO, 98 STATE_NOT_INCOGNITO,
104 }; 99 };
105 100
106 // Used to update the state of non plaform apps, as web contents change. 101 // Used to update the state of non plaform apps, as web contents change.
107 enum AppState { 102 enum AppState {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 // it, the the window will get minimized instead. 263 // it, the the window will get minimized instead.
269 // Returns the action performed. Should be one of kNoAction, 264 // Returns the action performed. Should be one of kNoAction,
270 // kExistingWindowActivated, or kExistingWindowMinimized. 265 // kExistingWindowActivated, or kExistingWindowMinimized.
271 ash::ShelfItemDelegate::PerformedAction ActivateWindowOrMinimizeIfActive( 266 ash::ShelfItemDelegate::PerformedAction ActivateWindowOrMinimizeIfActive(
272 ui::BaseWindow* window, 267 ui::BaseWindow* window,
273 bool allow_minimize); 268 bool allow_minimize);
274 269
275 // ash::ShelfDelegate: 270 // ash::ShelfDelegate:
276 void OnShelfCreated(ash::Shelf* shelf) override; 271 void OnShelfCreated(ash::Shelf* shelf) override;
277 void OnShelfDestroyed(ash::Shelf* shelf) override; 272 void OnShelfDestroyed(ash::Shelf* shelf) override;
273 void OnShelfAlignmentChanged(ash::Shelf* shelf) override;
274 void OnShelfAutoHideBehaviorChanged(ash::Shelf* shelf) override;
278 ash::ShelfID GetShelfIDForAppID(const std::string& app_id) override; 275 ash::ShelfID GetShelfIDForAppID(const std::string& app_id) override;
279 bool HasShelfIDToAppIDMapping(ash::ShelfID id) const override; 276 bool HasShelfIDToAppIDMapping(ash::ShelfID id) const override;
280 const std::string& GetAppIDForShelfID(ash::ShelfID id) override; 277 const std::string& GetAppIDForShelfID(ash::ShelfID id) override;
281 bool GetAppIDForShelfIDConst(ash::ShelfID id, std::string* app_id) const; 278 bool GetAppIDForShelfIDConst(ash::ShelfID id, std::string* app_id) const;
282 void PinAppWithID(const std::string& app_id) override; 279 void PinAppWithID(const std::string& app_id) override;
283 bool IsAppPinned(const std::string& app_id) override; 280 bool IsAppPinned(const std::string& app_id) override;
284 void UnpinAppWithID(const std::string& app_id) override; 281 void UnpinAppWithID(const std::string& app_id) override;
285 282
286 // ash::ShelfItemDelegateManagerObserver: 283 // ash::ShelfItemDelegateManagerObserver:
287 void OnSetShelfItemDelegate(ash::ShelfID id, 284 void OnSetShelfItemDelegate(ash::ShelfID id,
288 ash::ShelfItemDelegate* item_delegate) override; 285 ash::ShelfItemDelegate* item_delegate) override;
289 286
290 // ash::ShelfModelObserver: 287 // ash::ShelfModelObserver:
291 void ShelfItemAdded(int index) override; 288 void ShelfItemAdded(int index) override;
292 void ShelfItemRemoved(int index, ash::ShelfID id) override; 289 void ShelfItemRemoved(int index, ash::ShelfID id) override;
293 void ShelfItemMoved(int start_index, int target_index) override; 290 void ShelfItemMoved(int start_index, int target_index) override;
294 void ShelfItemChanged(int index, const ash::ShelfItem& old_item) override; 291 void ShelfItemChanged(int index, const ash::ShelfItem& old_item) override;
295 292
296 // ash::ShellObserver:
297 void OnShelfAlignmentChanged(aura::Window* root_window) override;
298
299 // ash::WindowTreeHostManager::Observer: 293 // ash::WindowTreeHostManager::Observer:
300 void OnDisplayConfigurationChanged() override; 294 void OnDisplayConfigurationChanged() override;
301 295
302 // LauncherAppUpdater: 296 // LauncherAppUpdater:
303 void OnAppInstalled(content::BrowserContext* browser_context, 297 void OnAppInstalled(content::BrowserContext* browser_context,
304 const std::string& app_id) override; 298 const std::string& app_id) override;
305 void OnAppUpdated(content::BrowserContext* browser_context, 299 void OnAppUpdated(content::BrowserContext* browser_context,
306 const std::string& app_id) override; 300 const std::string& app_id) override;
307 void OnAppUninstalled(content::BrowserContext* browser_context, 301 void OnAppUninstalled(content::BrowserContext* browser_context,
308 const std::string& app_id) override; 302 const std::string& app_id) override;
309 303
310 // syncable_prefs::PrefServiceSyncableObserver: 304 // syncable_prefs::PrefServiceSyncableObserver:
311 void OnIsSyncingChanged() override; 305 void OnIsSyncingChanged() override;
312 306
313 // AppSyncUIStateObserver: 307 // AppSyncUIStateObserver:
314 void OnAppSyncUIStatusChanged() override; 308 void OnAppSyncUIStatusChanged() override;
315 309
316 // ExtensionEnableFlowDelegate: 310 // ExtensionEnableFlowDelegate:
317 void ExtensionEnableFlowFinished() override; 311 void ExtensionEnableFlowFinished() override;
318 void ExtensionEnableFlowAborted(bool user_initiated) override; 312 void ExtensionEnableFlowAborted(bool user_initiated) override;
319 313
320 // AppIconLoaderDelegate: 314 // AppIconLoaderDelegate:
321 void OnAppImageUpdated(const std::string& app_id, 315 void OnAppImageUpdated(const std::string& app_id,
322 const gfx::ImageSkia& image) override; 316 const gfx::ImageSkia& image) override;
323 317
324 // ash::ShelfLayoutManagerObserver:
325 void OnAutoHideBehaviorChanged(
326 aura::Window* root_window,
327 ash::ShelfAutoHideBehavior new_behavior) override;
328
329 // Called when the active user has changed. 318 // Called when the active user has changed.
330 void ActiveUserChanged(const std::string& user_email); 319 void ActiveUserChanged(const std::string& user_email);
331 320
332 // Called when a user got added to the session. 321 // Called when a user got added to the session.
333 void AdditionalUserAddedToSession(Profile* profile); 322 void AdditionalUserAddedToSession(Profile* profile);
334 323
335 // Get the list of all running incarnations of this item. 324 // Get the list of all running incarnations of this item.
336 // |event_flags| specifies the flags which were set by the event which 325 // |event_flags| specifies the flags which were set by the event which
337 // triggered this menu generation. It can be used to generate different lists. 326 // triggered this menu generation. It can be used to generate different lists.
338 ChromeLauncherAppMenuItems GetApplicationList(const ash::ShelfItem& item, 327 ChromeLauncherAppMenuItems GetApplicationList(const ash::ShelfItem& item,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 int PinRunningAppInternal(int index, ash::ShelfID shelf_id); 435 int PinRunningAppInternal(int index, ash::ShelfID shelf_id);
447 436
448 // Unpin a locked application. This is an internal call which converts the 437 // Unpin a locked application. This is an internal call which converts the
449 // model type of the given app index from a shortcut into an unpinned running 438 // model type of the given app index from a shortcut into an unpinned running
450 // app. 439 // app.
451 void UnpinRunningAppInternal(int index); 440 void UnpinRunningAppInternal(int index);
452 441
453 // Re-syncs shelf model with prefs::kPinnedLauncherApps. 442 // Re-syncs shelf model with prefs::kPinnedLauncherApps.
454 void UpdateAppLaunchersFromPref(); 443 void UpdateAppLaunchersFromPref();
455 444
456 // Persists the shelf auto-hide behavior to prefs.
457 void SetShelfAutoHideBehaviorPrefs(ash::ShelfAutoHideBehavior behavior,
458 aura::Window* root_window);
459
460 // Sets the shelf auto-hide behavior from prefs. 445 // Sets the shelf auto-hide behavior from prefs.
461 void SetShelfAutoHideBehaviorFromPrefs(); 446 void SetShelfAutoHideBehaviorFromPrefs();
462 447
463 // Sets the shelf alignment from prefs. 448 // Sets the shelf alignment from prefs.
464 void SetShelfAlignmentFromPrefs(); 449 void SetShelfAlignmentFromPrefs();
465 450
466 // Sets both of auto-hide behavior and alignment from prefs. 451 // Sets both of auto-hide behavior and alignment from prefs.
467 void SetShelfBehaviorsFromPrefs(); 452 void SetShelfBehaviorsFromPrefs();
468 453
469 #if defined(OS_CHROMEOS) 454 #if defined(OS_CHROMEOS)
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 553
569 // Used to handle app load/unload events. 554 // Used to handle app load/unload events.
570 std::vector<scoped_ptr<LauncherAppUpdater>> app_updaters_; 555 std::vector<scoped_ptr<LauncherAppUpdater>> app_updaters_;
571 556
572 PrefChangeRegistrar pref_change_registrar_; 557 PrefChangeRegistrar pref_change_registrar_;
573 558
574 AppSyncUIState* app_sync_ui_state_; 559 AppSyncUIState* app_sync_ui_state_;
575 560
576 scoped_ptr<ExtensionEnableFlow> extension_enable_flow_; 561 scoped_ptr<ExtensionEnableFlow> extension_enable_flow_;
577 562
578 // Shelves that are currently being observed.
579 std::set<ash::Shelf*> shelves_;
580
581 // The owned browser status monitor. 563 // The owned browser status monitor.
582 scoped_ptr<BrowserStatusMonitor> browser_status_monitor_; 564 scoped_ptr<BrowserStatusMonitor> browser_status_monitor_;
583 565
584 #if defined(OS_CHROMEOS) 566 #if defined(OS_CHROMEOS)
585 // A special observer class to detect user switches. 567 // A special observer class to detect user switches.
586 scoped_ptr<ChromeLauncherControllerUserSwitchObserver> user_switch_observer_; 568 scoped_ptr<ChromeLauncherControllerUserSwitchObserver> user_switch_observer_;
587 #endif 569 #endif
588 570
589 // If true, incoming pinned state changes should be ignored. 571 // If true, incoming pinned state changes should be ignored.
590 bool ignore_persist_pinned_state_change_; 572 bool ignore_persist_pinned_state_change_;
591 573
592 // The list of running & un-pinned applications for different users on hidden 574 // The list of running & un-pinned applications for different users on hidden
593 // desktops. 575 // desktops.
594 typedef std::vector<std::string> RunningAppListIds; 576 typedef std::vector<std::string> RunningAppListIds;
595 typedef std::map<std::string, RunningAppListIds> RunningAppListIdMap; 577 typedef std::map<std::string, RunningAppListIds> RunningAppListIdMap;
596 RunningAppListIdMap last_used_running_application_order_; 578 RunningAppListIdMap last_used_running_application_order_;
597 579
598 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherController); 580 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherController);
599 }; 581 };
600 582
601 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_ 583 #endif // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698