Index: chrome/browser/sync/protocol/proto_value_conversions.cc |
diff --git a/chrome/browser/sync/protocol/proto_value_conversions.cc b/chrome/browser/sync/protocol/proto_value_conversions.cc |
index ce8e749ce5d2d143dbf4a7f02e9d4cabb0ca37c2..985b5da6c74ae37bed3ee5b59300060e1a68e1c2 100644 |
--- a/chrome/browser/sync/protocol/proto_value_conversions.cc |
+++ b/chrome/browser/sync/protocol/proto_value_conversions.cc |
@@ -8,6 +8,8 @@ |
#include "base/base64.h" |
#include "base/basictypes.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/logging.h" |
#include "base/string_number_conversions.h" |
#include "base/values.h" |
@@ -397,6 +399,183 @@ DictionaryValue* EntitySpecificsToValue( |
return value; |
} |
+namespace { |
+ |
+DictionaryValue* SyncEntityToValue(const sync_pb::SyncEntity& proto, |
+ bool decode_specifics) { |
akalin
2012/03/14 00:17:30
replace decode_specifics with include_specifics ev
lipalani1
2012/03/15 00:02:13
Done.
|
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_STR(id_string); |
+ SET_STR(parent_id_string); |
+ SET_STR(old_parent_id); |
+ SET_INT64(version); |
+ SET_INT64(mtime); |
+ SET_INT64(ctime); |
+ SET_STR(name); |
+ SET_STR(non_unique_name); |
+ SET_INT64(sync_timestamp); |
+ SET_STR(server_defined_unique_tag); |
+ SET_INT64(position_in_parent); |
+ SET_STR(insert_after_item_id); |
+ SET_BOOL(deleted); |
+ SET_STR(originator_cache_guid); |
+ SET_STR(originator_client_item_id); |
+ if (decode_specifics) |
+ SET(specifics, EntitySpecificsToValue); |
+ SET_BOOL(folder); |
+ SET_STR(client_defined_unique_tag); |
+ return value; |
+} |
+ |
+void ConvertSyncEntitiesToValue(DictionaryValue* value, |
akalin
2012/03/14 00:17:30
make this return a ListValue*, and have the caller
akalin
2012/03/14 00:17:30
newline after ( and indent
lipalani1
2012/03/15 00:02:13
Done.
lipalani1
2012/03/15 00:02:13
Done.
|
+ ::google::protobuf::RepeatedPtrField<sync_pb::SyncEntity> entities, |
akalin
2012/03/14 00:17:30
const ref?
lipalani1
2012/03/15 00:02:13
Done.
|
+ bool decode_specifics) { |
+ CHECK(value); |
+ |
+ ListValue* list = new ListValue(); |
+ ::google::protobuf::RepeatedPtrField<sync_pb::SyncEntity>::const_iterator it; |
+ for (it = entities.begin(); it != entities.end(); ++it) { |
+ list->Append(SyncEntityToValue(*it, decode_specifics)); |
+ } |
+ |
+ value->Set("entries", list); |
+} |
+ |
+DictionaryValue* ChromiumExtensionActivityToValue( |
+ const sync_pb::ChromiumExtensionsActivity& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_STR(extension_id); |
+ SET_INT32(bookmark_writes_since_last_commit); |
+ return value; |
+} |
+ |
+DictionaryValue* CommitMessageToValue(const sync_pb::CommitMessage& proto, |
akalin
2012/03/14 00:17:30
newline and indent after (
lipalani1
2012/03/15 00:02:13
Done.
|
+ bool decode_specifics) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ ConvertSyncEntitiesToValue(value, proto.entries(), decode_specifics); |
+ SET_STR(cache_guid); |
+ SET_REP(extensions_activity, ChromiumExtensionActivityToValue); |
+ return value; |
+} |
+ |
+DictionaryValue* DataTypeProgressMarkerToValue( |
+ const sync_pb::DataTypeProgressMarker& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_INT32(data_type_id); |
+ SET_BYTES(token); |
+ SET_INT64(timestamp_token_for_migration); |
+ SET_STR(notification_hint); |
+ return value; |
+} |
+ |
+DictionaryValue* GetUpdatesCallerInfoToValue( |
+ const sync_pb::GetUpdatesCallerInfo& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_ENUM(source, GetUpdatesSourceString); |
+ SET_BOOL(notifications_enabled); |
+ return value; |
+} |
+ |
+DictionaryValue* GetUpdatesMessageToValue( |
+ const sync_pb::GetUpdatesMessage& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET(caller_info, GetUpdatesCallerInfoToValue); |
+ SET_BOOL(fetch_folders); |
+ SET_INT32(batch_size); |
+ SET_REP(from_progress_marker, DataTypeProgressMarkerToValue); |
+ SET_BOOL(streaming); |
+ SET_BOOL(create_mobile_bookmarks_folder); |
+ return value; |
+} |
+ |
+DictionaryValue* EntryResponseToValue( |
+ const sync_pb::CommitResponse::EntryResponse& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_ENUM(response_type, GetResponseTypeString); |
+ SET_STR(id_string); |
+ SET_STR(parent_id_string); |
+ SET_INT64(position_in_parent); |
+ SET_INT64(version); |
+ SET_STR(name); |
+ SET_STR(error_message); |
+ SET_INT64(mtime); |
+ return value; |
+} |
+ |
+DictionaryValue* CommitResponseToValue(const sync_pb::CommitResponse& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_REP(entryresponse, EntryResponseToValue); |
+ return value; |
+} |
+ |
+DictionaryValue* GetUpdatesResponseToValue( |
+ const sync_pb::GetUpdatesResponse& proto, |
+ bool decode_specifics) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ ConvertSyncEntitiesToValue(value, proto.entries(), decode_specifics); |
+ SET_INT64(changes_remaining); |
+ SET_REP(new_progress_marker, DataTypeProgressMarkerToValue); |
+ return value; |
+} |
+ |
+DictionaryValue* ClientCommandToValue(const sync_pb::ClientCommand& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_INT32(set_sync_poll_interval); |
+ SET_INT32(set_sync_long_poll_interval); |
+ SET_INT32(max_commit_batch_size); |
+ SET_INT32(sessions_commit_delay_seconds); |
+ SET_INT32(throttle_delay_seconds); |
+ return value; |
+} |
+ |
+DictionaryValue* ErrorToValue( |
+ const sync_pb::ClientToServerResponse::Error& proto) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_ENUM(error_type, GetErrorTypeString); |
+ SET_STR(error_description); |
+ SET_STR(url); |
+ SET_ENUM(action, GetActionString); |
+ return value; |
+} |
+ |
+} // namespace |
+ |
+DictionaryValue* ClientToServerResponseToValue( |
+ const sync_pb::ClientToServerResponse& proto, |
+ bool decode_specifics) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET(commit, CommitResponseToValue); |
+ if (proto.has_get_updates()) { |
+ value->Set("get_updates", GetUpdatesResponseToValue(proto.get_updates(), |
+ decode_specifics)); |
+ } |
+ |
+ SET(error, ErrorToValue); |
+ SET_ENUM(error_code, GetErrorTypeString); |
+ SET_STR(error_message); |
+ SET_STR(store_birthday); |
+ SET(client_command, ClientCommandToValue); |
+ SET_INT32_REP(migrated_data_type_id); |
+ return value; |
+} |
+ |
+DictionaryValue* ClientToServerMessageToValue( |
+ const sync_pb::ClientToServerMessage& proto, |
+ bool decode_specifics) { |
+ DictionaryValue* value = new DictionaryValue(); |
+ SET_STR(share); |
+ SET_INT32(protocol_version); |
+ if (proto.has_commit()) { |
+ value->Set("commit", CommitMessageToValue(proto.commit(), |
akalin
2012/03/14 00:17:30
newline after , and indent
lipalani1
2012/03/15 00:02:13
Done.
|
+ decode_specifics)); |
akalin
2012/03/14 00:17:30
line up after CommitMessageToValue
lipalani1
2012/03/15 00:02:13
Done.
|
+ } |
+ |
+ SET(get_updates, GetUpdatesMessageToValue); |
+ SET_STR(store_birthday); |
+ SET_BOOL(sync_problem_detected); |
+ return value; |
+} |
+ |
+ |
#undef SET |
#undef SET_REP |