Chromium Code Reviews| 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_ |