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

Side by Side Diff: sync/protocol/proto_value_conversions_unittest.cc

Issue 9663023: Log the sync communication that happens between client and server. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: For committing. Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/protocol/proto_value_conversions.cc ('k') | sync/sync.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Keep this file in sync with the .proto files in this directory. 5 // Keep this file in sync with the .proto files in this directory.
6 6
7 #include "sync/protocol/proto_value_conversions.h" 7 #include "sync/protocol/proto_value_conversions.h"
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 SET_FIELD(theme); 180 SET_FIELD(theme);
181 SET_FIELD(typed_url); 181 SET_FIELD(typed_url);
182 182
183 #undef SET_FIELD 183 #undef SET_FIELD
184 184
185 scoped_ptr<DictionaryValue> value(EntitySpecificsToValue(specifics)); 185 scoped_ptr<DictionaryValue> value(EntitySpecificsToValue(specifics));
186 EXPECT_EQ(syncable::MODEL_TYPE_COUNT - syncable::FIRST_REAL_MODEL_TYPE, 186 EXPECT_EQ(syncable::MODEL_TYPE_COUNT - syncable::FIRST_REAL_MODEL_TYPE,
187 static_cast<int>(value->size())); 187 static_cast<int>(value->size()));
188 } 188 }
189 189
190 namespace {
191 // Returns whether the given value has specifics under the entries in the given
192 // path.
193 bool ValueHasSpecifics(const DictionaryValue& value,
194 const std::string& path) {
195 ListValue* entities_list = NULL;
196 DictionaryValue* entry_dictionary = NULL;
197 DictionaryValue* specifics_dictionary = NULL;
198
199 if (!value.GetList(path, &entities_list))
200 return false;
201
202 if (!entities_list->GetDictionary(0, &entry_dictionary))
203 return false;
204
205 return entry_dictionary->GetDictionary("specifics",
206 &specifics_dictionary);
207 }
208 } // namespace
209
210 // Create a ClientToServerMessage with an EntitySpecifics. Converting it to
211 // a value should respect the |include_specifics| flag.
212 TEST_F(ProtoValueConversionsTest, ClientToServerMessageToValue) {
213 sync_pb::ClientToServerMessage message;
214 sync_pb::CommitMessage* commit_message = message.mutable_commit();
215 sync_pb::SyncEntity* entity = commit_message->add_entries();
216 entity->mutable_specifics();
217
218 scoped_ptr<DictionaryValue> value_with_specifics(
219 ClientToServerMessageToValue(message, true /* include_specifics */));
220 EXPECT_FALSE(value_with_specifics->empty());
221 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()),
222 "commit.entries"));
223
224 scoped_ptr<DictionaryValue> value_without_specifics(
225 ClientToServerMessageToValue(message, false /* include_specifics */));
226 EXPECT_FALSE(value_without_specifics->empty());
227 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()),
228 "commit.entries"));
229 }
230
231 // Create a ClientToServerResponse with an EntitySpecifics. Converting it to
232 // a value should respect the |include_specifics| flag.
233 TEST_F(ProtoValueConversionsTest, ClientToServerResponseToValue) {
234 sync_pb::ClientToServerResponse message;
235 sync_pb::GetUpdatesResponse* response = message.mutable_get_updates();
236 sync_pb::SyncEntity* entity = response->add_entries();
237 entity->mutable_specifics();
238
239 scoped_ptr<DictionaryValue> value_with_specifics(
240 ClientToServerResponseToValue(message, true /* include_specifics */));
241 EXPECT_FALSE(value_with_specifics->empty());
242 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()),
243 "get_updates.entries"));
244
245 scoped_ptr<DictionaryValue> value_without_specifics(
246 ClientToServerResponseToValue(message, false /* include_specifics */));
247 EXPECT_FALSE(value_without_specifics->empty());
248 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()),
249 "get_updates.entries"));
250 }
251
190 } // namespace 252 } // namespace
191 } // namespace browser_sync 253 } // namespace browser_sync
OLDNEW
« no previous file with comments | « sync/protocol/proto_value_conversions.cc ('k') | sync/sync.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698