Index: chrome/browser/ui/ash/chrome_launcher_prefs.h |
diff --git a/chrome/browser/ui/ash/chrome_launcher_prefs.h b/chrome/browser/ui/ash/chrome_launcher_prefs.h |
index 25751e4ebf30097e2442e13350c67c4b87292798..b924d2d7373dbb40b72c0adba50e7a8e4a8f4c5e 100644 |
--- a/chrome/browser/ui/ash/chrome_launcher_prefs.h |
+++ b/chrome/browser/ui/ash/chrome_launcher_prefs.h |
@@ -51,10 +51,45 @@ extern const char kShelfAlignmentBottom[]; |
extern const char kShelfAlignmentLeft[]; |
extern const char kShelfAlignmentRight[]; |
+// A unique chrome launcher id used to identify a shelf item. This class is a |
+// wrapper for the chrome launcher identifier. |app_launcher_id_| includes the |
+// |app_id| and the |launch_id|. The |app_id| is the application id associated |
+// with a set of windows. The |launch_id| is an id that can be passed to an app |
+// when launched in order to support multiple shelf items per app. This id is |
+// used together with the |app_id| to uniquely identify each shelf item that |
+// has the same |app_id|. The |app_id| must not be empty. |
+class AppLauncherId { |
+ public: |
+ AppLauncherId(const std::string& app_id, const std::string& launch_id); |
+ // Creates an AppLauncherId with an empty |launch_id|. |
+ explicit AppLauncherId(const std::string& app_id); |
+ // Empty constructor for pre-allocating. |
+ AppLauncherId(); |
+ ~AppLauncherId(); |
+ |
+ AppLauncherId(const AppLauncherId& app_launcher_id) = default; |
+ AppLauncherId(AppLauncherId&& app_launcher_id) = default; |
+ AppLauncherId& operator=(const AppLauncherId& other) = default; |
+ |
+ std::string ToString() const; |
+ const std::string& app_id() const { return app_id_; } |
+ const std::string& launch_id() const { return launch_id_; } |
+ |
+ bool operator<(const AppLauncherId& other) const; |
+ |
+ private: |
+ // The application id associated with a set of windows. |
+ std::string app_id_; |
+ // An id that can be passed to an app when launched in order to support |
+ // multiple shelf items per app. |
+ std::string launch_id_; |
+}; |
+ |
void RegisterChromeLauncherUserPrefs( |
user_prefs::PrefRegistrySyncable* registry); |
-std::unique_ptr<base::DictionaryValue> CreateAppDict(const std::string& app_id); |
+std::unique_ptr<base::DictionaryValue> CreateAppDict( |
+ const AppLauncherId& app_launcher_id); |
// Get or set the shelf auto hide behavior preference for a particular display. |
ShelfAutoHideBehavior GetShelfAutoHideBehaviorPref(PrefService* prefs, |
@@ -70,21 +105,21 @@ void SetShelfAlignmentPref(PrefService* prefs, |
ShelfAlignment alignment); |
// Get the list of pinned apps from preferences. |
-std::vector<std::string> GetPinnedAppsFromPrefs( |
+std::vector<AppLauncherId> GetPinnedAppsFromPrefs( |
const PrefService* prefs, |
LauncherControllerHelper* helper); |
// Removes information about pin position from sync model for the app. |
-void RemovePinPosition(Profile* profile, const std::string& app_id); |
+void RemovePinPosition(Profile* profile, const AppLauncherId& app_launcher_id); |
-// Updates information about pin position in sync model for the app |app_id|. |
-// |app_id_before| optionally specifies an app that exists right before the |
-// target app. |app_ids_after| optionally specifies sorted by position apps that |
-// exist right after the target app. |
+// Updates information about pin position in sync model for the app |
+// |app_launcher_id|. |app_launcher_id_before| optionally specifies an app that |
+// exists right before the target app. |app_launcher_ids_after| optionally |
+// specifies sorted by position apps that exist right after the target app. |
void SetPinPosition(Profile* profile, |
- const std::string& app_id, |
- const std::string& app_id_before, |
- const std::vector<std::string>& app_ids_after); |
+ const AppLauncherId& app_launcher_id, |
+ const AppLauncherId& app_launcher_id_before, |
+ const std::vector<AppLauncherId>& app_launcher_ids_after); |
// Used to propagate remote preferences to local during the first run. |
class ChromeLauncherPrefsObserver |