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

Side by Side Diff: chrome/browser/bookmarks/bookmark_codec_unittest.cc

Issue 106433007: Update some uses of Value in chrome/browser to use the base:: namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years 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
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 #include "chrome/browser/bookmarks/bookmark_codec.h" 5 #include "chrome/browser/bookmarks/bookmark_codec.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/json/json_file_value_serializer.h" 9 #include "base/json/json_file_value_serializer.h"
10 #include "base/json/json_string_value_serializer.h" 10 #include "base/json/json_string_value_serializer.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 BookmarkModel* CreateTestModel3() { 86 BookmarkModel* CreateTestModel3() {
87 scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL)); 87 scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL));
88 const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); 88 const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
89 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); 89 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
90 const BookmarkNode* folder1 = model->AddFolder(bookmark_bar, 1, 90 const BookmarkNode* folder1 = model->AddFolder(bookmark_bar, 1,
91 ASCIIToUTF16(kFolder1Title)); 91 ASCIIToUTF16(kFolder1Title));
92 model->AddURL(folder1, 0, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); 92 model->AddURL(folder1, 0, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url));
93 return model.release(); 93 return model.release();
94 } 94 }
95 95
96 void GetBookmarksBarChildValue(Value* value, 96 void GetBookmarksBarChildValue(base::Value* value,
97 size_t index, 97 size_t index,
98 DictionaryValue** result_value) { 98 base::DictionaryValue** result_value) {
99 ASSERT_EQ(Value::TYPE_DICTIONARY, value->GetType()); 99 ASSERT_EQ(base::Value::TYPE_DICTIONARY, value->GetType());
100 100
101 DictionaryValue* d_value = static_cast<DictionaryValue*>(value); 101 base::DictionaryValue* d_value = static_cast<base::DictionaryValue*>(value);
102 Value* roots; 102 base::Value* roots;
103 ASSERT_TRUE(d_value->Get(BookmarkCodec::kRootsKey, &roots)); 103 ASSERT_TRUE(d_value->Get(BookmarkCodec::kRootsKey, &roots));
104 ASSERT_EQ(Value::TYPE_DICTIONARY, roots->GetType()); 104 ASSERT_EQ(base::Value::TYPE_DICTIONARY, roots->GetType());
105 105
106 DictionaryValue* roots_d_value = static_cast<DictionaryValue*>(roots); 106 base::DictionaryValue* roots_d_value =
107 Value* bb_value; 107 static_cast<base::DictionaryValue*>(roots);
108 base::Value* bb_value;
108 ASSERT_TRUE(roots_d_value->Get(BookmarkCodec::kRootFolderNameKey, 109 ASSERT_TRUE(roots_d_value->Get(BookmarkCodec::kRootFolderNameKey,
109 &bb_value)); 110 &bb_value));
110 ASSERT_EQ(Value::TYPE_DICTIONARY, bb_value->GetType()); 111 ASSERT_EQ(base::Value::TYPE_DICTIONARY, bb_value->GetType());
111 112
112 DictionaryValue* bb_d_value = static_cast<DictionaryValue*>(bb_value); 113 base::DictionaryValue* bb_d_value =
113 Value* bb_children_value; 114 static_cast<base::DictionaryValue*>(bb_value);
115 base::Value* bb_children_value;
114 ASSERT_TRUE(bb_d_value->Get(BookmarkCodec::kChildrenKey, 116 ASSERT_TRUE(bb_d_value->Get(BookmarkCodec::kChildrenKey,
115 &bb_children_value)); 117 &bb_children_value));
116 ASSERT_EQ(Value::TYPE_LIST, bb_children_value->GetType()); 118 ASSERT_EQ(base::Value::TYPE_LIST, bb_children_value->GetType());
117 119
118 ListValue* bb_children_l_value = static_cast<ListValue*>(bb_children_value); 120 base::ListValue* bb_children_l_value =
119 Value* child_value; 121 static_cast<base::ListValue*>(bb_children_value);
122 base::Value* child_value;
120 ASSERT_TRUE(bb_children_l_value->Get(index, &child_value)); 123 ASSERT_TRUE(bb_children_l_value->Get(index, &child_value));
121 ASSERT_EQ(Value::TYPE_DICTIONARY, child_value->GetType()); 124 ASSERT_EQ(base::Value::TYPE_DICTIONARY, child_value->GetType());
122 125
123 *result_value = static_cast<DictionaryValue*>(child_value); 126 *result_value = static_cast<base::DictionaryValue*>(child_value);
124 } 127 }
125 128
126 Value* EncodeHelper(BookmarkModel* model, std::string* checksum) { 129 base::Value* EncodeHelper(BookmarkModel* model, std::string* checksum) {
127 BookmarkCodec encoder; 130 BookmarkCodec encoder;
128 // Computed and stored checksums should be empty. 131 // Computed and stored checksums should be empty.
129 EXPECT_EQ("", encoder.computed_checksum()); 132 EXPECT_EQ("", encoder.computed_checksum());
130 EXPECT_EQ("", encoder.stored_checksum()); 133 EXPECT_EQ("", encoder.stored_checksum());
131 134
132 scoped_ptr<Value> value(encoder.Encode(model)); 135 scoped_ptr<base::Value> value(encoder.Encode(model));
133 const std::string& computed_checksum = encoder.computed_checksum(); 136 const std::string& computed_checksum = encoder.computed_checksum();
134 const std::string& stored_checksum = encoder.stored_checksum(); 137 const std::string& stored_checksum = encoder.stored_checksum();
135 138
136 // Computed and stored checksums should not be empty and should be equal. 139 // Computed and stored checksums should not be empty and should be equal.
137 EXPECT_FALSE(computed_checksum.empty()); 140 EXPECT_FALSE(computed_checksum.empty());
138 EXPECT_FALSE(stored_checksum.empty()); 141 EXPECT_FALSE(stored_checksum.empty());
139 EXPECT_EQ(computed_checksum, stored_checksum); 142 EXPECT_EQ(computed_checksum, stored_checksum);
140 143
141 *checksum = computed_checksum; 144 *checksum = computed_checksum;
142 return value.release(); 145 return value.release();
143 } 146 }
144 147
145 bool Decode(BookmarkCodec* codec, BookmarkModel* model, const Value& value) { 148 bool Decode(BookmarkCodec* codec,
149 BookmarkModel* model,
150 const base::Value& value) {
146 int64 max_id; 151 int64 max_id;
147 bool result = codec->Decode(AsMutable(model->bookmark_bar_node()), 152 bool result = codec->Decode(AsMutable(model->bookmark_bar_node()),
148 AsMutable(model->other_node()), 153 AsMutable(model->other_node()),
149 AsMutable(model->mobile_node()), 154 AsMutable(model->mobile_node()),
150 &max_id, value); 155 &max_id, value);
151 model->set_next_node_id(max_id); 156 model->set_next_node_id(max_id);
152 AsMutable(model->root_node())-> 157 AsMutable(model->root_node())->
153 SetMetaInfoMap(codec->model_meta_info_map()); 158 SetMetaInfoMap(codec->model_meta_info_map());
154 AsMutable(model->root_node())-> 159 AsMutable(model->root_node())->
155 set_sync_transaction_version(codec->model_sync_transaction_version()); 160 set_sync_transaction_version(codec->model_sync_transaction_version());
156 161
157 return result; 162 return result;
158 } 163 }
159 164
160 BookmarkModel* DecodeHelper(const Value& value, 165 BookmarkModel* DecodeHelper(const base::Value& value,
161 const std::string& expected_stored_checksum, 166 const std::string& expected_stored_checksum,
162 std::string* computed_checksum, 167 std::string* computed_checksum,
163 bool expected_changes) { 168 bool expected_changes) {
164 BookmarkCodec decoder; 169 BookmarkCodec decoder;
165 // Computed and stored checksums should be empty. 170 // Computed and stored checksums should be empty.
166 EXPECT_EQ("", decoder.computed_checksum()); 171 EXPECT_EQ("", decoder.computed_checksum());
167 EXPECT_EQ("", decoder.stored_checksum()); 172 EXPECT_EQ("", decoder.stored_checksum());
168 173
169 scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL)); 174 scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL));
170 EXPECT_TRUE(Decode(&decoder, model.get(), value)); 175 EXPECT_TRUE(Decode(&decoder, model.get(), value));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 std::set<int64> assigned_ids; 207 std::set<int64> assigned_ids;
203 CheckIDs(model->bookmark_bar_node(), &assigned_ids); 208 CheckIDs(model->bookmark_bar_node(), &assigned_ids);
204 CheckIDs(model->other_node(), &assigned_ids); 209 CheckIDs(model->other_node(), &assigned_ids);
205 CheckIDs(model->mobile_node(), &assigned_ids); 210 CheckIDs(model->mobile_node(), &assigned_ids);
206 } 211 }
207 }; 212 };
208 213
209 TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) { 214 TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) {
210 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1()); 215 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1());
211 std::string enc_checksum; 216 std::string enc_checksum;
212 scoped_ptr<Value> value(EncodeHelper(model_to_encode.get(), &enc_checksum)); 217 scoped_ptr<base::Value> value(
218 EncodeHelper(model_to_encode.get(), &enc_checksum));
213 219
214 EXPECT_TRUE(value.get() != NULL); 220 EXPECT_TRUE(value.get() != NULL);
215 221
216 std::string dec_checksum; 222 std::string dec_checksum;
217 scoped_ptr<BookmarkModel> decoded_model(DecodeHelper( 223 scoped_ptr<BookmarkModel> decoded_model(DecodeHelper(
218 *value.get(), enc_checksum, &dec_checksum, false)); 224 *value.get(), enc_checksum, &dec_checksum, false));
219 } 225 }
220 226
221 TEST_F(BookmarkCodecTest, ChecksumEncodeIdenticalModelsTest) { 227 TEST_F(BookmarkCodecTest, ChecksumEncodeIdenticalModelsTest) {
222 // Encode two identical models and make sure the check-sums are same as long 228 // Encode two identical models and make sure the check-sums are same as long
223 // as the data is the same. 229 // as the data is the same.
224 scoped_ptr<BookmarkModel> model1(CreateTestModel1()); 230 scoped_ptr<BookmarkModel> model1(CreateTestModel1());
225 std::string enc_checksum1; 231 std::string enc_checksum1;
226 scoped_ptr<Value> value1(EncodeHelper(model1.get(), &enc_checksum1)); 232 scoped_ptr<base::Value> value1(EncodeHelper(model1.get(), &enc_checksum1));
227 EXPECT_TRUE(value1.get() != NULL); 233 EXPECT_TRUE(value1.get() != NULL);
228 234
229 scoped_ptr<BookmarkModel> model2(CreateTestModel1()); 235 scoped_ptr<BookmarkModel> model2(CreateTestModel1());
230 std::string enc_checksum2; 236 std::string enc_checksum2;
231 scoped_ptr<Value> value2(EncodeHelper(model2.get(), &enc_checksum2)); 237 scoped_ptr<base::Value> value2(EncodeHelper(model2.get(), &enc_checksum2));
232 EXPECT_TRUE(value2.get() != NULL); 238 EXPECT_TRUE(value2.get() != NULL);
233 239
234 ASSERT_EQ(enc_checksum1, enc_checksum2); 240 ASSERT_EQ(enc_checksum1, enc_checksum2);
235 } 241 }
236 242
237 TEST_F(BookmarkCodecTest, ChecksumManualEditTest) { 243 TEST_F(BookmarkCodecTest, ChecksumManualEditTest) {
238 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1()); 244 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1());
239 std::string enc_checksum; 245 std::string enc_checksum;
240 scoped_ptr<Value> value(EncodeHelper(model_to_encode.get(), &enc_checksum)); 246 scoped_ptr<base::Value> value(
247 EncodeHelper(model_to_encode.get(), &enc_checksum));
241 248
242 EXPECT_TRUE(value.get() != NULL); 249 EXPECT_TRUE(value.get() != NULL);
243 250
244 // Change something in the encoded value before decoding it. 251 // Change something in the encoded value before decoding it.
245 DictionaryValue* child1_value; 252 base::DictionaryValue* child1_value;
246 GetBookmarksBarChildValue(value.get(), 0, &child1_value); 253 GetBookmarksBarChildValue(value.get(), 0, &child1_value);
247 std::string title; 254 std::string title;
248 ASSERT_TRUE(child1_value->GetString(BookmarkCodec::kNameKey, &title)); 255 ASSERT_TRUE(child1_value->GetString(BookmarkCodec::kNameKey, &title));
249 child1_value->SetString(BookmarkCodec::kNameKey, title + "1"); 256 child1_value->SetString(BookmarkCodec::kNameKey, title + "1");
250 257
251 std::string dec_checksum; 258 std::string dec_checksum;
252 scoped_ptr<BookmarkModel> decoded_model1(DecodeHelper( 259 scoped_ptr<BookmarkModel> decoded_model1(DecodeHelper(
253 *value.get(), enc_checksum, &dec_checksum, true)); 260 *value.get(), enc_checksum, &dec_checksum, true));
254 261
255 // Undo the change and make sure the checksum is same as original. 262 // Undo the change and make sure the checksum is same as original.
256 child1_value->SetString(BookmarkCodec::kNameKey, title); 263 child1_value->SetString(BookmarkCodec::kNameKey, title);
257 scoped_ptr<BookmarkModel> decoded_model2(DecodeHelper( 264 scoped_ptr<BookmarkModel> decoded_model2(DecodeHelper(
258 *value.get(), enc_checksum, &dec_checksum, false)); 265 *value.get(), enc_checksum, &dec_checksum, false));
259 } 266 }
260 267
261 TEST_F(BookmarkCodecTest, ChecksumManualEditIDsTest) { 268 TEST_F(BookmarkCodecTest, ChecksumManualEditIDsTest) {
262 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3()); 269 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
263 270
264 // The test depends on existence of multiple children under bookmark bar, so 271 // The test depends on existence of multiple children under bookmark bar, so
265 // make sure that's the case. 272 // make sure that's the case.
266 int bb_child_count = model_to_encode->bookmark_bar_node()->child_count(); 273 int bb_child_count = model_to_encode->bookmark_bar_node()->child_count();
267 ASSERT_GT(bb_child_count, 1); 274 ASSERT_GT(bb_child_count, 1);
268 275
269 std::string enc_checksum; 276 std::string enc_checksum;
270 scoped_ptr<Value> value(EncodeHelper(model_to_encode.get(), &enc_checksum)); 277 scoped_ptr<base::Value> value(
278 EncodeHelper(model_to_encode.get(), &enc_checksum));
271 279
272 EXPECT_TRUE(value.get() != NULL); 280 EXPECT_TRUE(value.get() != NULL);
273 281
274 // Change IDs for all children of bookmark bar to be 1. 282 // Change IDs for all children of bookmark bar to be 1.
275 DictionaryValue* child_value; 283 base::DictionaryValue* child_value;
276 for (int i = 0; i < bb_child_count; ++i) { 284 for (int i = 0; i < bb_child_count; ++i) {
277 GetBookmarksBarChildValue(value.get(), i, &child_value); 285 GetBookmarksBarChildValue(value.get(), i, &child_value);
278 std::string id; 286 std::string id;
279 ASSERT_TRUE(child_value->GetString(BookmarkCodec::kIdKey, &id)); 287 ASSERT_TRUE(child_value->GetString(BookmarkCodec::kIdKey, &id));
280 child_value->SetString(BookmarkCodec::kIdKey, "1"); 288 child_value->SetString(BookmarkCodec::kIdKey, "1");
281 } 289 }
282 290
283 std::string dec_checksum; 291 std::string dec_checksum;
284 scoped_ptr<BookmarkModel> decoded_model(DecodeHelper( 292 scoped_ptr<BookmarkModel> decoded_model(DecodeHelper(
285 *value.get(), enc_checksum, &dec_checksum, true)); 293 *value.get(), enc_checksum, &dec_checksum, true));
286 294
287 ExpectIDsUnique(decoded_model.get()); 295 ExpectIDsUnique(decoded_model.get());
288 296
289 // add a few extra nodes to bookmark model and make sure IDs are still uniuqe. 297 // add a few extra nodes to bookmark model and make sure IDs are still uniuqe.
290 const BookmarkNode* bb_node = decoded_model->bookmark_bar_node(); 298 const BookmarkNode* bb_node = decoded_model->bookmark_bar_node();
291 decoded_model->AddURL(bb_node, 0, ASCIIToUTF16("new url1"), 299 decoded_model->AddURL(bb_node, 0, ASCIIToUTF16("new url1"),
292 GURL("http://newurl1.com")); 300 GURL("http://newurl1.com"));
293 decoded_model->AddURL(bb_node, 0, ASCIIToUTF16("new url2"), 301 decoded_model->AddURL(bb_node, 0, ASCIIToUTF16("new url2"),
294 GURL("http://newurl2.com")); 302 GURL("http://newurl2.com"));
295 303
296 ExpectIDsUnique(decoded_model.get()); 304 ExpectIDsUnique(decoded_model.get());
297 } 305 }
298 306
299 TEST_F(BookmarkCodecTest, PersistIDsTest) { 307 TEST_F(BookmarkCodecTest, PersistIDsTest) {
300 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3()); 308 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
301 BookmarkCodec encoder; 309 BookmarkCodec encoder;
302 scoped_ptr<Value> model_value(encoder.Encode(model_to_encode.get())); 310 scoped_ptr<base::Value> model_value(encoder.Encode(model_to_encode.get()));
303 311
304 BookmarkModel decoded_model(NULL); 312 BookmarkModel decoded_model(NULL);
305 BookmarkCodec decoder; 313 BookmarkCodec decoder;
306 ASSERT_TRUE(Decode(&decoder, &decoded_model, *model_value.get())); 314 ASSERT_TRUE(Decode(&decoder, &decoded_model, *model_value.get()));
307 ASSERT_NO_FATAL_FAILURE( 315 ASSERT_NO_FATAL_FAILURE(
308 AssertModelsEqual(model_to_encode.get(), &decoded_model)); 316 AssertModelsEqual(model_to_encode.get(), &decoded_model));
309 317
310 // Add a couple of more items to the decoded bookmark model and make sure 318 // Add a couple of more items to the decoded bookmark model and make sure
311 // ID persistence is working properly. 319 // ID persistence is working properly.
312 const BookmarkNode* bookmark_bar = decoded_model.bookmark_bar_node(); 320 const BookmarkNode* bookmark_bar = decoded_model.bookmark_bar_node();
313 decoded_model.AddURL( 321 decoded_model.AddURL(
314 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kUrl3Title), 322 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kUrl3Title),
315 GURL(kUrl3Url)); 323 GURL(kUrl3Url));
316 const BookmarkNode* folder2_node = decoded_model.AddFolder( 324 const BookmarkNode* folder2_node = decoded_model.AddFolder(
317 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kFolder2Title)); 325 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kFolder2Title));
318 decoded_model.AddURL(folder2_node, 0, ASCIIToUTF16(kUrl4Title), 326 decoded_model.AddURL(folder2_node, 0, ASCIIToUTF16(kUrl4Title),
319 GURL(kUrl4Url)); 327 GURL(kUrl4Url));
320 328
321 BookmarkCodec encoder2; 329 BookmarkCodec encoder2;
322 scoped_ptr<Value> model_value2(encoder2.Encode(&decoded_model)); 330 scoped_ptr<base::Value> model_value2(encoder2.Encode(&decoded_model));
323 331
324 BookmarkModel decoded_model2(NULL); 332 BookmarkModel decoded_model2(NULL);
325 BookmarkCodec decoder2; 333 BookmarkCodec decoder2;
326 ASSERT_TRUE(Decode(&decoder2, &decoded_model2, *model_value2.get())); 334 ASSERT_TRUE(Decode(&decoder2, &decoded_model2, *model_value2.get()));
327 ASSERT_NO_FATAL_FAILURE(AssertModelsEqual(&decoded_model, &decoded_model2)); 335 ASSERT_NO_FATAL_FAILURE(AssertModelsEqual(&decoded_model, &decoded_model2));
328 } 336 }
329 337
330 TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) { 338 TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
331 base::FilePath test_data_directory; 339 base::FilePath test_data_directory;
332 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory)); 340 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory));
333 base::FilePath test_file = test_data_directory.AppendASCII( 341 base::FilePath test_file = test_data_directory.AppendASCII(
334 "bookmarks/model_without_sync.json"); 342 "bookmarks/model_without_sync.json");
335 ASSERT_TRUE(base::PathExists(test_file)); 343 ASSERT_TRUE(base::PathExists(test_file));
336 344
337 JSONFileValueSerializer serializer(test_file); 345 JSONFileValueSerializer serializer(test_file);
338 scoped_ptr<Value> root(serializer.Deserialize(NULL, NULL)); 346 scoped_ptr<base::Value> root(serializer.Deserialize(NULL, NULL));
339 347
340 BookmarkModel decoded_model(NULL); 348 BookmarkModel decoded_model(NULL);
341 BookmarkCodec decoder; 349 BookmarkCodec decoder;
342 ASSERT_TRUE(Decode(&decoder, &decoded_model, *root.get())); 350 ASSERT_TRUE(Decode(&decoder, &decoded_model, *root.get()));
343 ExpectIDsUnique(&decoded_model); 351 ExpectIDsUnique(&decoded_model);
344 352
345 const BookmarkNode* bbn = decoded_model.bookmark_bar_node(); 353 const BookmarkNode* bbn = decoded_model.bookmark_bar_node();
346 ASSERT_EQ(1, bbn->child_count()); 354 ASSERT_EQ(1, bbn->child_count());
347 355
348 const BookmarkNode* child = bbn->GetChild(0); 356 const BookmarkNode* child = bbn->GetChild(0);
(...skipping 20 matching lines...) Expand all
369 ASSERT_TRUE(decoded_model.mobile_node() != NULL); 377 ASSERT_TRUE(decoded_model.mobile_node() != NULL);
370 } 378 }
371 379
372 TEST_F(BookmarkCodecTest, EncodeAndDecodeMetaInfo) { 380 TEST_F(BookmarkCodecTest, EncodeAndDecodeMetaInfo) {
373 // Add meta info and encode. 381 // Add meta info and encode.
374 scoped_ptr<BookmarkModel> model(CreateTestModel1()); 382 scoped_ptr<BookmarkModel> model(CreateTestModel1());
375 model->SetNodeMetaInfo(model->root_node(), "model_info", "value1"); 383 model->SetNodeMetaInfo(model->root_node(), "model_info", "value1");
376 model->SetNodeMetaInfo(model->bookmark_bar_node()->GetChild(0), 384 model->SetNodeMetaInfo(model->bookmark_bar_node()->GetChild(0),
377 "node_info", "value2"); 385 "node_info", "value2");
378 std::string checksum; 386 std::string checksum;
379 scoped_ptr<Value> value(EncodeHelper(model.get(), &checksum)); 387 scoped_ptr<base::Value> value(EncodeHelper(model.get(), &checksum));
380 ASSERT_TRUE(value.get() != NULL); 388 ASSERT_TRUE(value.get() != NULL);
381 389
382 // Decode and check for meta info. 390 // Decode and check for meta info.
383 model.reset(DecodeHelper(*value, checksum, &checksum, false)); 391 model.reset(DecodeHelper(*value, checksum, &checksum, false));
384 std::string meta_value; 392 std::string meta_value;
385 EXPECT_TRUE(model->root_node()->GetMetaInfo("model_info", &meta_value)); 393 EXPECT_TRUE(model->root_node()->GetMetaInfo("model_info", &meta_value));
386 EXPECT_EQ("value1", meta_value); 394 EXPECT_EQ("value1", meta_value);
387 EXPECT_FALSE(model->root_node()->GetMetaInfo("other_key", &meta_value)); 395 EXPECT_FALSE(model->root_node()->GetMetaInfo("other_key", &meta_value));
388 const BookmarkNode* bbn = model->bookmark_bar_node(); 396 const BookmarkNode* bbn = model->bookmark_bar_node();
389 ASSERT_EQ(1, bbn->child_count()); 397 ASSERT_EQ(1, bbn->child_count());
390 const BookmarkNode* child = bbn->GetChild(0); 398 const BookmarkNode* child = bbn->GetChild(0);
391 EXPECT_TRUE(child->GetMetaInfo("node_info", &meta_value)); 399 EXPECT_TRUE(child->GetMetaInfo("node_info", &meta_value));
392 EXPECT_EQ("value2", meta_value); 400 EXPECT_EQ("value2", meta_value);
393 EXPECT_FALSE(child->GetMetaInfo("other_key", &meta_value)); 401 EXPECT_FALSE(child->GetMetaInfo("other_key", &meta_value));
394 } 402 }
395 403
396 TEST_F(BookmarkCodecTest, EncodeAndDecodeSyncTransactionVersion) { 404 TEST_F(BookmarkCodecTest, EncodeAndDecodeSyncTransactionVersion) {
397 // Add sync transaction version and encode. 405 // Add sync transaction version and encode.
398 scoped_ptr<BookmarkModel> model(CreateTestModel2()); 406 scoped_ptr<BookmarkModel> model(CreateTestModel2());
399 model->SetNodeSyncTransactionVersion(model->root_node(), 1); 407 model->SetNodeSyncTransactionVersion(model->root_node(), 1);
400 const BookmarkNode* bbn = model->bookmark_bar_node(); 408 const BookmarkNode* bbn = model->bookmark_bar_node();
401 model->SetNodeSyncTransactionVersion(bbn->GetChild(1), 42); 409 model->SetNodeSyncTransactionVersion(bbn->GetChild(1), 42);
402 410
403 std::string checksum; 411 std::string checksum;
404 scoped_ptr<Value> value(EncodeHelper(model.get(), &checksum)); 412 scoped_ptr<base::Value> value(EncodeHelper(model.get(), &checksum));
405 ASSERT_TRUE(value.get() != NULL); 413 ASSERT_TRUE(value.get() != NULL);
406 414
407 // Decode and verify. 415 // Decode and verify.
408 model.reset(DecodeHelper(*value, checksum, &checksum, false)); 416 model.reset(DecodeHelper(*value, checksum, &checksum, false));
409 EXPECT_EQ(1, model->root_node()->sync_transaction_version()); 417 EXPECT_EQ(1, model->root_node()->sync_transaction_version());
410 bbn = model->bookmark_bar_node(); 418 bbn = model->bookmark_bar_node();
411 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version()); 419 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version());
412 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion, 420 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion,
413 bbn->GetChild(0)->sync_transaction_version()); 421 bbn->GetChild(0)->sync_transaction_version());
414 } 422 }
415 423
416 // Verifies that we can still decode the old codec format after changing the 424 // Verifies that we can still decode the old codec format after changing the
417 // way meta info is stored. 425 // way meta info is stored.
418 TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) { 426 TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) {
419 base::FilePath test_data_directory; 427 base::FilePath test_data_directory;
420 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory)); 428 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory));
421 base::FilePath test_file = test_data_directory.AppendASCII( 429 base::FilePath test_file = test_data_directory.AppendASCII(
422 "bookmarks/meta_info_as_string.json"); 430 "bookmarks/meta_info_as_string.json");
423 ASSERT_TRUE(base::PathExists(test_file)); 431 ASSERT_TRUE(base::PathExists(test_file));
424 432
425 JSONFileValueSerializer serializer(test_file); 433 JSONFileValueSerializer serializer(test_file);
426 scoped_ptr<Value> root(serializer.Deserialize(NULL, NULL)); 434 scoped_ptr<base::Value> root(serializer.Deserialize(NULL, NULL));
427 435
428 BookmarkModel model(NULL); 436 BookmarkModel model(NULL);
429 BookmarkCodec decoder; 437 BookmarkCodec decoder;
430 ASSERT_TRUE(Decode(&decoder, &model, *root.get())); 438 ASSERT_TRUE(Decode(&decoder, &model, *root.get()));
431 439
432 EXPECT_EQ(1, model.root_node()->sync_transaction_version()); 440 EXPECT_EQ(1, model.root_node()->sync_transaction_version());
433 const BookmarkNode* bbn = model.bookmark_bar_node(); 441 const BookmarkNode* bbn = model.bookmark_bar_node();
434 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion, 442 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion,
435 bbn->GetChild(0)->sync_transaction_version()); 443 bbn->GetChild(0)->sync_transaction_version());
436 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version()); 444 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version());
437 445
438 const char kSyncTransactionVersionKey[] = "sync.transaction_version"; 446 const char kSyncTransactionVersionKey[] = "sync.transaction_version";
439 const char kNormalKey[] = "key"; 447 const char kNormalKey[] = "key";
440 const char kNestedKey[] = "nested.key"; 448 const char kNestedKey[] = "nested.key";
441 std::string meta_value; 449 std::string meta_value;
442 EXPECT_FALSE(model.root_node()->GetMetaInfo(kSyncTransactionVersionKey, 450 EXPECT_FALSE(model.root_node()->GetMetaInfo(kSyncTransactionVersionKey,
443 &meta_value)); 451 &meta_value));
444 EXPECT_FALSE(bbn->GetChild(1)->GetMetaInfo(kSyncTransactionVersionKey, 452 EXPECT_FALSE(bbn->GetChild(1)->GetMetaInfo(kSyncTransactionVersionKey,
445 &meta_value)); 453 &meta_value));
446 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNormalKey, &meta_value)); 454 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNormalKey, &meta_value));
447 EXPECT_EQ("value", meta_value); 455 EXPECT_EQ("value", meta_value);
448 EXPECT_TRUE(bbn->GetChild(1)->GetMetaInfo(kNormalKey, &meta_value)); 456 EXPECT_TRUE(bbn->GetChild(1)->GetMetaInfo(kNormalKey, &meta_value));
449 EXPECT_EQ("value2", meta_value); 457 EXPECT_EQ("value2", meta_value);
450 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNestedKey, &meta_value)); 458 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNestedKey, &meta_value));
451 EXPECT_EQ("value3", meta_value); 459 EXPECT_EQ("value3", meta_value);
452 } 460 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_codec.cc ('k') | chrome/browser/bookmarks/bookmark_expanded_state_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698