Index: chrome/browser/extensions/extension_sync_data.cc |
=================================================================== |
--- chrome/browser/extensions/extension_sync_data.cc (revision 107300) |
+++ chrome/browser/extensions/extension_sync_data.cc (working copy) |
@@ -13,14 +13,18 @@ |
: uninstalled_(false), |
enabled_(false), |
incognito_enabled_(false), |
- type_(Extension::SYNC_TYPE_NONE) { |
+ type_(Extension::SYNC_TYPE_NONE), |
+ notifications_initial_setup_done_(false), |
+ notifications_disabled_(false) { |
} |
ExtensionSyncData::ExtensionSyncData(const SyncData& sync_data) |
: uninstalled_(false), |
enabled_(false), |
incognito_enabled_(false), |
- type_(Extension::SYNC_TYPE_NONE) { |
+ type_(Extension::SYNC_TYPE_NONE), |
+ notifications_initial_setup_done_(false), |
+ notifications_disabled_(false) { |
PopulateFromSyncData(sync_data); |
} |
@@ -31,7 +35,9 @@ |
ExtensionSyncData::ExtensionSyncData(const Extension& extension, |
bool enabled, |
- bool incognito_enabled) |
+ bool incognito_enabled, |
+ bool notifications_initial_setup_done, |
+ bool notifications_disabled) |
: id_(extension.id()), |
uninstalled_(false), |
enabled_(enabled), |
@@ -39,11 +45,23 @@ |
type_(extension.GetSyncType()), |
version_(*extension.version()), |
update_url_(extension.update_url()), |
- name_(extension.name()) { |
+ name_(extension.name()), |
+ notifications_initial_setup_done_(notifications_initial_setup_done), |
+ notifications_disabled_(notifications_disabled) { |
} |
ExtensionSyncData::~ExtensionSyncData() {} |
+void ExtensionSyncData::PopulateAppSpecifics( |
+ sync_pb::AppSpecifics* specifics) const { |
+ DCHECK(specifics); |
+ sync_pb::AppNotificationSettings* notif_settings = |
+ specifics->mutable_notification_settings(); |
+ notif_settings->set_initial_setup_done(notifications_initial_setup_done_); |
+ notif_settings->set_disabled(notifications_disabled_); |
+ PopulateSyncSpecifics(specifics->mutable_extension()); |
+} |
+ |
void ExtensionSyncData::PopulateSyncSpecifics( |
sync_pb::ExtensionSpecifics* specifics) const { |
DCHECK(Extension::IdIsValid(id_)); |
@@ -57,22 +75,18 @@ |
SyncData ExtensionSyncData::GetSyncData() const { |
sync_pb::EntitySpecifics specifics; |
- sync_pb::ExtensionSpecifics* extension_specifics = NULL; |
switch (type_) { |
case Extension::SYNC_TYPE_EXTENSION: |
- extension_specifics = specifics.MutableExtension(sync_pb::extension); |
+ PopulateSyncSpecifics(specifics.MutableExtension(sync_pb::extension)); |
break; |
case Extension::SYNC_TYPE_APP: |
- extension_specifics = |
- specifics.MutableExtension(sync_pb::app)->mutable_extension(); |
+ PopulateAppSpecifics(specifics.MutableExtension(sync_pb::app)); |
break; |
default: |
LOG(FATAL) << "Attempt to get non-syncable data."; |
} |
- PopulateSyncSpecifics(extension_specifics); |
- |
return SyncData::CreateLocalData(id_, name_, specifics); |
} |
@@ -112,9 +126,18 @@ |
extension_expecifics = entity_specifics.GetExtension(sync_pb::extension); |
type_ = Extension::SYNC_TYPE_EXTENSION; |
} else if (entity_specifics.HasExtension(sync_pb::app)) { |
- extension_expecifics = |
- entity_specifics.GetExtension(sync_pb::app).extension(); |
+ sync_pb::AppSpecifics app_specifics = entity_specifics.GetExtension( |
+ sync_pb::app); |
+ extension_expecifics = app_specifics.extension(); |
type_ = Extension::SYNC_TYPE_APP; |
+ notifications_initial_setup_done_ = |
+ app_specifics.has_notification_settings() && |
+ app_specifics.notification_settings().has_initial_setup_done() && |
+ app_specifics.notification_settings().initial_setup_done(); |
+ 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."; |
} |