Chromium Code Reviews| Index: chrome/browser/ui/app_list/extension_app_item.cc |
| diff --git a/chrome/browser/ui/app_list/extension_app_item.cc b/chrome/browser/ui/app_list/extension_app_item.cc |
| index 97912f148fd6ac4464f7929c45ba3711ae297106..bc89f1e4f594d35bd9c53f1a9600e7ba9ff6e7ba 100644 |
| --- a/chrome/browser/ui/app_list/extension_app_item.cc |
| +++ b/chrome/browser/ui/app_list/extension_app_item.cc |
| @@ -7,11 +7,11 @@ |
| #include "base/prefs/pref_service.h" |
| #include "chrome/browser/extensions/extension_prefs.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| -#include "chrome/browser/extensions/extension_sorting.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/app_list/app_context_menu.h" |
| #include "chrome/browser/ui/app_list/app_list_controller_delegate.h" |
| +#include "chrome/browser/ui/app_list/app_list_extension_sorting.h" |
| #include "chrome/browser/ui/extensions/extension_enable_flow.h" |
| #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" |
| #include "chrome/common/extensions/extension.h" |
| @@ -55,10 +55,10 @@ class ShortcutOverlayImageSource : public gfx::CanvasImageSource { |
| DISALLOW_COPY_AND_ASSIGN(ShortcutOverlayImageSource); |
| }; |
| -ExtensionSorting* GetExtensionSorting(Profile* profile) { |
| +AppListExtensionSorting* GetExtensionSorting(Profile* profile) { |
|
xiyuan
2013/07/05 06:06:18
nit: Update function name. Either make it "GetSort
calamity
2013/07/11 03:31:00
Done.
|
| ExtensionService* service = |
| extensions::ExtensionSystem::Get(profile)->extension_service(); |
| - return service->extension_prefs()->extension_sorting(); |
| + return service->extension_prefs()->app_list_extension_sorting(); |
| } |
| const color_utils::HSL shift = {-1, 0, 0.6}; |
| @@ -81,8 +81,9 @@ ExtensionAppItem::ExtensionAppItem(Profile* profile, |
| shift)), |
| is_platform_app_(is_platform_app) { |
| Reload(); |
| - GetExtensionSorting(profile_)->EnsureValidOrdinals(extension_id_, |
| - syncer::StringOrdinal()); |
| + AppListExtensionSorting* ordering = GetExtensionSorting(profile_); |
| + if (!ordering->Contains(extension_id_)) |
| + ordering->InsertAtBack(extension_id_); |
| } |
| ExtensionAppItem::~ExtensionAppItem() { |
| @@ -96,6 +97,11 @@ bool ExtensionAppItem::HasOverlay() const { |
| #endif |
| } |
| +bool ExtensionAppItem::Precedes(const ExtensionAppItem* item) const { |
| + return GetExtensionSorting(profile_)->ExtensionPrecedes( |
| + extension_id(), item->extension_id()); |
| +} |
| + |
| void ExtensionAppItem::Reload() { |
| const Extension* extension = GetExtension(); |
| bool is_installing = !extension; |
| @@ -110,14 +116,6 @@ void ExtensionAppItem::Reload() { |
| LoadImage(extension); |
| } |
| -syncer::StringOrdinal ExtensionAppItem::GetPageOrdinal() const { |
| - return GetExtensionSorting(profile_)->GetPageOrdinal(extension_id_); |
| -} |
| - |
| -syncer::StringOrdinal ExtensionAppItem::GetAppLaunchOrdinal() const { |
| - return GetExtensionSorting(profile_)->GetAppLaunchOrdinal(extension_id_); |
| -} |
| - |
| void ExtensionAppItem::Move(const ExtensionAppItem* prev, |
| const ExtensionAppItem* next) { |
| // Does nothing if no predecessor nor successor. |
| @@ -127,36 +125,13 @@ void ExtensionAppItem::Move(const ExtensionAppItem* prev, |
| ExtensionService* service = |
| extensions::ExtensionSystem::Get(profile_)->extension_service(); |
| service->extension_prefs()->SetAppDraggedByUser(extension_id_); |
| + AppListExtensionSorting* ordering = GetExtensionSorting(profile_); |
| // Handles only predecessor or only successor case. |
| - if (!prev || !next) { |
| - syncer::StringOrdinal page = prev ? prev->GetPageOrdinal() : |
| - next->GetPageOrdinal(); |
| - GetExtensionSorting(profile_)->SetPageOrdinal(extension_id_, page); |
| - service->OnExtensionMoved(extension_id_, |
| - prev ? prev->extension_id() : std::string(), |
| - next ? next->extension_id() : std::string()); |
| - return; |
| - } |
| - |
| - // Handles both predecessor and successor are on the same page. |
| - syncer::StringOrdinal prev_page = prev->GetPageOrdinal(); |
| - syncer::StringOrdinal next_page = next->GetPageOrdinal(); |
| - if (prev_page.Equals(next_page)) { |
| - GetExtensionSorting(profile_)->SetPageOrdinal(extension_id_, prev_page); |
| - service->OnExtensionMoved(extension_id_, |
| - prev->extension_id(), |
| - next->extension_id()); |
| - return; |
| - } |
| - |
| - // Otherwise, go with |next|. This is okay because app list does not split |
| - // page based ntp page ordinal. |
| - // TODO(xiyuan): Revisit this when implementing paging support. |
| - GetExtensionSorting(profile_)->SetPageOrdinal(extension_id_, prev_page); |
| - service->OnExtensionMoved(extension_id_, |
| - prev->extension_id(), |
| - std::string()); |
| + GetExtensionSorting(profile_)->OnExtensionMoved( |
| + extension_id_, |
| + prev ? prev->extension_id() : std::string(), |
| + next ? next->extension_id() : std::string()); |
| } |
| void ExtensionAppItem::UpdateIcon() { |