OLD | NEW |
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_EXTENSIONS_CHROME_APP_SORTING_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_CHROME_APP_SORTING_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_CHROME_APP_SORTING_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_CHROME_APP_SORTING_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
13 #include "extensions/browser/app_sorting.h" | 13 #include "extensions/browser/app_sorting.h" |
14 #include "extensions/browser/extension_prefs.h" | 14 #include "extensions/browser/extension_prefs.h" |
15 #include "extensions/common/extension.h" | 15 #include "extensions/common/extension.h" |
16 #include "sync/api/string_ordinal.h" | 16 #include "sync/api/string_ordinal.h" |
17 | 17 |
18 class ExtensionSyncService; | |
19 class PrefService; | 18 class PrefService; |
20 | 19 |
21 namespace extensions { | 20 namespace extensions { |
22 | 21 |
23 class ExtensionScopedPrefs; | 22 class ExtensionScopedPrefs; |
24 | 23 |
25 class ChromeAppSorting : public AppSorting { | 24 class ChromeAppSorting : public AppSorting { |
26 public: | 25 public: |
27 ChromeAppSorting(); | 26 explicit ChromeAppSorting(content::BrowserContext* browser_context); |
28 ~ChromeAppSorting() override; | 27 ~ChromeAppSorting() override; |
29 | 28 |
30 // AppSorting implementation: | 29 // AppSorting implementation: |
31 void SetExtensionScopedPrefs(ExtensionScopedPrefs* prefs) override; | 30 void SetExtensionScopedPrefs(ExtensionScopedPrefs* prefs) override; |
32 void CheckExtensionScopedPrefs() const override; | 31 void CheckExtensionScopedPrefs() const override; |
33 void SetExtensionSyncService( | |
34 ExtensionSyncService* extension_sync_service) override; | |
35 void Initialize(const extensions::ExtensionIdList& extension_ids) override; | 32 void Initialize(const extensions::ExtensionIdList& extension_ids) override; |
36 void FixNTPOrdinalCollisions() override; | 33 void FixNTPOrdinalCollisions() override; |
37 void EnsureValidOrdinals( | 34 void EnsureValidOrdinals( |
38 const std::string& extension_id, | 35 const std::string& extension_id, |
39 const syncer::StringOrdinal& suggested_page) override; | 36 const syncer::StringOrdinal& suggested_page) override; |
40 void OnExtensionMoved(const std::string& moved_extension_id, | 37 void OnExtensionMoved(const std::string& moved_extension_id, |
41 const std::string& predecessor_extension_id, | 38 const std::string& predecessor_extension_id, |
42 const std::string& successor_extension_id) override; | 39 const std::string& successor_extension_id) override; |
43 syncer::StringOrdinal GetAppLaunchOrdinal( | 40 syncer::StringOrdinal GetAppLaunchOrdinal( |
44 const std::string& extension_id) const override; | 41 const std::string& extension_id) const override; |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 // by |page_ordinal|. Otherwise, returns an ordinal after |app_launch_ordinal| | 146 // by |page_ordinal|. Otherwise, returns an ordinal after |app_launch_ordinal| |
150 // that has no conflict. | 147 // that has no conflict. |
151 syncer::StringOrdinal ResolveCollision( | 148 syncer::StringOrdinal ResolveCollision( |
152 const syncer::StringOrdinal& page_ordinal, | 149 const syncer::StringOrdinal& page_ordinal, |
153 const syncer::StringOrdinal& app_launch_ordinal) const; | 150 const syncer::StringOrdinal& app_launch_ordinal) const; |
154 | 151 |
155 // Returns the number of items in |m| visible on the new tab page. | 152 // Returns the number of items in |m| visible on the new tab page. |
156 size_t CountItemsVisibleOnNtp(const AppLaunchOrdinalMap& m) const; | 153 size_t CountItemsVisibleOnNtp(const AppLaunchOrdinalMap& m) const; |
157 | 154 |
158 ExtensionScopedPrefs* extension_scoped_prefs_; // Weak, owns this instance. | 155 ExtensionScopedPrefs* extension_scoped_prefs_; // Weak, owns this instance. |
159 ExtensionSyncService* extension_sync_service_; // Weak. | 156 content::BrowserContext* browser_context_; |
160 | 157 |
161 // A map of all the StringOrdinal page ordinals mapping to the collections of | 158 // A map of all the StringOrdinal page ordinals mapping to the collections of |
162 // app launch ordinals that exist on that page. This is used for mapping | 159 // app launch ordinals that exist on that page. This is used for mapping |
163 // StringOrdinals to their Integer equivalent as well as quick lookup of the | 160 // StringOrdinals to their Integer equivalent as well as quick lookup of the |
164 // any collision of on the NTP (icons with the same page and same app launch | 161 // any collision of on the NTP (icons with the same page and same app launch |
165 // ordinals). The possiblity of collisions means that a multimap must be used | 162 // ordinals). The possiblity of collisions means that a multimap must be used |
166 // (although the collisions must all be resolved once all the syncing is | 163 // (although the collisions must all be resolved once all the syncing is |
167 // done). | 164 // done). |
168 PageOrdinalMap ntp_ordinal_map_; | 165 PageOrdinalMap ntp_ordinal_map_; |
169 | 166 |
170 // Defines the default ordinals. | 167 // Defines the default ordinals. |
171 AppOrdinalsMap default_ordinals_; | 168 AppOrdinalsMap default_ordinals_; |
172 | 169 |
173 // Used to construct the default ordinals once when needed instead of on | 170 // Used to construct the default ordinals once when needed instead of on |
174 // construction when the app order may not have been determined. | 171 // construction when the app order may not have been determined. |
175 bool default_ordinals_created_; | 172 bool default_ordinals_created_; |
176 | 173 |
177 // The set of extensions that don't appear in the new tab page. | 174 // The set of extensions that don't appear in the new tab page. |
178 std::set<std::string> ntp_hidden_extensions_; | 175 std::set<std::string> ntp_hidden_extensions_; |
179 | 176 |
180 DISALLOW_COPY_AND_ASSIGN(ChromeAppSorting); | 177 DISALLOW_COPY_AND_ASSIGN(ChromeAppSorting); |
181 }; | 178 }; |
182 | 179 |
183 } // namespace extensions | 180 } // namespace extensions |
184 | 181 |
185 #endif // CHROME_BROWSER_EXTENSIONS_CHROME_APP_SORTING_H_ | 182 #endif // CHROME_BROWSER_EXTENSIONS_CHROME_APP_SORTING_H_ |
OLD | NEW |