| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/extensions/settings/settings_sync_util.h" | |
| 6 | |
| 7 #include "base/json/json_writer.h" | |
| 8 #include "base/values.h" | |
| 9 #include "sync/protocol/app_setting_specifics.pb.h" | |
| 10 #include "sync/protocol/extension_setting_specifics.pb.h" | |
| 11 #include "sync/protocol/sync.pb.h" | |
| 12 | |
| 13 namespace extensions { | |
| 14 | |
| 15 namespace settings_sync_util { | |
| 16 | |
| 17 namespace { | |
| 18 | |
| 19 void PopulateExtensionSettingSpecifics( | |
| 20 const std::string& extension_id, | |
| 21 const std::string& key, | |
| 22 const Value& value, | |
| 23 sync_pb::ExtensionSettingSpecifics* specifics) { | |
| 24 specifics->set_extension_id(extension_id); | |
| 25 specifics->set_key(key); | |
| 26 { | |
| 27 std::string value_as_json; | |
| 28 base::JSONWriter::Write(&value, &value_as_json); | |
| 29 specifics->set_value(value_as_json); | |
| 30 } | |
| 31 } | |
| 32 | |
| 33 void PopulateAppSettingSpecifics( | |
| 34 const std::string& extension_id, | |
| 35 const std::string& key, | |
| 36 const Value& value, | |
| 37 sync_pb::AppSettingSpecifics* specifics) { | |
| 38 PopulateExtensionSettingSpecifics( | |
| 39 extension_id, key, value, specifics->mutable_extension_setting()); | |
| 40 } | |
| 41 | |
| 42 } // namespace | |
| 43 | |
| 44 syncer::SyncData CreateData( | |
| 45 const std::string& extension_id, | |
| 46 const std::string& key, | |
| 47 const Value& value, | |
| 48 syncer::ModelType type) { | |
| 49 sync_pb::EntitySpecifics specifics; | |
| 50 switch (type) { | |
| 51 case syncer::EXTENSION_SETTINGS: | |
| 52 PopulateExtensionSettingSpecifics( | |
| 53 extension_id, | |
| 54 key, | |
| 55 value, | |
| 56 specifics.mutable_extension_setting()); | |
| 57 break; | |
| 58 | |
| 59 case syncer::APP_SETTINGS: | |
| 60 PopulateAppSettingSpecifics( | |
| 61 extension_id, | |
| 62 key, | |
| 63 value, | |
| 64 specifics.mutable_app_setting()); | |
| 65 break; | |
| 66 | |
| 67 default: | |
| 68 NOTREACHED(); | |
| 69 } | |
| 70 | |
| 71 return syncer::SyncData::CreateLocalData( | |
| 72 extension_id + "/" + key, key, specifics); | |
| 73 } | |
| 74 | |
| 75 syncer::SyncChange CreateAdd( | |
| 76 const std::string& extension_id, | |
| 77 const std::string& key, | |
| 78 const Value& value, | |
| 79 syncer::ModelType type) { | |
| 80 return syncer::SyncChange( | |
| 81 FROM_HERE, | |
| 82 syncer::SyncChange::ACTION_ADD, | |
| 83 CreateData(extension_id, key, value, type)); | |
| 84 } | |
| 85 | |
| 86 syncer::SyncChange CreateUpdate( | |
| 87 const std::string& extension_id, | |
| 88 const std::string& key, | |
| 89 const Value& value, | |
| 90 syncer::ModelType type) { | |
| 91 return syncer::SyncChange( | |
| 92 FROM_HERE, | |
| 93 syncer::SyncChange::ACTION_UPDATE, | |
| 94 CreateData(extension_id, key, value, type)); | |
| 95 } | |
| 96 | |
| 97 syncer::SyncChange CreateDelete( | |
| 98 const std::string& extension_id, | |
| 99 const std::string& key, | |
| 100 syncer::ModelType type) { | |
| 101 DictionaryValue no_value; | |
| 102 return syncer::SyncChange( | |
| 103 FROM_HERE, | |
| 104 syncer::SyncChange::ACTION_DELETE, | |
| 105 CreateData(extension_id, key, no_value, type)); | |
| 106 } | |
| 107 | |
| 108 } // namespace settings_sync_util | |
| 109 | |
| 110 } // namespace extensions | |
| OLD | NEW |