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

Side by Side Diff: chrome/browser/extensions/extension_sorting.cc

Issue 9340007: Make the Chrome Web Store Icon Syncable (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixing chromeos compile problem Created 8 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/extensions/extension_sorting.h" 5 #include "chrome/browser/extensions/extension_sorting.h"
6 6
7 #include "chrome/browser/extensions/extension_scoped_prefs.h" 7 #include "chrome/browser/extensions/extension_scoped_prefs.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/common/chrome_notification_types.h" 9 #include "chrome/common/chrome_notification_types.h"
10 #include "content/public/browser/notification_service.h" 10 #include "content/public/browser/notification_service.h"
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 } 183 }
184 } 184 }
185 } 185 }
186 186
187 content::NotificationService::current()->Notify( 187 content::NotificationService::current()->Notify(
188 chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, 188 chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED,
189 content::Source<ExtensionSorting>(this), 189 content::Source<ExtensionSorting>(this),
190 content::NotificationService::NoDetails()); 190 content::NotificationService::NoDetails());
191 } 191 }
192 192
193 void ExtensionSorting::EnsureValidOrdinals(const std::string& extension_id) {
194 StringOrdinal page_ordinal = GetPageOrdinal(extension_id);
195 if (!page_ordinal.IsValid()) {
196 // The webstore app should always start be on the first page.
197 page_ordinal = extension_id == extension_misc::kWebStoreAppId ?
198 CreateFirstAppPageOrdinal() :
199 GetNaturalAppPageOrdinal();
200 SetPageOrdinal(extension_id, page_ordinal);
201 }
202
203 StringOrdinal app_launch_ordinal = GetAppLaunchOrdinal(extension_id);
204 if (!app_launch_ordinal.IsValid()) {
205 // The webstore app should always start in the position.
206 app_launch_ordinal = extension_id == extension_misc::kWebStoreAppId ?
207 CreateFirstAppLaunchOrdinal(page_ordinal) :
208 CreateNextAppLaunchOrdinal(page_ordinal);
209 SetAppLaunchOrdinal(extension_id,
210 app_launch_ordinal);
211 }
212 }
213
193 void ExtensionSorting::OnExtensionMoved( 214 void ExtensionSorting::OnExtensionMoved(
194 const std::string& moved_extension_id, 215 const std::string& moved_extension_id,
195 const std::string& predecessor_extension_id, 216 const std::string& predecessor_extension_id,
196 const std::string& successor_extension_id) { 217 const std::string& successor_extension_id) {
197 // We only need to change the StringOrdinal if there are neighbours. 218 // We only need to change the StringOrdinal if there are neighbours.
198 if (!predecessor_extension_id.empty() || !successor_extension_id.empty()) { 219 if (!predecessor_extension_id.empty() || !successor_extension_id.empty()) {
199 if (predecessor_extension_id.empty()) { 220 if (predecessor_extension_id.empty()) {
200 // Only a successor. 221 // Only a successor.
201 SetAppLaunchOrdinal( 222 SetAppLaunchOrdinal(
202 moved_extension_id, 223 moved_extension_id,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } 257 }
237 258
238 void ExtensionSorting::SetAppLaunchOrdinal( 259 void ExtensionSorting::SetAppLaunchOrdinal(
239 const std::string& extension_id, 260 const std::string& extension_id,
240 const StringOrdinal& new_app_launch_ordinal) { 261 const StringOrdinal& new_app_launch_ordinal) {
241 StringOrdinal page_ordinal = GetPageOrdinal(extension_id); 262 StringOrdinal page_ordinal = GetPageOrdinal(extension_id);
242 RemoveOrdinalMapping( 263 RemoveOrdinalMapping(
243 extension_id, page_ordinal, GetAppLaunchOrdinal(extension_id)); 264 extension_id, page_ordinal, GetAppLaunchOrdinal(extension_id));
244 AddOrdinalMapping(extension_id, page_ordinal, new_app_launch_ordinal); 265 AddOrdinalMapping(extension_id, page_ordinal, new_app_launch_ordinal);
245 266
267 Value* new_value = new_app_launch_ordinal.IsValid() ?
268 Value::CreateStringValue(new_app_launch_ordinal.ToString()) :
269 NULL;
270
246 extension_scoped_prefs_->UpdateExtensionPref( 271 extension_scoped_prefs_->UpdateExtensionPref(
247 extension_id, 272 extension_id,
248 kPrefAppLaunchOrdinal, 273 kPrefAppLaunchOrdinal,
249 Value::CreateStringValue(new_app_launch_ordinal.ToString())); 274 new_value);
250 } 275 }
251 276
252 StringOrdinal ExtensionSorting::CreateFirstAppLaunchOrdinal( 277 StringOrdinal ExtensionSorting::CreateFirstAppLaunchOrdinal(
253 const StringOrdinal& page_ordinal) const { 278 const StringOrdinal& page_ordinal) const {
254 const StringOrdinal& min_ordinal = 279 const StringOrdinal& min_ordinal =
255 GetMinOrMaxAppLaunchOrdinalsOnPage(page_ordinal, 280 GetMinOrMaxAppLaunchOrdinalsOnPage(page_ordinal,
256 ExtensionSorting::MIN_ORDINAL); 281 ExtensionSorting::MIN_ORDINAL);
257 282
258 if (min_ordinal.IsValid()) 283 if (min_ordinal.IsValid())
259 return min_ordinal.CreateBefore(); 284 return min_ordinal.CreateBefore();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 return StringOrdinal(raw_data); 338 return StringOrdinal(raw_data);
314 } 339 }
315 340
316 void ExtensionSorting::SetPageOrdinal(const std::string& extension_id, 341 void ExtensionSorting::SetPageOrdinal(const std::string& extension_id,
317 const StringOrdinal& new_page_ordinal) { 342 const StringOrdinal& new_page_ordinal) {
318 StringOrdinal app_launch_ordinal = GetAppLaunchOrdinal(extension_id); 343 StringOrdinal app_launch_ordinal = GetAppLaunchOrdinal(extension_id);
319 RemoveOrdinalMapping( 344 RemoveOrdinalMapping(
320 extension_id, GetPageOrdinal(extension_id), app_launch_ordinal); 345 extension_id, GetPageOrdinal(extension_id), app_launch_ordinal);
321 AddOrdinalMapping(extension_id, new_page_ordinal, app_launch_ordinal); 346 AddOrdinalMapping(extension_id, new_page_ordinal, app_launch_ordinal);
322 347
348 Value* new_value = new_page_ordinal.IsValid() ?
349 Value::CreateStringValue(new_page_ordinal.ToString()) :
350 NULL;
351
323 extension_scoped_prefs_->UpdateExtensionPref( 352 extension_scoped_prefs_->UpdateExtensionPref(
324 extension_id, 353 extension_id,
325 kPrefPageOrdinal, 354 kPrefPageOrdinal,
326 Value::CreateStringValue(new_page_ordinal.ToString())); 355 new_value);
327 } 356 }
328 357
329 void ExtensionSorting::ClearOrdinals(const std::string& extension_id) { 358 void ExtensionSorting::ClearOrdinals(const std::string& extension_id) {
330 RemoveOrdinalMapping(extension_id, 359 RemoveOrdinalMapping(extension_id,
331 GetPageOrdinal(extension_id), 360 GetPageOrdinal(extension_id),
332 GetAppLaunchOrdinal(extension_id)); 361 GetAppLaunchOrdinal(extension_id));
333 362
334 extension_scoped_prefs_->UpdateExtensionPref( 363 extension_scoped_prefs_->UpdateExtensionPref(
335 extension_id, kPrefPageOrdinal, NULL); 364 extension_id, kPrefPageOrdinal, NULL);
336 extension_scoped_prefs_->UpdateExtensionPref( 365 extension_scoped_prefs_->UpdateExtensionPref(
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 477
449 for (AppLaunchOrdinalMap::iterator it = 478 for (AppLaunchOrdinalMap::iterator it =
450 page_map->second.find(app_launch_ordinal); 479 page_map->second.find(app_launch_ordinal);
451 it != page_map->second.end(); ++it) { 480 it != page_map->second.end(); ++it) {
452 if (it->second == extension_id) { 481 if (it->second == extension_id) {
453 page_map->second.erase(it); 482 page_map->second.erase(it);
454 break; 483 break;
455 } 484 }
456 } 485 }
457 } 486 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698