Use Sync to store application icon positions on NTP.
Begins storing the ordinal values of icons on the NTP to the sync server. This change only adds values to the sync data, the changes are not loaded by the profiles yet.
BUG=61447
TEST=Extension and Apps should still sync without problems. There should be no change in the user experience.
Review URL: http://codereview.chromium.org/8114013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115140 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_sync_data.cc b/chrome/browser/extensions/extension_sync_data.cc
index 2bd1bfc..f3bb6c8 100644
--- a/chrome/browser/extensions/extension_sync_data.cc
+++ b/chrome/browser/extensions/extension_sync_data.cc
@@ -39,7 +39,9 @@
bool enabled,
bool incognito_enabled,
const std::string& notifications_client_id,
- bool notifications_disabled)
+ bool notifications_disabled,
+ const StringOrdinal& app_launch_ordinal,
+ const StringOrdinal& page_ordinal)
: id_(extension.id()),
uninstalled_(false),
enabled_(enabled),
@@ -49,7 +51,9 @@
update_url_(extension.update_url()),
name_(extension.name()),
notifications_client_id_(notifications_client_id),
- notifications_disabled_(notifications_disabled) {
+ notifications_disabled_(notifications_disabled),
+ app_launch_ordinal_(app_launch_ordinal),
+ page_ordinal_(page_ordinal) {
}
ExtensionSyncData::~ExtensionSyncData() {}
@@ -62,10 +66,17 @@
if (!notifications_client_id_.empty())
notif_settings->set_oauth_client_id(notifications_client_id_);
notif_settings->set_disabled(notifications_disabled_);
- PopulateSyncSpecifics(specifics->mutable_extension());
+
+ // Only sync the ordinal values if they are valid.
+ if (app_launch_ordinal_.IsValid())
+ specifics->set_app_launch_ordinal(app_launch_ordinal_.ToString());
+ if (page_ordinal_.IsValid())
+ specifics->set_page_ordinal(page_ordinal_.ToString());
+
+ PopulateExtensionSpecifics(specifics->mutable_extension());
}
-void ExtensionSyncData::PopulateSyncSpecifics(
+void ExtensionSyncData::PopulateExtensionSpecifics(
sync_pb::ExtensionSpecifics* specifics) const {
DCHECK(Extension::IdIsValid(id_));
specifics->set_id(id_);
@@ -81,7 +92,8 @@
switch (type_) {
case Extension::SYNC_TYPE_EXTENSION:
- PopulateSyncSpecifics(specifics.MutableExtension(sync_pb::extension));
+ PopulateExtensionSpecifics(specifics.MutableExtension(
+ sync_pb::extension));
break;
case Extension::SYNC_TYPE_APP:
PopulateAppSpecifics(specifics.MutableExtension(sync_pb::app));
@@ -98,6 +110,25 @@
return SyncChange(change_type, GetSyncData());
}
+void ExtensionSyncData::PopulateFromAppSpecifics(
+ const sync_pb::AppSpecifics& specifics) {
+ PopulateFromExtensionSpecifics(specifics.extension());
+
+ if (specifics.has_notification_settings() &&
+ specifics.notification_settings().has_oauth_client_id()) {
+ notifications_client_id_ =
+ specifics.notification_settings().oauth_client_id();
+ }
+
+ notifications_disabled_ =
+ specifics.has_notification_settings() &&
+ specifics.notification_settings().has_disabled() &&
+ specifics.notification_settings().disabled();
+
+ app_launch_ordinal_ = StringOrdinal(specifics.app_launch_ordinal());
+ page_ordinal_ = StringOrdinal(specifics.page_ordinal());
+}
+
void ExtensionSyncData::PopulateFromExtensionSpecifics(
const sync_pb::ExtensionSpecifics& specifics) {
if (!Extension::IdIsValid(specifics.id())) {
@@ -124,27 +155,16 @@
void ExtensionSyncData::PopulateFromSyncData(const SyncData& sync_data) {
const sync_pb::EntitySpecifics& entity_specifics = sync_data.GetSpecifics();
- sync_pb::ExtensionSpecifics extension_expecifics;
+
if (entity_specifics.HasExtension(sync_pb::extension)) {
- extension_expecifics = entity_specifics.GetExtension(sync_pb::extension);
+ PopulateFromExtensionSpecifics(
+ entity_specifics.GetExtension(sync_pb::extension));
type_ = Extension::SYNC_TYPE_EXTENSION;
} else if (entity_specifics.HasExtension(sync_pb::app)) {
- sync_pb::AppSpecifics app_specifics = entity_specifics.GetExtension(
- sync_pb::app);
- extension_expecifics = app_specifics.extension();
+ PopulateFromAppSpecifics(
+ entity_specifics.GetExtension(sync_pb::app));
type_ = Extension::SYNC_TYPE_APP;
- if (app_specifics.has_notification_settings() &&
- app_specifics.notification_settings().has_oauth_client_id()) {
- notifications_client_id_ =
- app_specifics.notification_settings().oauth_client_id();
- }
-
- notifications_disabled_ =
- app_specifics.has_notification_settings() &&
- app_specifics.notification_settings().has_disabled() &&
- app_specifics.notification_settings().disabled();
} else {
LOG(FATAL) << "Attempt to sync bad EntitySpecifics.";
}
- PopulateFromExtensionSpecifics(extension_expecifics);
}