summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
diff options
context:
space:
mode:
authorcsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-12 20:08:23 +0000
committercsharp@chromium.org <csharp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-12 20:08:23 +0000
commit3569b5016fc94e8ca85060a7e4d7f6ca6ad0b1b5 (patch)
tree21832bdad689f5b74110515929cfec1845eaabe6 /chrome/browser/ui/webui/ntp/app_launcher_handler.cc
parent5d98aa9e354cc1607caabe1e6be49baeb36c6e54 (diff)
downloadchromium_src-3569b5016fc94e8ca85060a7e4d7f6ca6ad0b1b5.zip
chromium_src-3569b5016fc94e8ca85060a7e4d7f6ca6ad0b1b5.tar.gz
chromium_src-3569b5016fc94e8ca85060a7e4d7f6ca6ad0b1b5.tar.bz2
Moving Ordinal Specific Code out of ExtensionPrefs
Moved all of the ordinal specific code in ExtensionPrefs to a new class ExtensionSorting, also moved the related unit tests to an ExtensionSorting unit test file. There are no logic changes in this patch. BUG=104973 TEST=The icons on the NTP should behave the same as before, with users able to move them around and remember position. Review URL: http://codereview.chromium.org/9021034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@117490 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/webui/ntp/app_launcher_handler.cc')
-rw-r--r--chrome/browser/ui/webui/ntp/app_launcher_handler.cc43
1 files changed, 26 insertions, 17 deletions
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
index ae106c1..5f3684b 100644
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -22,6 +22,7 @@
#include "chrome/browser/extensions/crx_installer.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/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/profiles/profile.h"
@@ -156,7 +157,6 @@ void AppLauncherHandler::CreateAppInfo(const Extension* extension,
extension->id() == extension_misc::kWebStoreAppId);
if (extension->HasAPIPermission(ExtensionAPIPermission::kAppNotifications)) {
- ExtensionPrefs* prefs = service->extension_prefs();
value->SetBoolean("notifications_disabled",
prefs->IsAppNotificationDisabled(extension->id()));
}
@@ -164,30 +164,33 @@ void AppLauncherHandler::CreateAppInfo(const Extension* extension,
if (notification)
value->Set("notification", SerializeNotification(*notification));
- StringOrdinal page_ordinal = prefs->GetPageOrdinal(extension->id());
+ ExtensionSorting* sorting = prefs->extension_sorting();
+ StringOrdinal page_ordinal = sorting->GetPageOrdinal(extension->id());
if (!page_ordinal.IsValid()) {
// Make sure every app has a page ordinal (some predate the page ordinal).
// The webstore app should be on the first page.
page_ordinal = extension->id() == extension_misc::kWebStoreAppId ?
- prefs->CreateFirstAppPageOrdinal() : prefs->GetNaturalAppPageOrdinal();
- prefs->SetPageOrdinal(extension->id(), page_ordinal);
+ sorting->CreateFirstAppPageOrdinal() :
+ sorting->GetNaturalAppPageOrdinal();
+ sorting->SetPageOrdinal(extension->id(), page_ordinal);
}
// We convert the page_ordinal to an integer because the pages are referenced
// from within an array in the javascript code, which can't be easily
// changed to handle the StringOrdinal values, so we do the conversion here.
- int page_index = prefs->PageStringOrdinalAsInteger(page_ordinal);
+ int page_index =
+ sorting->PageStringOrdinalAsInteger(page_ordinal);
value->SetInteger("page_index", page_index >= 0 ? page_index : 0);
StringOrdinal app_launch_ordinal =
- prefs->GetAppLaunchOrdinal(extension->id());
+ sorting->GetAppLaunchOrdinal(extension->id());
if (!app_launch_ordinal.IsValid()) {
// Make sure every app has a launch ordinal (some predate the launch
// ordinal). The webstore's app launch ordinal is always set to the first
// position.
app_launch_ordinal = extension->id() == extension_misc::kWebStoreAppId ?
- prefs->CreateFirstAppLaunchOrdinal(page_ordinal) :
- prefs->CreateNextAppLaunchOrdinal(page_ordinal);
- prefs->SetAppLaunchOrdinal(extension->id(), app_launch_ordinal);
+ sorting->CreateFirstAppLaunchOrdinal(page_ordinal) :
+ sorting->CreateNextAppLaunchOrdinal(page_ordinal);
+ sorting->SetAppLaunchOrdinal(extension->id(), app_launch_ordinal);
}
value->SetString("app_launch_ordinal", app_launch_ordinal.ToString());
}
@@ -354,9 +357,10 @@ void AppLauncherHandler::FillAppDictionary(DictionaryValue* dictionary) {
// page index for non-app extensions. Old profiles can persist this error,
// and this fixes it. This caused GetNaturalAppPageIndex() to break
// (see http://crbug.com/98325) before it was an ordinal value.
- ExtensionPrefs* prefs = extension_service_->extension_prefs();
- if (prefs->GetPageOrdinal(extension->id()).IsValid())
- prefs->ClearPageOrdinal(extension->id());
+ ExtensionSorting* sortings =
+ extension_service_->extension_prefs()->extension_sorting();
+ if (sortings->GetPageOrdinal(extension->id()).IsValid())
+ sortings->ClearPageOrdinal(extension->id());
}
}
@@ -491,7 +495,8 @@ void AppLauncherHandler::HandleGetApps(const ListValue* args) {
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
content::Source<Profile>(profile));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED,
- content::Source<ExtensionPrefs>(extension_service_->extension_prefs()));
+ content::Source<ExtensionSorting>(
+ extension_service_->extension_prefs()->extension_sorting()));
registrar_.Add(this, chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED,
content::Source<Profile>(profile));
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR,
@@ -676,18 +681,20 @@ void AppLauncherHandler::HandleReorderApps(const ListValue* args) {
}
void AppLauncherHandler::HandleSetPageIndex(const ListValue* args) {
+ ExtensionSorting* extension_sorting =
+ extension_service_->extension_prefs()->extension_sorting();
+
std::string extension_id;
double page_index;
CHECK(args->GetString(0, &extension_id));
CHECK(args->GetDouble(1, &page_index));
const StringOrdinal& page_ordinal =
- extension_service_->extension_prefs()->PageIntegerAsStringOrdinal(
+ extension_sorting->PageIntegerAsStringOrdinal(
static_cast<size_t>(page_index));
// Don't update the page; it already knows the apps have been reordered.
AutoReset<bool> auto_reset(&ignore_changes_, true);
- extension_service_->extension_prefs()->SetPageOrdinal(extension_id,
- page_ordinal);
+ extension_sorting->SetPageOrdinal(extension_id, page_ordinal);
}
void AppLauncherHandler::HandlePromoSeen(const ListValue* args) {
@@ -720,8 +727,10 @@ void AppLauncherHandler::HandleGenerateAppForLink(const ListValue* args) {
double page_index;
CHECK(args->GetDouble(2, &page_index));
+ ExtensionSorting* extension_sorting =
+ extension_service_->extension_prefs()->extension_sorting();
const StringOrdinal& page_ordinal =
- extension_service_->extension_prefs()->PageIntegerAsStringOrdinal(
+ extension_sorting->PageIntegerAsStringOrdinal(
static_cast<size_t>(page_index));
Profile* profile = Profile::FromWebUI(web_ui());