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

Unified Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h

Issue 2839933005: mash: Merge ChromeLauncherController and *Impl subclass. (Closed)
Patch Set: Address comments. Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
deleted file mode 100644
index c994378f797ed331f71582214910f5038ab0cfd0..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h
+++ /dev/null
@@ -1,286 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_IMPL_H_
-#define CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_IMPL_H_
-
-#include <list>
-#include <memory>
-
-#include "ash/display/window_tree_host_manager.h"
-#include "ash/public/cpp/shelf_types.h"
-#include "ash/shelf/shelf_model_observer.h"
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "build/build_config.h"
-#include "chrome/browser/ui/app_list/app_list_syncable_service.h"
-#include "chrome/browser/ui/ash/app_sync_ui_state_observer.h"
-#include "chrome/browser/ui/ash/chrome_launcher_prefs.h"
-#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
-#include "chrome/browser/ui/ash/launcher/launcher_app_updater.h"
-#include "components/prefs/pref_change_registrar.h"
-#include "components/sync_preferences/pref_service_syncable_observer.h"
-#include "ui/aura/window_observer.h"
-
-class AppSyncUIState;
-class BrowserStatusMonitor;
-class Profile;
-class AppWindowLauncherController;
-
-namespace ash {
-class ShelfModel;
-namespace launcher {
-class ChromeLauncherPrefsObserver;
-}
-}
-
-class ChromeLauncherControllerUserSwitchObserver;
-
-// Implementation of ChromeLauncherController, used for classic Ash.
-// This class manipulates Ash's ShelfModel to support Chrome and its apps.
-class ChromeLauncherControllerImpl
- : public ChromeLauncherController,
- public LauncherAppUpdater::Delegate,
- private ash::ShelfModelObserver,
- private ash::WindowTreeHostManager::Observer,
- private AppSyncUIStateObserver,
- private app_list::AppListSyncableService::Observer,
- private sync_preferences::PrefServiceSyncableObserver {
- public:
- ChromeLauncherControllerImpl(Profile* profile, ash::ShelfModel* model);
- ~ChromeLauncherControllerImpl() override;
-
- // ChromeLauncherController:
- ash::ShelfID CreateAppLauncherItem(
- std::unique_ptr<ash::ShelfItemDelegate> item_delegate,
- ash::ShelfItemStatus status) override;
- const ash::ShelfItem* GetItem(ash::ShelfID id) const override;
- void SetItemType(ash::ShelfID id, ash::ShelfItemType type) override;
- void SetItemStatus(ash::ShelfID id, ash::ShelfItemStatus status) override;
- void CloseLauncherItem(ash::ShelfID id) override;
- bool IsPinned(ash::ShelfID id) override;
- void SetV1AppStatus(const std::string& app_id,
- ash::ShelfItemStatus status) override;
- void Launch(ash::ShelfID id, int event_flags) override;
- void Close(ash::ShelfID id) override;
- bool IsOpen(ash::ShelfID id) override;
- bool IsPlatformApp(ash::ShelfID id) override;
- void ActivateApp(const std::string& app_id,
- ash::ShelfLaunchSource source,
- int event_flags) override;
- void SetLauncherItemImage(ash::ShelfID shelf_id,
- const gfx::ImageSkia& image) override;
- void UpdateAppState(content::WebContents* contents,
- AppState app_state) override;
- ash::ShelfID GetShelfIDForWebContents(
- content::WebContents* contents) override;
- void SetRefocusURLPatternForTest(ash::ShelfID id, const GURL& url) override;
- ash::ShelfAction ActivateWindowOrMinimizeIfActive(
- ui::BaseWindow* window,
- bool allow_minimize) override;
- void ActiveUserChanged(const std::string& user_email) override;
- void AdditionalUserAddedToSession(Profile* profile) override;
- ash::MenuItemList GetAppMenuItemsForTesting(
- const ash::ShelfItem& item) override;
- std::vector<content::WebContents*> GetV1ApplicationsFromAppId(
- const std::string& app_id) override;
- void ActivateShellApp(const std::string& app_id, int window_index) override;
- bool IsWebContentHandledByApplication(content::WebContents* web_contents,
- const std::string& app_id) override;
- bool ContentCanBeHandledByGmailApp(
- content::WebContents* web_contents) override;
- gfx::Image GetAppListIcon(content::WebContents* web_contents) const override;
- base::string16 GetAppListTitle(
- content::WebContents* web_contents) const override;
- BrowserShortcutLauncherItemController*
- GetBrowserShortcutLauncherItemController() override;
- bool ShelfBoundsChangesProbablyWithUser(
- ash::WmShelf* shelf,
- const AccountId& account_id) const override;
- void OnUserProfileReadyToSwitch(Profile* profile) override;
- ArcAppDeferredLauncherController* GetArcDeferredLauncher() override;
- const std::string& GetLaunchIDForShelfID(ash::ShelfID id) override;
- void AttachProfile(Profile* profile_to_attach) override;
-
- ash::ShelfModel* shelf_model() const { return model_; }
-
- // Access to the BrowserStatusMonitor for tests.
- BrowserStatusMonitor* browser_status_monitor_for_test() {
- return browser_status_monitor_.get();
- }
-
- // Access to the AppWindowLauncherController list for tests.
- const std::vector<std::unique_ptr<AppWindowLauncherController>>&
- app_window_controllers_for_test() {
- return app_window_controllers_;
- }
-
- // Helpers that call through to corresponding ShelfModel functions.
- ash::ShelfID GetShelfIDForAppID(const std::string& app_id);
- ash::ShelfID GetShelfIDForAppIDAndLaunchID(const std::string& app_id,
- const std::string& launch_id);
- const std::string& GetAppIDForShelfID(ash::ShelfID id);
- void PinAppWithID(const std::string& app_id);
- bool IsAppPinned(const std::string& app_id);
- void UnpinAppWithID(const std::string& app_id);
-
- // LauncherAppUpdater::Delegate:
- void OnAppInstalled(content::BrowserContext* browser_context,
- const std::string& app_id) override;
- void OnAppUpdated(content::BrowserContext* browser_context,
- const std::string& app_id) override;
- void OnAppUninstalledPrepared(content::BrowserContext* browser_context,
- const std::string& app_id) override;
-
- protected:
- // ChromeLauncherController:
- void OnInit() override;
-
- // Creates a new app shortcut item and controller on the shelf at |index|.
- ash::ShelfID CreateAppShortcutLauncherItem(
- const ash::AppLaunchId& app_launch_id,
- int index);
-
- private:
- friend class ChromeLauncherControllerImplTest;
- friend class ShelfAppBrowserTest;
- friend class LauncherPlatformAppBrowserTest;
- friend class TestChromeLauncherControllerImpl;
- FRIEND_TEST_ALL_PREFIXES(ChromeLauncherControllerImplTest, AppPanels);
-
- typedef std::map<content::WebContents*, std::string> WebContentsToAppIDMap;
-
- // Remembers / restores list of running applications.
- // Note that this order will neither be stored in the preference nor will it
- // remember the order of closed applications since it is only temporary.
- void RememberUnpinnedRunningApplicationOrder();
- void RestoreUnpinnedRunningApplicationOrder(const std::string& user_id);
-
- // Invoked when the associated browser or app is closed.
- void RemoveShelfItem(ash::ShelfID id);
-
- // Internal helpers for pinning and unpinning that handle both
- // client-triggered and internal pinning operations.
- void DoPinAppWithID(const std::string& app_id);
- void DoUnpinAppWithID(const std::string& app_id, bool update_prefs);
-
- // Pin a running app with |shelf_id| internally to |index|.
- void PinRunningAppInternal(int index, ash::ShelfID shelf_id);
-
- // Unpin a locked application. This is an internal call which converts the
- // model type of the given app index from a shortcut into an unpinned running
- // app.
- void UnpinRunningAppInternal(int index);
-
- // Updates pin position for the item specified by |id| in sync model.
- void SyncPinPosition(ash::ShelfID id);
-
- // Re-syncs shelf model.
- void UpdateAppLaunchersFromPref();
-
- // Schedules re-sync of shelf model.
- void ScheduleUpdateAppLaunchersFromPref();
-
- // Update the policy-pinned flag for each shelf item.
- void UpdatePolicyPinnedAppsFromPrefs();
-
- // Sets whether the virtual keyboard is enabled from prefs.
- void SetVirtualKeyboardBehaviorFromPrefs();
-
- // Returns the shelf item status for the given |app_id|, which can be either
- // STATUS_ACTIVE (if the app is active), STATUS_RUNNING (if there is such an
- // app) or STATUS_CLOSED.
- ash::ShelfItemStatus GetAppState(const std::string& app_id);
-
- // Creates an app launcher to insert at |index|. Note that |index| may be
- // adjusted by the model to meet ordering constraints.
- // The |shelf_item_type| will be set into the ShelfModel.
- ash::ShelfID InsertAppLauncherItem(
- std::unique_ptr<ash::ShelfItemDelegate> item_delegate,
- ash::ShelfItemStatus status,
- int index,
- ash::ShelfItemType shelf_item_type);
-
- // Create ShelfItem for Browser Shortcut.
- void CreateBrowserShortcutLauncherItem();
-
- // Check if the given |web_contents| is in incognito mode.
- bool IsIncognito(const content::WebContents* web_contents) const;
-
- // Finds the index of where to insert the next item.
- int FindInsertionPoint();
-
- // Close all windowed V1 applications of a certain extension which was already
- // deleted.
- void CloseWindowedAppsFromRemovedExtension(const std::string& app_id,
- const Profile* profile);
-
- // Forget the current profile to allow attaching to a new one.
- void ReleaseProfile();
-
- // ash::ShelfModelObserver:
- void ShelfItemAdded(int index) override;
- void ShelfItemRemoved(int index, const ash::ShelfItem& old_item) override;
- void ShelfItemMoved(int start_index, int target_index) override;
- void ShelfItemChanged(int index, const ash::ShelfItem& old_item) override;
-
- // ash::WindowTreeHostManager::Observer:
- void OnDisplayConfigurationChanged() override;
-
- // AppSyncUIStateObserver:
- void OnAppSyncUIStatusChanged() override;
-
- // AppIconLoaderDelegate:
- void OnAppImageUpdated(const std::string& app_id,
- const gfx::ImageSkia& image) override;
-
- // app_list::AppListSyncableService::Observer:
- void OnSyncModelUpdated() override;
-
- // sync_preferences::PrefServiceSyncableObserver:
- void OnIsSyncingChanged() override;
-
- // An internal helper to unpin a shelf item; this does not update prefs.
- void UnpinShelfItemInternal(ash::ShelfID id);
-
- ash::ShelfModel* model_;
-
- // Direct access to app_id for a web contents.
- WebContentsToAppIDMap web_contents_to_app_id_;
-
- // Used to track app windows.
- std::vector<std::unique_ptr<AppWindowLauncherController>>
- app_window_controllers_;
-
- // Used to handle app load/unload events.
- std::vector<std::unique_ptr<LauncherAppUpdater>> app_updaters_;
-
- PrefChangeRegistrar pref_change_registrar_;
-
- AppSyncUIState* app_sync_ui_state_ = nullptr;
-
- // The owned browser status monitor.
- std::unique_ptr<BrowserStatusMonitor> browser_status_monitor_;
-
- // A special observer class to detect user switches.
- std::unique_ptr<ChromeLauncherControllerUserSwitchObserver>
- user_switch_observer_;
-
- std::unique_ptr<ash::launcher::ChromeLauncherPrefsObserver> prefs_observer_;
-
- std::unique_ptr<ArcAppDeferredLauncherController> arc_deferred_launcher_;
-
- // The list of running & un-pinned applications for different users on hidden
- // desktops.
- typedef std::vector<std::string> RunningAppListIds;
- typedef std::map<std::string, RunningAppListIds> RunningAppListIdMap;
- RunningAppListIdMap last_used_running_application_order_;
-
- base::WeakPtrFactory<ChromeLauncherControllerImpl> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImpl);
-};
-
-#endif // CHROME_BROWSER_UI_ASH_LAUNCHER_CHROME_LAUNCHER_CONTROLLER_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698