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

Unified Diff: chrome/browser/extensions/settings/setting_sync_data.cc

Issue 9427001: Extend TwoClientExtensionSettingsSyncTest to test app settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/settings/setting_sync_data.cc
diff --git a/chrome/browser/extensions/settings/setting_sync_data.cc b/chrome/browser/extensions/settings/setting_sync_data.cc
index 68e62876b1709e1078de07fef5376762c6a3a0b3..42a2e40975d8ab0ee4b71f95c37b65acc0e90ea9 100644
--- a/chrome/browser/extensions/settings/setting_sync_data.cc
+++ b/chrome/browser/extensions/settings/setting_sync_data.cc
@@ -7,7 +7,9 @@
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "chrome/browser/sync/api/sync_data.h"
+#include "chrome/browser/sync/protocol/app_setting_specifics.pb.h"
#include "chrome/browser/sync/protocol/extension_setting_specifics.pb.h"
+#include "chrome/browser/sync/protocol/sync.pb.h"
namespace extensions {
@@ -24,30 +26,46 @@ SettingSyncData::SettingSyncData(
void SettingSyncData::Init(
SyncChange::SyncChangeType change_type, const SyncData& sync_data) {
DCHECK(!internal_.get());
- sync_pb::ExtensionSettingSpecifics specifics =
- sync_data.GetSpecifics().GetExtension(sync_pb::extension_setting);
- Value* value =
- base::JSONReader().JsonToValue(specifics.value(), false, false);
- if (!value) {
+ sync_pb::EntitySpecifics specifics = sync_data.GetSpecifics();
+ // The data can only be either extension or app specfics. Assert this in
akalin 2012/02/27 23:42:10 can only be either -> must be either specfics -> s
not at google - send to devlin 2012/02/27 23:45:46 Done.
+ // debug mode.
+ DCHECK_NE(specifics.HasExtension(sync_pb::extension_setting),
+ specifics.HasExtension(sync_pb::app_setting));
+ if (specifics.HasExtension(sync_pb::extension_setting)) {
+ InitFromExtensionSettingSpecifics(
+ change_type,
+ specifics.GetExtension(sync_pb::extension_setting));
+ } else if (specifics.HasExtension(sync_pb::app_setting)) {
+ InitFromExtensionSettingSpecifics(
+ change_type,
+ specifics.GetExtension(sync_pb::app_setting).extension_setting());
+ }
+}
+
+void SettingSyncData::InitFromExtensionSettingSpecifics(
+ SyncChange::SyncChangeType change_type,
+ const sync_pb::ExtensionSettingSpecifics& specifics) {
+ DCHECK(!internal_.get());
+ scoped_ptr<Value> value(
+ base::JSONReader().JsonToValue(specifics.value(), false, false));
+ if (!value.get()) {
LOG(WARNING) << "Specifics for " << specifics.extension_id() << "/" <<
specifics.key() << " had bad JSON for value: " << specifics.value();
- value = new DictionaryValue();
+ value.reset(new DictionaryValue());
}
internal_ = new Internal(
change_type,
specifics.extension_id(),
specifics.key(),
- value);
+ value.Pass());
}
SettingSyncData::SettingSyncData(
SyncChange::SyncChangeType change_type,
const std::string& extension_id,
const std::string& key,
- Value* value)
- : internal_(new Internal(change_type, extension_id, key, value)) {
- CHECK(value);
-}
+ scoped_ptr<Value> value)
+ : internal_(new Internal(change_type, extension_id, key, value.Pass())) {}
SettingSyncData::~SettingSyncData() {}
@@ -71,11 +89,13 @@ SettingSyncData::Internal::Internal(
SyncChange::SyncChangeType change_type,
const std::string& extension_id,
const std::string& key,
- Value* value)
+ scoped_ptr<Value> value)
: change_type_(change_type),
extension_id_(extension_id),
key_(key),
- value_(value) {}
+ value_(value.Pass()) {
+ DCHECK(value_.get());
+}
SettingSyncData::Internal::~Internal() {}

Powered by Google App Engine
This is Rietveld 408576698