Index: chrome/browser/ui/app_list/app_list_prefs.h |
diff --git a/chrome/browser/ui/app_list/app_list_prefs.h b/chrome/browser/ui/app_list/app_list_prefs.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6a9934f3f2b8ba3f679a858f44ed2e323f2a0f3f |
--- /dev/null |
+++ b/chrome/browser/ui/app_list/app_list_prefs.h |
@@ -0,0 +1,92 @@ |
+// Copyright 2014 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_APP_LIST_APP_LIST_PREFS_H_ |
+#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_PREFS_H_ |
+ |
+#include <set> |
+#include <string> |
+#include <vector> |
+ |
+#include "base/basictypes.h" |
+#include "base/observer_list.h" |
+#include "base/values.h" |
+#include "components/keyed_service/core/keyed_service.h" |
+#include "sync/api/string_ordinal.h" |
+ |
+class PrefService; |
+ |
+namespace content { |
+class BrowserContext; |
+} |
+ |
+namespace user_prefs { |
+class PrefRegistrySyncable; |
+} |
+ |
+namespace app_list { |
+ |
+class AppListPrefs : public KeyedService { |
+ public: |
+ static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
+ |
+ static AppListPrefs* Get(content::BrowserContext* context); |
+ |
+ static AppListPrefs* Create(PrefService* pref_service); |
+ |
+ // An app list item's information. This is enough data to reconstruct the full |
+ // hierarchy and ordering information of the app list. |
+ struct AppListInfo { |
Matt Giuca
2014/09/30 02:49:47
This definition should appear before the methods.
calamity
2014/09/30 05:40:08
Done.
|
+ enum ItemType { |
+ ITEM_TYPE_INVALID = 0, |
+ ITEM_TYPE_BEGIN, |
+ APP_ITEM = ITEM_TYPE_BEGIN, |
+ FOLDER_ITEM, |
+ |
+ // Do not change the order of this enum. |
+ // When adding values, remember to update ITEM_TYPE_END. |
+ ITEM_TYPE_END = FOLDER_ITEM, |
stevenjb
2014/09/26 16:22:16
nit: I think it would be simpler to explicitly ass
Matt Giuca
2014/09/30 02:49:47
I agree. You currently only use ITEM_TYPE_BEGIN/IT
calamity
2014/09/30 05:40:08
I'm using the begin and end values for validity ch
Matt Giuca
2014/09/30 06:04:42
Acknowledged.
|
+ }; |
+ explicit AppListInfo(const base::DictionaryValue* item_dict); |
stevenjb
2014/09/26 16:22:16
nit: Multiple constructors like this can be confus
Matt Giuca
2014/09/30 02:49:47
+1
(You could also add another constructor that t
calamity
2014/09/30 05:40:08
Done.
|
+ AppListInfo(); |
+ ~AppListInfo(); |
+ |
+ // The id of the folder containing this item. |
+ std::string folder_id; |
stevenjb
2014/09/26 16:22:16
All of the sync code uses 'parent_id', we should b
calamity
2014/09/30 05:40:08
Done.
|
+ |
+ // The name of this item. |
+ std::string name; |
+ |
+ // The position of this item in the app list. |
+ syncer::StringOrdinal position; |
stevenjb
2014/09/26 16:22:16
We currently do not use the page_ordinal field fro
Matt Giuca
2014/09/30 02:49:47
We're explicitly trying to avoid having page_ordin
calamity
2014/09/30 05:40:08
The page ordinal field is completely unused at the
stevenjb
2014/09/30 18:16:23
We should probably have an "App Launcher" meeting
|
+ |
+ // The type of app list item being represented. |
+ ItemType item_type; |
+ }; |
+ |
+ virtual ~AppListPrefs(); |
+ |
+ // Sets the app list info for |id|. |
+ void SetAppListInfo(const std::string& id, const AppListInfo& info); |
+ |
+ // Gets the app list info for |id|. |
+ scoped_ptr<AppListInfo> GetAppListInfo(const std::string& id) const; |
+ |
+ // Gets a map of all AppListInfo objects in the prefs. |
+ std::map<std::string, AppListInfo> GetAllAppListInfos() const; |
stevenjb
2014/09/26 16:22:16
This is passing a potentially very large map by va
calamity
2014/09/30 05:40:08
Done.
|
+ |
+ // Deletes the app list info for |id|. |
+ void DeleteAppListInfo(const std::string& id); |
+ |
+ private: |
+ explicit AppListPrefs(PrefService* pref_service); |
+ |
+ PrefService* pref_service_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AppListPrefs); |
+}; |
+ |
+} // namespace app_list |
+ |
+#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_PREFS_H_ |