proto_value_conversions.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
1f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// Use of this source code is governed by a BSD-style license that can be 3f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// found in the LICENSE file. 4f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 5f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// Keep this file in sync with the .proto files in this directory. 6f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 7f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/proto_value_conversions.h" 8f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 9f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include <string> 10f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 11f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "base/base64.h" 12f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "base/basictypes.h" 13f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "base/logging.h" 14f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "base/strings/string_number_conversions.h" 15f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "base/values.h" 16f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/internal_api/public/base/unique_position.h" 17f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/app_list_specifics.pb.h" 18f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/app_notification_specifics.pb.h" 1970e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org#include "sync/protocol/app_setting_specifics.pb.h" 20f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/app_specifics.pb.h" 21f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/autofill_specifics.pb.h" 22f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/bookmark_specifics.pb.h" 23d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.org#include "sync/protocol/dictionary_specifics.pb.h" 24f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/encryption.pb.h" 25c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org#include "sync/protocol/experiments_specifics.pb.h" 26eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org#include "sync/protocol/extension_setting_specifics.pb.h" 27f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/extension_specifics.pb.h" 28e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org#include "sync/protocol/favicon_image_specifics.pb.h" 29f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/favicon_tracking_specifics.pb.h" 30f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/history_delete_directive_specifics.pb.h" 31f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/nigori_specifics.pb.h" 32f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/password_specifics.pb.h" 33f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/preference_specifics.pb.h" 34f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/priority_preference_specifics.pb.h" 35f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/proto_enum_conversions.h" 36f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/search_engine_specifics.pb.h" 37f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/session_specifics.pb.h" 38f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/sync.pb.h" 39f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/synced_notification_app_info_specifics.pb.h" 40f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/synced_notification_specifics.pb.h" 41f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/theme_specifics.pb.h" 42f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/typed_url_specifics.pb.h" 43f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#include "sync/protocol/unique_position.pb.h" 4479426b9ef9171ddbd673373e62e0142e51ee89f8kjellander@webrtc.org 4579426b9ef9171ddbd673373e62e0142e51ee89f8kjellander@webrtc.orgnamespace syncer { 4679426b9ef9171ddbd673373e62e0142e51ee89f8kjellander@webrtc.org 47f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgnamespace { 48f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 49eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org// Basic Type -> Value functions. 508ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org 51d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.orgbase::StringValue* MakeInt64Value(int64 x) { 52d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org return new base::StringValue(base::Int64ToString(x)); 533f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 543f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 55093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org// TODO(akalin): Perhaps make JSONWriter support BinaryValue and use 56093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org// that instead of a StringValue. 57093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.orgbase::StringValue* MakeBytesValue(const std::string& bytes) { 58093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org std::string bytes_base64; 59f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::Base64Encode(bytes, &bytes_base64); 60f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return new base::StringValue(bytes_base64); 61f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 62f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 63aacdb9f6eed4ceedc8db73865384e29444abcda2stefan@webrtc.orgbase::StringValue* MakeStringValue(const std::string& str) { 64eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return new base::StringValue(str); 65c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org} 66f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 67f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// T is the enum type. 68f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgtemplate <class T> 69f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::StringValue* MakeEnumValue(T t, const char* (*converter_fn)(T)) { 70f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return new base::StringValue(converter_fn(t)); 71f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 72f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 73f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// T is the field type, F is either RepeatedField or RepeatedPtrField, 74f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// and V is a subclass of Value. 75f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgtemplate <class T, class F, class V> 76d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.orgbase::ListValue* MakeRepeatedValue(const F& fields, V* (*converter_fn)(T)) { 77f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::ListValue* list = new base::ListValue(); 78f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org for (typename F::const_iterator it = fields.begin(); it != fields.end(); 79f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org ++it) { 80f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org list->Append(converter_fn(*it)); 81f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org } 82f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return list; 83f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 84f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 85f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} // namespace 86f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 87c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org// Helper macros to reduce the amount of boilerplate. 88f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 89f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET(field, fn) \ 90f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org if (proto.has_##field()) { \ 91f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, fn(proto.field())); \ 92f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org } 93d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.org#define SET_REP(field, fn) \ 94f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, MakeRepeatedValue(proto.field(), fn)) 95f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_ENUM(field, fn) \ 96f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, MakeEnumValue(proto.field(), fn)) 97f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 98f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_BOOL(field) SET(field, new base::FundamentalValue) 99f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_BYTES(field) SET(field, MakeBytesValue) 100d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.org#define SET_INT32(field) SET(field, MakeInt64Value) 101c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org#define SET_INT32_REP(field) SET_REP(field, MakeInt64Value) 102d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.org#define SET_INT64(field) SET(field, MakeInt64Value) 103f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_INT64_REP(field) SET_REP(field, MakeInt64Value) 104f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_STR(field) SET(field, new base::StringValue) 105f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_STR_REP(field) \ 106f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, \ 107f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org MakeRepeatedValue<const std::string&, \ 108f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org google::protobuf::RepeatedPtrField< \ 109f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org std::string >, \ 110f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::StringValue>(proto.field(), \ 111f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org MakeStringValue)) 112f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_EXPERIMENT_ENABLED_FIELD(field) \ 113f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org do { \ 114f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org if (proto.has_##field() && \ 115f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org proto.field().has_enabled()) { \ 116f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, \ 117f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org new base::FundamentalValue( \ 118f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org proto.field().enabled())); \ 119c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org } \ 120d2fb259b3bc61c68f368929510215a7ee7d00fdawu@webrtc.org } while (0) 121f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 122f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org#define SET_FIELD(field, fn) \ 123f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org do { \ 124f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org if (specifics.has_##field()) { \ 125f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->Set(#field, fn(specifics.field())); \ 126f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org } \ 127f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org } while (0) 128f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 129f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// If you add another macro, don't forget to add an #undef at the end 130f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org// of this file, too. 131f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 1326cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.orgbase::DictionaryValue* EncryptedDataToValue( 133aacdb9f6eed4ceedc8db73865384e29444abcda2stefan@webrtc.org const sync_pb::EncryptedData& proto) { 134f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 135f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(key_name); 136f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org // TODO(akalin): Shouldn't blob be of type bytes instead of string? 137f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BYTES(blob); 138f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 1396cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.org} 140f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 141f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* AppSettingsToValue( 142f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::AppNotificationSettings& proto) { 143f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 144f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(initial_setup_done); 145f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(disabled); 146f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(oauth_client_id); 147f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 148f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 149f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 150f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* SessionHeaderToValue( 151f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SessionHeader& proto) { 152f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 153f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_REP(window, SessionWindowToValue); 154f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(client_name); 155f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_ENUM(device_type, GetDeviceTypeString); 156f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 157f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 15870e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org 1596cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.orgbase::DictionaryValue* SessionTabToValue(const sync_pb::SessionTab& proto) { 16070e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 16170e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org SET_INT32(tab_id); 16270e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org SET_INT32(window_id); 16370e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org SET_INT32(tab_visual_index); 164f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT32(current_navigation_index); 165f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(pinned); 166f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(extension_app_id); 167f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_REP(navigation, TabNavigationToValue); 168f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BYTES(favicon); 1692a25b6c685c7d6323a8fdaf514a7b36f4f2d827dpbos@webrtc.org SET_ENUM(favicon_type, GetFaviconTypeString); 170f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(favicon_source); 171f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 172f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 1736cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.org 174f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* SessionWindowToValue( 175f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SessionWindow& proto) { 176f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 177f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT32(window_id); 178f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT32(selected_tab_index); 179f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT32_REP(tab); 180f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_ENUM(browser_type, GetBrowserTypeString); 181f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 182f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 183f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 184f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* TabNavigationToValue( 185c476e64d056c5e342bc5b23eecd493abf6d85d7fpbos@webrtc.org const sync_pb::TabNavigation& proto) { 186f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 187f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(virtual_url); 188f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(referrer); 189f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(title); 190f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(state); 191f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_ENUM(page_transition, GetPageTransitionString); 192f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_ENUM(redirect_type, GetPageTransitionRedirectTypeString); 193d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET_INT32(unique_id); 194eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(timestamp_msec); 195eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(navigation_forward_back); 196eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(navigation_from_address_bar); 197eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(navigation_home_page); 198eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(navigation_chain_start); 199eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(navigation_chain_end); 200eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(global_id); 201eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(search_terms); 202eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(favicon_url); 203eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_ENUM(blocked_state, GetBlockedStateString); 204eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR_REP(content_pack_categories); 205eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(http_status_code); 206eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(referrer_policy); 207eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(is_restored); 208eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 209eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 210eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 211eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* PasswordSpecificsDataToValue( 212eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::PasswordSpecificsData& proto) { 213eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 214eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(scheme); 215eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(signon_realm); 216eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(origin); 217eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(action); 218eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(username_element); 219f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(username_value); 220f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(password_element); 221f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org value->SetString("password_value", "<redacted>"); 222f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(ssl_valid); 223f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(preferred); 224f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT64(date_created); 225f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_BOOL(blacklisted); 226f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 227f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 228f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 229f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* GlobalIdDirectiveToValue( 2306cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.org const sync_pb::GlobalIdDirective& proto) { 231f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 232aacdb9f6eed4ceedc8db73865384e29444abcda2stefan@webrtc.org SET_INT64_REP(global_id); 233aacdb9f6eed4ceedc8db73865384e29444abcda2stefan@webrtc.org SET_INT64(start_time_usec); 234d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET_INT64(end_time_usec); 235aacdb9f6eed4ceedc8db73865384e29444abcda2stefan@webrtc.org return value; 23670e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org} 23770e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.org 23870e2ce90d527388f9829a7d084dfa3b2a525bb49henrik.lundin@webrtc.orgbase::DictionaryValue* TimeRangeDirectiveToValue( 2396cee2bafdd7b97c6b3893d67690ed2e37ada6ef1henrik.lundin@webrtc.org const sync_pb::TimeRangeDirective& proto) { 240f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 241f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT64(start_time_usec); 242f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_INT64(end_time_usec); 243eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 244eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 245f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 246f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* SyncedNotificationAppInfoToValue( 247f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SyncedNotificationAppInfo& proto) { 248eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 249f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR_REP(app_id); 250f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(settings_display_name); 251f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET(icon, SyncedNotificationImageToValue); 2520a298154b3a4781f0294d3877f77feb58e33eeb7sprang@webrtc.org // TODO(petewil): Add fields for the monochrome icon when it is available. 253f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 254f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 255f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 256eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* SyncedNotificationImageToValue( 257f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SyncedNotificationImage& proto) { 258f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 259f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(url); 260eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(alt_text); 261eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(preferred_width); 262eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(preferred_height); 263d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org return value; 264d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org} 265d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org 266d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.orgbase::DictionaryValue* SyncedNotificationProfileImageToValue( 267d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org const sync_pb::SyncedNotificationProfileImage& proto) { 268d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 269d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET_STR(image_url); 270d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET_STR(oid); 27188b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org SET_STR(display_name); 27288b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org return value; 273eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 274eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 275eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* MediaToValue( 276eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::Media& proto) { 277eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 278eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(image, SyncedNotificationImageToValue); 279f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 280f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 281f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 282f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.orgbase::DictionaryValue* SyncedNotificationActionToValue( 283f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SyncedNotificationAction& proto) { 284f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 285f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(text); 286f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET(icon, SyncedNotificationImageToValue); 287f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(url); 288f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(request_data); 289f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(accessibility_label); 290f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 291f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 292f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org 293eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* SyncedNotificationDestiationToValue( 294f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org const sync_pb::SyncedNotificationDestination& proto) { 295f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 296f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(text); 297f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET(icon, SyncedNotificationImageToValue); 298f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(url); 299f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(accessibility_label); 300f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org return value; 301f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org} 3028ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org 303eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* TargetToValue( 304093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org const sync_pb::Target& proto) { 305eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 306eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(destination, SyncedNotificationDestiationToValue); 307093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET(action, SyncedNotificationActionToValue); 308d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET_STR(target_key); 309d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org return value; 310d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org} 311d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org 312d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.orgbase::DictionaryValue* SimpleCollapsedLayoutToValue( 313d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org const sync_pb::SimpleCollapsedLayout& proto) { 314d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 315d01c49138f5c9c49c86251094f72759ee2c4705fstefan@webrtc.org SET(app_icon, SyncedNotificationImageToValue); 316eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_REP(profile_image, SyncedNotificationProfileImageToValue); 317eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(heading); 318eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(description); 319eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(annotation); 320eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_REP(media, MediaToValue); 321eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 322eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 323eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 324eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* CollapsedInfoToValue( 325eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::CollapsedInfo& proto) { 326eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 327eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(simple_collapsed_layout, SimpleCollapsedLayoutToValue); 328eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(creation_timestamp_usec); 329eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(default_destination, SyncedNotificationDestiationToValue); 330eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_REP(target, TargetToValue); 331eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 332eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 333eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 334eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* SyncedNotificationToValue( 335eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::SyncedNotification& proto) { 336093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 337eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(type); 338eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(external_id); 339eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org // TODO(petewil) Add SyncedNotificationCreator here if we ever need it. 340eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 341eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 342eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 343eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* RenderInfoToValue( 344eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::SyncedNotificationRenderInfo& proto) { 345093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 346eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org // TODO(petewil): Add the expanded info values once we start using them. 347eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(collapsed_info, CollapsedInfoToValue); 348eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 349eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 350eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 351eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* CoalescedNotificationToValue( 352093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org const sync_pb::CoalescedSyncedNotification& proto) { 353eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 354eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(key); 355eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(app_id); 356093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_REP(notification, SyncedNotificationToValue); 357eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(render_info, RenderInfoToValue); 358eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(read_state); 359eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(creation_time_msec); 360eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT32(priority); 361eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 362eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 363eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 364eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AppListSpecificsToValue( 365eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::AppListSpecifics& proto) { 366eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 367eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(item_id); 368eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_ENUM(item_type, GetAppListItemTypeString); 369eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(item_name); 370eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(parent_id); 371eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(page_ordinal); 372eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(item_ordinal); 373eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 374eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 375093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org} 376093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 377eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AppNotificationToValue( 378eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::AppNotification& proto) { 3796aae61c2c693fa3425c73c420e7046e95486b592pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 380eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(guid); 381eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(app_id); 382eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(creation_timestamp_ms); 383eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(title); 384eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(body_text); 385eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(link_url); 386eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(link_text); 387eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 388eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 389093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 390eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AppSettingSpecificsToValue( 391eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::AppSettingSpecifics& proto) { 392eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 393eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(extension_setting, ExtensionSettingSpecificsToValue); 394eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 395eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 396093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 397eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AppSpecificsToValue( 398eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::AppSpecifics& proto) { 399eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 400eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(extension, ExtensionSpecificsToValue); 401093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET(notification_settings, AppSettingsToValue); 402eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(app_launch_ordinal); 403eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(page_ordinal); 40488b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org SET_ENUM(launch_type, GetLaunchTypeString); 405eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 40688b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org return value; 407eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 40888b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org 409eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AutofillSpecificsToValue( 410093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org const sync_pb::AutofillSpecifics& proto) { 411eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 412eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(name); 413eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(value); 414eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64_REP(usage_timestamp); 415eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(profile, AutofillProfileSpecificsToValue); 416093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org return value; 417eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 418eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 419eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* AutofillProfileSpecificsToValue( 420eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::AutofillProfileSpecifics& proto) { 421eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 422eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(guid); 423eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(origin); 424eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 425eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR_REP(name_first); 426eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR_REP(name_middle); 427eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR_REP(name_last); 428eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR_REP(email_address); 429eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(company_name); 430093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 431093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_line1); 4321ef9cee4e53d42bec5761fdae0d963b163ba17aawu@webrtc.org SET_STR(address_home_line2); 433093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_city); 434093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_state); 435093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_zip); 436093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_country); 4371ef9cee4e53d42bec5761fdae0d963b163ba17aawu@webrtc.org 438093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_street_address); 439093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_sorting_code); 440093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(address_home_dependent_locality); 441093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 442093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR_REP(phone_home_whole_number); 4431cbc360c03fcad0ebed910d371530f48cb11951fwu@webrtc.org return value; 444093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org} 4451cbc360c03fcad0ebed910d371530f48cb11951fwu@webrtc.org 446093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.orgbase::DictionaryValue* MetaInfoToValue( 447093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org const sync_pb::MetaInfo& proto) { 448093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 4491cbc360c03fcad0ebed910d371530f48cb11951fwu@webrtc.org SET_STR(key); 450093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org SET_STR(value); 451093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org return value; 452093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org} 453093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.org 454093fc0b0b0b9ca4fe56a32e17c9c418382e802f0wu@webrtc.orgbase::DictionaryValue* BookmarkSpecificsToValue( 4558ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org const sync_pb::BookmarkSpecifics& proto) { 4568ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 457eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(url); 4588ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org SET_BYTES(favicon); 4598ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org SET_STR(title); 460eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(creation_time_us); 4618ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org SET_STR(icon_url); 4628ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org SET_REP(meta_info, &MetaInfoToValue); 4638ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org return value; 4648ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org} 465eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 4668ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.orgbase::DictionaryValue* DeviceInfoSpecificsToValue( 4678ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org const sync_pb::DeviceInfoSpecifics& proto) { 4688ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 4698ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org SET_STR(cache_guid); 470eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(client_name); 471eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_ENUM(device_type, GetDeviceTypeString); 472eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(sync_user_agent); 473eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(chrome_version); 474eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 475eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 476eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 477eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* DictionarySpecificsToValue( 478eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::DictionarySpecifics& proto) { 479eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 480eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(word); 4818ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org return value; 482eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 4838ef65486bf136f11d8dc9c637f94d7c08b687120asapersson@webrtc.org 4843f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgnamespace { 4853f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 4863f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* FaviconSyncFlagsToValue( 4871d61e3a79d4a5c6693c959f59d9f9cc6c1bfb359pbos@webrtc.org const sync_pb::FaviconSyncFlags& proto) { 4883f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 4893f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_BOOL(enabled); 4903f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_INT32(favicon_sync_limit); 491eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 4923f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 4933f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 494eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} // namespace 4953f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 4963f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* ExperimentsSpecificsToValue( 497eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::ExperimentsSpecifics& proto) { 4983f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 4993f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(keystore_encryption); 500eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(history_delete_directives); 5013f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(autofill_culling); 5023f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(pre_commit_update_avoidance); 5033f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET(favicon_sync, FaviconSyncFlagsToValue); 5043f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(gcm_channel); 5053f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(enhanced_bookmarks); 5063f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_EXPERIMENT_ENABLED_FIELD(gcm_invalidations); 5073f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org return value; 508bc57e0f1a00227c0cec3d429fc58cc442d07b509pbos@webrtc.org} 509bc57e0f1a00227c0cec3d429fc58cc442d07b509pbos@webrtc.org 5103f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* ExtensionSettingSpecificsToValue( 5113f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org const sync_pb::ExtensionSettingSpecifics& proto) { 5123f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 5133f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(extension_id); 5143f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(key); 5153f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(value); 5163f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org return value; 517eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 518eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 5193f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* ExtensionSpecificsToValue( 5203f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org const sync_pb::ExtensionSpecifics& proto) { 5213f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 5223f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(id); 523eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(version); 5243f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(update_url); 5253f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_BOOL(enabled); 5263f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_BOOL(incognito_enabled); 5273f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(name); 5283f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org return value; 5293f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 5303f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 5313f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgnamespace { 5323f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* FaviconDataToValue( 5333f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org const sync_pb::FaviconData& proto) { 5343f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 5353f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_BYTES(favicon); 5363f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_INT32(width); 5373f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_INT32(height); 5383f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org return value; 5393f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 5403f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} // namespace 5413f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 5423f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* FaviconImageSpecificsToValue( 54388b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org const sync_pb::FaviconImageSpecifics& proto) { 54488b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 54588b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org SET_STR(favicon_url); 546eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(favicon_web, FaviconDataToValue); 547eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(favicon_web_32, FaviconDataToValue); 548eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(favicon_touch_64, FaviconDataToValue); 549eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET(favicon_touch_precomposed_64, FaviconDataToValue); 550eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 55188b558febb8e8f42df6c7482efe76795c3fed399pbos@webrtc.org} 552eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 553eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* FaviconTrackingSpecificsToValue( 554eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::FaviconTrackingSpecifics& proto) { 555eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 556eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_STR(favicon_url); 557eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_INT64(last_visit_time_ms) 558eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org SET_BOOL(is_bookmarked); 559eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 560eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org} 561eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 562eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.orgbase::DictionaryValue* HistoryDeleteDirectiveSpecificsToValue( 563eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org const sync_pb::HistoryDeleteDirectiveSpecifics& proto) { 564eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 5653f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET(global_id_directive, GlobalIdDirectiveToValue); 5663f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET(time_range_directive, TimeRangeDirectiveToValue); 567eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org return value; 5683f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 569eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org 5703f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* ManagedUserSettingSpecificsToValue( 5713f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org const sync_pb::ManagedUserSettingSpecifics& proto) { 572eb67a6be101fe1ac8f2a4c062dbe6250f2e36bc0pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 5733f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(name); 5743f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org SET_STR(value); 5753f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org return value; 5763f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org} 5773f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org 5783f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.orgbase::DictionaryValue* ManagedUserSpecificsToValue( 5793f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org const sync_pb::ManagedUserSpecifics& proto) { 5803f83f9cae99b605aee71b46839e902653baeb3f6pbos@webrtc.org base::DictionaryValue* value = new base::DictionaryValue(); 581f94ccd41be08c937f523b2749544f07011203905pbos@webrtc.org SET_STR(id); 58279426b9ef9171ddbd673373e62e0142e51ee89f8kjellander@webrtc.org SET_STR(name); 58379426b9ef9171ddbd673373e62e0142e51ee89f8kjellander@webrtc.org SET_BOOL(acknowledged); 584 SET_STR(master_key); 585 SET_STR(chrome_avatar); 586 SET_STR(chromeos_avatar); 587 return value; 588} 589 590base::DictionaryValue* ManagedUserSharedSettingSpecificsToValue( 591 const sync_pb::ManagedUserSharedSettingSpecifics& proto) { 592 base::DictionaryValue* value = new base::DictionaryValue(); 593 SET_STR(mu_id); 594 SET_STR(key); 595 SET_STR(value); 596 SET_BOOL(acknowledged); 597 return value; 598} 599 600base::DictionaryValue* NigoriSpecificsToValue( 601 const sync_pb::NigoriSpecifics& proto) { 602 base::DictionaryValue* value = new base::DictionaryValue(); 603 SET(encryption_keybag, EncryptedDataToValue); 604 SET_BOOL(keybag_is_frozen); 605 SET_BOOL(encrypt_bookmarks); 606 SET_BOOL(encrypt_preferences); 607 SET_BOOL(encrypt_autofill_profile); 608 SET_BOOL(encrypt_autofill); 609 SET_BOOL(encrypt_themes); 610 SET_BOOL(encrypt_typed_urls); 611 SET_BOOL(encrypt_extension_settings); 612 SET_BOOL(encrypt_extensions); 613 SET_BOOL(encrypt_sessions); 614 SET_BOOL(encrypt_app_settings); 615 SET_BOOL(encrypt_apps); 616 SET_BOOL(encrypt_search_engines); 617 SET_BOOL(encrypt_dictionary); 618 SET_BOOL(encrypt_articles); 619 SET_BOOL(encrypt_app_list); 620 SET_BOOL(encrypt_everything); 621 SET_BOOL(sync_tab_favicons); 622 SET_ENUM(passphrase_type, PassphraseTypeString); 623 SET(keystore_decryptor_token, EncryptedDataToValue); 624 SET_INT64(keystore_migration_time); 625 SET_INT64(custom_passphrase_time); 626 return value; 627} 628 629base::DictionaryValue* ArticlePageToValue( 630 const sync_pb::ArticlePage& proto) { 631 base::DictionaryValue* value = new base::DictionaryValue(); 632 SET_STR(url); 633 return value; 634} 635 636base::DictionaryValue* ArticleSpecificsToValue( 637 const sync_pb::ArticleSpecifics& proto) { 638 base::DictionaryValue* value = new base::DictionaryValue(); 639 SET_STR(entry_id); 640 SET_STR(title); 641 SET_REP(pages, ArticlePageToValue); 642 return value; 643} 644 645base::DictionaryValue* PasswordSpecificsToValue( 646 const sync_pb::PasswordSpecifics& proto) { 647 base::DictionaryValue* value = new base::DictionaryValue(); 648 SET(encrypted, EncryptedDataToValue); 649 return value; 650} 651 652base::DictionaryValue* PreferenceSpecificsToValue( 653 const sync_pb::PreferenceSpecifics& proto) { 654 base::DictionaryValue* value = new base::DictionaryValue(); 655 SET_STR(name); 656 SET_STR(value); 657 return value; 658} 659 660base::DictionaryValue* PriorityPreferenceSpecificsToValue( 661 const sync_pb::PriorityPreferenceSpecifics& specifics) { 662 base::DictionaryValue* value = new base::DictionaryValue(); 663 SET_FIELD(preference, PreferenceSpecificsToValue); 664 return value; 665} 666 667base::DictionaryValue* SyncedNotificationAppInfoSpecificsToValue( 668 const sync_pb::SyncedNotificationAppInfoSpecifics& proto) { 669 base::DictionaryValue* value = new base::DictionaryValue(); 670 SET_REP(synced_notification_app_info, SyncedNotificationAppInfoToValue); 671 return value; 672} 673 674base::DictionaryValue* SyncedNotificationSpecificsToValue( 675 const sync_pb::SyncedNotificationSpecifics& proto) { 676 // There is a lot of data, for now just use heading, description, key, and 677 // the read state. 678 // TODO(petewil): Eventually add more data here. 679 base::DictionaryValue* value = new base::DictionaryValue(); 680 SET(coalesced_notification, CoalescedNotificationToValue); 681 return value; 682} 683 684base::DictionaryValue* SearchEngineSpecificsToValue( 685 const sync_pb::SearchEngineSpecifics& proto) { 686 base::DictionaryValue* value = new base::DictionaryValue(); 687 SET_STR(short_name); 688 SET_STR(keyword); 689 SET_STR(favicon_url); 690 SET_STR(url); 691 SET_BOOL(safe_for_autoreplace); 692 SET_STR(originating_url); 693 SET_INT64(date_created); 694 SET_STR(input_encodings); 695 SET_BOOL(show_in_default_list); 696 SET_STR(suggestions_url); 697 SET_INT32(prepopulate_id); 698 SET_BOOL(autogenerate_keyword); 699 SET_STR(instant_url); 700 SET_INT64(last_modified); 701 SET_STR(sync_guid); 702 SET_STR_REP(alternate_urls); 703 SET_STR(search_terms_replacement_key); 704 SET_STR(image_url); 705 SET_STR(search_url_post_params); 706 SET_STR(suggestions_url_post_params); 707 SET_STR(instant_url_post_params); 708 SET_STR(image_url_post_params); 709 SET_STR(new_tab_url); 710 return value; 711} 712 713base::DictionaryValue* SessionSpecificsToValue( 714 const sync_pb::SessionSpecifics& proto) { 715 base::DictionaryValue* value = new base::DictionaryValue(); 716 SET_STR(session_tag); 717 SET(header, SessionHeaderToValue); 718 SET(tab, SessionTabToValue); 719 SET_INT32(tab_node_id); 720 return value; 721} 722 723base::DictionaryValue* ThemeSpecificsToValue( 724 const sync_pb::ThemeSpecifics& proto) { 725 base::DictionaryValue* value = new base::DictionaryValue(); 726 SET_BOOL(use_custom_theme); 727 SET_BOOL(use_system_theme_by_default); 728 SET_STR(custom_theme_name); 729 SET_STR(custom_theme_id); 730 SET_STR(custom_theme_update_url); 731 return value; 732} 733 734base::DictionaryValue* TypedUrlSpecificsToValue( 735 const sync_pb::TypedUrlSpecifics& proto) { 736 base::DictionaryValue* value = new base::DictionaryValue(); 737 SET_STR(url); 738 SET_STR(title); 739 SET_BOOL(hidden); 740 SET_INT64_REP(visits); 741 SET_INT32_REP(visit_transitions); 742 return value; 743} 744 745base::DictionaryValue* EntitySpecificsToValue( 746 const sync_pb::EntitySpecifics& specifics) { 747 base::DictionaryValue* value = new base::DictionaryValue(); 748 SET_FIELD(app, AppSpecificsToValue); 749 SET_FIELD(app_list, AppListSpecificsToValue); 750 SET_FIELD(app_notification, AppNotificationToValue); 751 SET_FIELD(app_setting, AppSettingSpecificsToValue); 752 SET_FIELD(article, ArticleSpecificsToValue); 753 SET_FIELD(autofill, AutofillSpecificsToValue); 754 SET_FIELD(autofill_profile, AutofillProfileSpecificsToValue); 755 SET_FIELD(bookmark, BookmarkSpecificsToValue); 756 SET_FIELD(device_info, DeviceInfoSpecificsToValue); 757 SET_FIELD(dictionary, DictionarySpecificsToValue); 758 SET_FIELD(experiments, ExperimentsSpecificsToValue); 759 SET_FIELD(extension, ExtensionSpecificsToValue); 760 SET_FIELD(extension_setting, ExtensionSettingSpecificsToValue); 761 SET_FIELD(favicon_image, FaviconImageSpecificsToValue); 762 SET_FIELD(favicon_tracking, FaviconTrackingSpecificsToValue); 763 SET_FIELD(history_delete_directive, HistoryDeleteDirectiveSpecificsToValue); 764 SET_FIELD(managed_user_setting, ManagedUserSettingSpecificsToValue); 765 SET_FIELD(managed_user_shared_setting, 766 ManagedUserSharedSettingSpecificsToValue); 767 SET_FIELD(managed_user, ManagedUserSpecificsToValue); 768 SET_FIELD(nigori, NigoriSpecificsToValue); 769 SET_FIELD(password, PasswordSpecificsToValue); 770 SET_FIELD(preference, PreferenceSpecificsToValue); 771 SET_FIELD(priority_preference, PriorityPreferenceSpecificsToValue); 772 SET_FIELD(search_engine, SearchEngineSpecificsToValue); 773 SET_FIELD(session, SessionSpecificsToValue); 774 SET_FIELD(synced_notification, SyncedNotificationSpecificsToValue); 775 SET_FIELD(synced_notification_app_info, 776 SyncedNotificationAppInfoSpecificsToValue); 777 SET_FIELD(theme, ThemeSpecificsToValue); 778 SET_FIELD(typed_url, TypedUrlSpecificsToValue); 779 return value; 780} 781 782namespace { 783 784base::StringValue* UniquePositionToStringValue( 785 const sync_pb::UniquePosition& proto) { 786 UniquePosition pos = UniquePosition::FromProto(proto); 787 return new base::StringValue(pos.ToDebugString()); 788} 789 790base::DictionaryValue* SyncEntityToValue(const sync_pb::SyncEntity& proto, 791 bool include_specifics) { 792 base::DictionaryValue* value = new base::DictionaryValue(); 793 SET_STR(id_string); 794 SET_STR(parent_id_string); 795 SET_STR(old_parent_id); 796 SET_INT64(version); 797 SET_INT64(mtime); 798 SET_INT64(ctime); 799 SET_STR(name); 800 SET_STR(non_unique_name); 801 SET_INT64(sync_timestamp); 802 SET_STR(server_defined_unique_tag); 803 SET_INT64(position_in_parent); 804 SET(unique_position, UniquePositionToStringValue); 805 SET_STR(insert_after_item_id); 806 SET_BOOL(deleted); 807 SET_STR(originator_cache_guid); 808 SET_STR(originator_client_item_id); 809 if (include_specifics) 810 SET(specifics, EntitySpecificsToValue); 811 SET_BOOL(folder); 812 SET_STR(client_defined_unique_tag); 813 return value; 814} 815 816base::ListValue* SyncEntitiesToValue( 817 const ::google::protobuf::RepeatedPtrField<sync_pb::SyncEntity>& entities, 818 bool include_specifics) { 819 base::ListValue* list = new base::ListValue(); 820 ::google::protobuf::RepeatedPtrField<sync_pb::SyncEntity>::const_iterator it; 821 for (it = entities.begin(); it != entities.end(); ++it) { 822 list->Append(SyncEntityToValue(*it, include_specifics)); 823 } 824 825 return list; 826} 827 828base::DictionaryValue* ChromiumExtensionActivityToValue( 829 const sync_pb::ChromiumExtensionsActivity& proto) { 830 base::DictionaryValue* value = new base::DictionaryValue(); 831 SET_STR(extension_id); 832 SET_INT32(bookmark_writes_since_last_commit); 833 return value; 834} 835 836base::DictionaryValue* CommitMessageToValue( 837 const sync_pb::CommitMessage& proto, 838 bool include_specifics) { 839 base::DictionaryValue* value = new base::DictionaryValue(); 840 value->Set("entries", 841 SyncEntitiesToValue(proto.entries(), include_specifics)); 842 SET_STR(cache_guid); 843 SET_REP(extensions_activity, ChromiumExtensionActivityToValue); 844 SET(config_params, ClientConfigParamsToValue); 845 return value; 846} 847 848base::DictionaryValue* GetUpdateTriggersToValue( 849 const sync_pb::GetUpdateTriggers& proto) { 850 base::DictionaryValue* value = new base::DictionaryValue(); 851 SET_STR_REP(notification_hint); 852 SET_BOOL(client_dropped_hints); 853 SET_BOOL(invalidations_out_of_sync); 854 SET_INT64(local_modification_nudges); 855 SET_INT64(datatype_refresh_nudges); 856 return value; 857} 858 859base::DictionaryValue* DataTypeProgressMarkerToValue( 860 const sync_pb::DataTypeProgressMarker& proto) { 861 base::DictionaryValue* value = new base::DictionaryValue(); 862 SET_INT32(data_type_id); 863 SET_BYTES(token); 864 SET_INT64(timestamp_token_for_migration); 865 SET_STR(notification_hint); 866 SET(get_update_triggers, GetUpdateTriggersToValue); 867 return value; 868} 869 870base::DictionaryValue* GetUpdatesCallerInfoToValue( 871 const sync_pb::GetUpdatesCallerInfo& proto) { 872 base::DictionaryValue* value = new base::DictionaryValue(); 873 SET_ENUM(source, GetUpdatesSourceString); 874 SET_BOOL(notifications_enabled); 875 return value; 876} 877 878base::DictionaryValue* GetUpdatesMessageToValue( 879 const sync_pb::GetUpdatesMessage& proto) { 880 base::DictionaryValue* value = new base::DictionaryValue(); 881 SET(caller_info, GetUpdatesCallerInfoToValue); 882 SET_BOOL(fetch_folders); 883 SET_INT32(batch_size); 884 SET_REP(from_progress_marker, DataTypeProgressMarkerToValue); 885 SET_BOOL(streaming); 886 SET_BOOL(need_encryption_key); 887 SET_BOOL(create_mobile_bookmarks_folder); 888 SET_ENUM(get_updates_origin, GetUpdatesOriginString); 889 return value; 890} 891 892base::DictionaryValue* ClientStatusToValue(const sync_pb::ClientStatus& proto) { 893 base::DictionaryValue* value = new base::DictionaryValue(); 894 SET_BOOL(hierarchy_conflict_detected); 895 return value; 896} 897 898base::DictionaryValue* EntryResponseToValue( 899 const sync_pb::CommitResponse::EntryResponse& proto) { 900 base::DictionaryValue* value = new base::DictionaryValue(); 901 SET_ENUM(response_type, GetResponseTypeString); 902 SET_STR(id_string); 903 SET_STR(parent_id_string); 904 SET_INT64(position_in_parent); 905 SET_INT64(version); 906 SET_STR(name); 907 SET_STR(error_message); 908 SET_INT64(mtime); 909 return value; 910} 911 912base::DictionaryValue* CommitResponseToValue( 913 const sync_pb::CommitResponse& proto) { 914 base::DictionaryValue* value = new base::DictionaryValue(); 915 SET_REP(entryresponse, EntryResponseToValue); 916 return value; 917} 918 919base::DictionaryValue* GetUpdatesResponseToValue( 920 const sync_pb::GetUpdatesResponse& proto, 921 bool include_specifics) { 922 base::DictionaryValue* value = new base::DictionaryValue(); 923 value->Set("entries", 924 SyncEntitiesToValue(proto.entries(), include_specifics)); 925 SET_INT64(changes_remaining); 926 SET_REP(new_progress_marker, DataTypeProgressMarkerToValue); 927 return value; 928} 929 930base::DictionaryValue* ClientCommandToValue( 931 const sync_pb::ClientCommand& proto) { 932 base::DictionaryValue* value = new base::DictionaryValue(); 933 SET_INT32(set_sync_poll_interval); 934 SET_INT32(set_sync_long_poll_interval); 935 SET_INT32(max_commit_batch_size); 936 SET_INT32(sessions_commit_delay_seconds); 937 SET_INT32(throttle_delay_seconds); 938 SET_INT32(client_invalidation_hint_buffer_size); 939 return value; 940} 941 942base::DictionaryValue* ErrorToValue( 943 const sync_pb::ClientToServerResponse::Error& proto) { 944 base::DictionaryValue* value = new base::DictionaryValue(); 945 SET_ENUM(error_type, GetErrorTypeString); 946 SET_STR(error_description); 947 SET_STR(url); 948 SET_ENUM(action, GetActionString); 949 return value; 950} 951 952} // namespace 953 954base::DictionaryValue* ClientToServerResponseToValue( 955 const sync_pb::ClientToServerResponse& proto, 956 bool include_specifics) { 957 base::DictionaryValue* value = new base::DictionaryValue(); 958 SET(commit, CommitResponseToValue); 959 if (proto.has_get_updates()) { 960 value->Set("get_updates", GetUpdatesResponseToValue(proto.get_updates(), 961 include_specifics)); 962 } 963 964 SET(error, ErrorToValue); 965 SET_ENUM(error_code, GetErrorTypeString); 966 SET_STR(error_message); 967 SET_STR(store_birthday); 968 SET(client_command, ClientCommandToValue); 969 SET_INT32_REP(migrated_data_type_id); 970 return value; 971} 972 973base::DictionaryValue* ClientToServerMessageToValue( 974 const sync_pb::ClientToServerMessage& proto, 975 bool include_specifics) { 976 base::DictionaryValue* value = new base::DictionaryValue(); 977 SET_STR(share); 978 SET_INT32(protocol_version); 979 if (proto.has_commit()) { 980 value->Set("commit", 981 CommitMessageToValue(proto.commit(), include_specifics)); 982 } 983 984 SET(get_updates, GetUpdatesMessageToValue); 985 SET_STR(store_birthday); 986 SET_BOOL(sync_problem_detected); 987 SET(debug_info, DebugInfoToValue); 988 SET(client_status, ClientStatusToValue); 989 return value; 990} 991 992base::DictionaryValue* DatatypeAssociationStatsToValue( 993 const sync_pb::DatatypeAssociationStats& proto) { 994 base::DictionaryValue* value = new base::DictionaryValue(); 995 SET_INT32(data_type_id); 996 SET_INT32(num_local_items_before_association); 997 SET_INT32(num_sync_items_before_association); 998 SET_INT32(num_local_items_after_association); 999 SET_INT32(num_sync_items_after_association); 1000 SET_INT32(num_local_items_added); 1001 SET_INT32(num_local_items_deleted); 1002 SET_INT32(num_local_items_modified); 1003 SET_INT32(num_sync_items_added); 1004 SET_INT32(num_sync_items_deleted); 1005 SET_INT32(num_sync_items_modified); 1006 SET_INT64(local_version_pre_association); 1007 SET_INT64(sync_version_pre_association) 1008 SET_BOOL(had_error); 1009 SET_INT64(download_wait_time_us); 1010 SET_INT64(download_time_us); 1011 SET_INT64(association_wait_time_for_high_priority_us); 1012 SET_INT64(association_wait_time_for_same_priority_us); 1013 return value; 1014} 1015 1016base::DictionaryValue* DebugEventInfoToValue( 1017 const sync_pb::DebugEventInfo& proto) { 1018 base::DictionaryValue* value = new base::DictionaryValue(); 1019 SET_ENUM(singleton_event, SingletonDebugEventTypeString); 1020 SET(sync_cycle_completed_event_info, SyncCycleCompletedEventInfoToValue); 1021 SET_INT32(nudging_datatype); 1022 SET_INT32_REP(datatypes_notified_from_server); 1023 SET(datatype_association_stats, DatatypeAssociationStatsToValue); 1024 return value; 1025} 1026 1027base::DictionaryValue* DebugInfoToValue(const sync_pb::DebugInfo& proto) { 1028 base::DictionaryValue* value = new base::DictionaryValue(); 1029 SET_REP(events, DebugEventInfoToValue); 1030 SET_BOOL(cryptographer_ready); 1031 SET_BOOL(cryptographer_has_pending_keys); 1032 SET_BOOL(events_dropped); 1033 return value; 1034} 1035 1036base::DictionaryValue* SyncCycleCompletedEventInfoToValue( 1037 const sync_pb::SyncCycleCompletedEventInfo& proto) { 1038 base::DictionaryValue* value = new base::DictionaryValue(); 1039 SET_INT32(num_encryption_conflicts); 1040 SET_INT32(num_hierarchy_conflicts); 1041 SET_INT32(num_server_conflicts); 1042 SET_INT32(num_updates_downloaded); 1043 SET_INT32(num_reflected_updates_downloaded); 1044 SET(caller_info, GetUpdatesCallerInfoToValue); 1045 return value; 1046} 1047 1048base::DictionaryValue* ClientConfigParamsToValue( 1049 const sync_pb::ClientConfigParams& proto) { 1050 base::DictionaryValue* value = new base::DictionaryValue(); 1051 SET_INT32_REP(enabled_type_ids); 1052 SET_BOOL(tabs_datatype_enabled); 1053 return value; 1054} 1055 1056#undef SET 1057#undef SET_REP 1058 1059#undef SET_BOOL 1060#undef SET_BYTES 1061#undef SET_INT32 1062#undef SET_INT64 1063#undef SET_INT64_REP 1064#undef SET_STR 1065#undef SET_STR_REP 1066 1067#undef SET_FIELD 1068 1069} // namespace syncer 1070