Index: chrome/browser/extensions/settings/settings_sync_util.cc |
diff --git a/chrome/browser/extensions/settings/settings_sync_util.cc b/chrome/browser/extensions/settings/settings_sync_util.cc |
index 07ca7a69463aa151419f57e37a2d7054d132fec3..18576159ba38baac05782d69521371507919b436 100644 |
--- a/chrome/browser/extensions/settings/settings_sync_util.cc |
+++ b/chrome/browser/extensions/settings/settings_sync_util.cc |
@@ -6,48 +6,96 @@ |
#include "base/values.h" |
#include "base/json/json_writer.h" |
+#include "chrome/browser/sync/protocol/app_setting_specifics.pb.h" |
#include "chrome/browser/sync/protocol/extension_setting_specifics.pb.h" |
namespace extensions { |
namespace settings_sync_util { |
+namespace { |
+ |
+void PopulateExtensionSettingSpecifics( |
+ const std::string& extension_id, |
+ const std::string& key, |
+ const Value& value, |
+ sync_pb::ExtensionSettingSpecifics* specifics) { |
+ specifics->set_extension_id(extension_id); |
+ specifics->set_key(key); |
+ { |
+ std::string value_as_json; |
+ base::JSONWriter::Write(&value, false, &value_as_json); |
+ specifics->set_value(value_as_json); |
+ } |
+} |
+ |
+void PopulateAppSettingSpecifics( |
+ const std::string& extension_id, |
+ const std::string& key, |
+ const Value& value, |
+ sync_pb::AppSettingSpecifics* specifics) { |
+ PopulateExtensionSettingSpecifics( |
+ extension_id, key, value, specifics->mutable_extension_setting()); |
+} |
+ |
+} // namespace |
+ |
SyncData CreateData( |
const std::string& extension_id, |
const std::string& key, |
- const Value& value) { |
+ const Value& value, |
+ syncable::ModelType type) { |
sync_pb::EntitySpecifics specifics; |
- sync_pb::ExtensionSettingSpecifics* setting_specifics = |
- specifics.MutableExtension(sync_pb::extension_setting); |
- setting_specifics->set_extension_id(extension_id); |
- setting_specifics->set_key(key); |
- std::string value_as_json; |
- base::JSONWriter::Write(&value, false, &value_as_json); |
- setting_specifics->set_value(value_as_json); |
+ |
+ switch (type) { |
+ case syncable::EXTENSION_SETTINGS: |
+ PopulateExtensionSettingSpecifics( |
+ extension_id, |
+ key, |
+ value, |
+ specifics.MutableExtension(sync_pb::extension_setting)); |
+ break; |
+ |
+ case syncable::APP_SETTINGS: |
+ PopulateAppSettingSpecifics( |
+ extension_id, |
+ key, |
+ value, |
+ specifics.MutableExtension(sync_pb::app_setting)); |
+ break; |
+ |
+ default: |
+ NOTREACHED(); |
+ } |
+ |
return SyncData::CreateLocalData(extension_id + "/" + key, key, specifics); |
} |
SyncChange CreateAdd( |
const std::string& extension_id, |
const std::string& key, |
- const Value& value) { |
+ const Value& value, |
+ syncable::ModelType type) { |
return SyncChange( |
- SyncChange::ACTION_ADD, CreateData(extension_id, key, value)); |
+ SyncChange::ACTION_ADD, CreateData(extension_id, key, value, type)); |
} |
SyncChange CreateUpdate( |
const std::string& extension_id, |
const std::string& key, |
- const Value& value) { |
+ const Value& value, |
+ syncable::ModelType type) { |
return SyncChange( |
- SyncChange::ACTION_UPDATE, CreateData(extension_id, key, value)); |
+ SyncChange::ACTION_UPDATE, CreateData(extension_id, key, value, type)); |
} |
SyncChange CreateDelete( |
- const std::string& extension_id, const std::string& key) { |
+ const std::string& extension_id, |
+ const std::string& key, |
+ syncable::ModelType type) { |
DictionaryValue no_value; |
return SyncChange( |
- SyncChange::ACTION_DELETE, CreateData(extension_id, key, no_value)); |
+ SyncChange::ACTION_DELETE, CreateData(extension_id, key, no_value, type)); |
} |
} // namespace settings_sync_util |