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

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

Issue 1198963014: Change ownership of BookmarkClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup_managed_and_supervised_nodes
Patch Set: Rebase Created 5 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/bookmarks/browser/bookmark_codec.h" 5 #include "components/bookmarks/browser/bookmark_codec.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 ASSERT_NO_FATAL_FAILURE( 78 ASSERT_NO_FATAL_FAILURE(
79 AssertNodesEqual(expected->mobile_node(), actual->mobile_node())); 79 AssertNodesEqual(expected->mobile_node(), actual->mobile_node()));
80 } 80 }
81 81
82 } // namespace 82 } // namespace
83 83
84 class BookmarkCodecTest : public testing::Test { 84 class BookmarkCodecTest : public testing::Test {
85 protected: 85 protected:
86 // Helpers to create bookmark models with different data. 86 // Helpers to create bookmark models with different data.
87 BookmarkModel* CreateTestModel1() { 87 BookmarkModel* CreateTestModel1() {
88 scoped_ptr<BookmarkModel> model(client_.CreateModel()); 88 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
89 const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); 89 const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
90 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); 90 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
91 return model.release(); 91 return model.release();
92 } 92 }
93 BookmarkModel* CreateTestModel2() { 93 BookmarkModel* CreateTestModel2() {
94 scoped_ptr<BookmarkModel> model(client_.CreateModel()); 94 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
95 const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); 95 const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
96 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); 96 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
97 model->AddURL(bookmark_bar, 1, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); 97 model->AddURL(bookmark_bar, 1, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url));
98 return model.release(); 98 return model.release();
99 } 99 }
100 BookmarkModel* CreateTestModel3() { 100 BookmarkModel* CreateTestModel3() {
101 scoped_ptr<BookmarkModel> model(client_.CreateModel()); 101 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
102 const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); 102 const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
103 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url)); 103 model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
104 const BookmarkNode* folder1 = 104 const BookmarkNode* folder1 =
105 model->AddFolder(bookmark_bar, 1, ASCIIToUTF16(kFolder1Title)); 105 model->AddFolder(bookmark_bar, 1, ASCIIToUTF16(kFolder1Title));
106 model->AddURL(folder1, 0, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url)); 106 model->AddURL(folder1, 0, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url));
107 return model.release(); 107 return model.release();
108 } 108 }
109 109
110 void GetBookmarksBarChildValue(base::Value* value, 110 void GetBookmarksBarChildValue(base::Value* value,
111 size_t index, 111 size_t index,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 179
180 BookmarkModel* DecodeHelper(const base::Value& value, 180 BookmarkModel* DecodeHelper(const base::Value& value,
181 const std::string& expected_stored_checksum, 181 const std::string& expected_stored_checksum,
182 std::string* computed_checksum, 182 std::string* computed_checksum,
183 bool expected_changes) { 183 bool expected_changes) {
184 BookmarkCodec decoder; 184 BookmarkCodec decoder;
185 // Computed and stored checksums should be empty. 185 // Computed and stored checksums should be empty.
186 EXPECT_EQ("", decoder.computed_checksum()); 186 EXPECT_EQ("", decoder.computed_checksum());
187 EXPECT_EQ("", decoder.stored_checksum()); 187 EXPECT_EQ("", decoder.stored_checksum());
188 188
189 scoped_ptr<BookmarkModel> model(client_.CreateModel()); 189 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
190 EXPECT_TRUE(Decode(&decoder, model.get(), value)); 190 EXPECT_TRUE(Decode(&decoder, model.get(), value));
191 191
192 *computed_checksum = decoder.computed_checksum(); 192 *computed_checksum = decoder.computed_checksum();
193 const std::string& stored_checksum = decoder.stored_checksum(); 193 const std::string& stored_checksum = decoder.stored_checksum();
194 194
195 // Computed and stored checksums should not be empty. 195 // Computed and stored checksums should not be empty.
196 EXPECT_FALSE(computed_checksum->empty()); 196 EXPECT_FALSE(computed_checksum->empty());
197 EXPECT_FALSE(stored_checksum.empty()); 197 EXPECT_FALSE(stored_checksum.empty());
198 198
199 // Stored checksum should be as expected. 199 // Stored checksum should be as expected.
(...skipping 17 matching lines...) Expand all
217 for (int i = 0; i < node->child_count(); ++i) 217 for (int i = 0; i < node->child_count(); ++i)
218 CheckIDs(node->GetChild(i), assigned_ids); 218 CheckIDs(node->GetChild(i), assigned_ids);
219 } 219 }
220 220
221 void ExpectIDsUnique(BookmarkModel* model) { 221 void ExpectIDsUnique(BookmarkModel* model) {
222 std::set<int64> assigned_ids; 222 std::set<int64> assigned_ids;
223 CheckIDs(model->bookmark_bar_node(), &assigned_ids); 223 CheckIDs(model->bookmark_bar_node(), &assigned_ids);
224 CheckIDs(model->other_node(), &assigned_ids); 224 CheckIDs(model->other_node(), &assigned_ids);
225 CheckIDs(model->mobile_node(), &assigned_ids); 225 CheckIDs(model->mobile_node(), &assigned_ids);
226 } 226 }
227
228 TestBookmarkClient client_;
229 }; 227 };
230 228
231 TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) { 229 TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) {
232 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1()); 230 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel1());
233 std::string enc_checksum; 231 std::string enc_checksum;
234 scoped_ptr<base::Value> value( 232 scoped_ptr<base::Value> value(
235 EncodeHelper(model_to_encode.get(), &enc_checksum)); 233 EncodeHelper(model_to_encode.get(), &enc_checksum));
236 234
237 EXPECT_TRUE(value.get() != NULL); 235 EXPECT_TRUE(value.get() != NULL);
238 236
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 bb_node, 0, ASCIIToUTF16("new url2"), GURL("http://newurl2.com")); 317 bb_node, 0, ASCIIToUTF16("new url2"), GURL("http://newurl2.com"));
320 318
321 ExpectIDsUnique(decoded_model.get()); 319 ExpectIDsUnique(decoded_model.get());
322 } 320 }
323 321
324 TEST_F(BookmarkCodecTest, PersistIDsTest) { 322 TEST_F(BookmarkCodecTest, PersistIDsTest) {
325 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3()); 323 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
326 BookmarkCodec encoder; 324 BookmarkCodec encoder;
327 scoped_ptr<base::Value> model_value(encoder.Encode(model_to_encode.get())); 325 scoped_ptr<base::Value> model_value(encoder.Encode(model_to_encode.get()));
328 326
329 scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel()); 327 scoped_ptr<BookmarkModel> decoded_model(TestBookmarkClient::CreateModel());
330 BookmarkCodec decoder; 328 BookmarkCodec decoder;
331 ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *model_value.get())); 329 ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *model_value.get()));
332 ASSERT_NO_FATAL_FAILURE( 330 ASSERT_NO_FATAL_FAILURE(
333 AssertModelsEqual(model_to_encode.get(), decoded_model.get())); 331 AssertModelsEqual(model_to_encode.get(), decoded_model.get()));
334 332
335 // Add a couple of more items to the decoded bookmark model and make sure 333 // Add a couple of more items to the decoded bookmark model and make sure
336 // ID persistence is working properly. 334 // ID persistence is working properly.
337 const BookmarkNode* bookmark_bar = decoded_model->bookmark_bar_node(); 335 const BookmarkNode* bookmark_bar = decoded_model->bookmark_bar_node();
338 decoded_model->AddURL(bookmark_bar, 336 decoded_model->AddURL(bookmark_bar,
339 bookmark_bar->child_count(), 337 bookmark_bar->child_count(),
340 ASCIIToUTF16(kUrl3Title), 338 ASCIIToUTF16(kUrl3Title),
341 GURL(kUrl3Url)); 339 GURL(kUrl3Url));
342 const BookmarkNode* folder2_node = decoded_model->AddFolder( 340 const BookmarkNode* folder2_node = decoded_model->AddFolder(
343 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kFolder2Title)); 341 bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kFolder2Title));
344 decoded_model->AddURL( 342 decoded_model->AddURL(
345 folder2_node, 0, ASCIIToUTF16(kUrl4Title), GURL(kUrl4Url)); 343 folder2_node, 0, ASCIIToUTF16(kUrl4Title), GURL(kUrl4Url));
346 344
347 BookmarkCodec encoder2; 345 BookmarkCodec encoder2;
348 scoped_ptr<base::Value> model_value2(encoder2.Encode(decoded_model.get())); 346 scoped_ptr<base::Value> model_value2(encoder2.Encode(decoded_model.get()));
349 347
350 scoped_ptr<BookmarkModel> decoded_model2(client_.CreateModel()); 348 scoped_ptr<BookmarkModel> decoded_model2(TestBookmarkClient::CreateModel());
351 BookmarkCodec decoder2; 349 BookmarkCodec decoder2;
352 ASSERT_TRUE(Decode(&decoder2, decoded_model2.get(), *model_value2.get())); 350 ASSERT_TRUE(Decode(&decoder2, decoded_model2.get(), *model_value2.get()));
353 ASSERT_NO_FATAL_FAILURE( 351 ASSERT_NO_FATAL_FAILURE(
354 AssertModelsEqual(decoded_model.get(), decoded_model2.get())); 352 AssertModelsEqual(decoded_model.get(), decoded_model2.get()));
355 } 353 }
356 354
357 TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) { 355 TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
358 base::FilePath test_file = 356 base::FilePath test_file =
359 GetTestDataDir().AppendASCII("bookmarks/model_without_sync.json"); 357 GetTestDataDir().AppendASCII("bookmarks/model_without_sync.json");
360 ASSERT_TRUE(base::PathExists(test_file)); 358 ASSERT_TRUE(base::PathExists(test_file));
361 359
362 JSONFileValueDeserializer deserializer(test_file); 360 JSONFileValueDeserializer deserializer(test_file);
363 scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL)); 361 scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
364 362
365 scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel()); 363 scoped_ptr<BookmarkModel> decoded_model(TestBookmarkClient::CreateModel());
366 BookmarkCodec decoder; 364 BookmarkCodec decoder;
367 ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *root.get())); 365 ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *root.get()));
368 ExpectIDsUnique(decoded_model.get()); 366 ExpectIDsUnique(decoded_model.get());
369 367
370 const BookmarkNode* bbn = decoded_model->bookmark_bar_node(); 368 const BookmarkNode* bbn = decoded_model->bookmark_bar_node();
371 ASSERT_EQ(1, bbn->child_count()); 369 ASSERT_EQ(1, bbn->child_count());
372 370
373 const BookmarkNode* child = bbn->GetChild(0); 371 const BookmarkNode* child = bbn->GetChild(0);
374 EXPECT_EQ(BookmarkNode::FOLDER, child->type()); 372 EXPECT_EQ(BookmarkNode::FOLDER, child->type());
375 EXPECT_EQ(ASCIIToUTF16("Folder A"), child->GetTitle()); 373 EXPECT_EQ(ASCIIToUTF16("Folder A"), child->GetTitle());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 // Verifies that we can still decode the old codec format after changing the 439 // Verifies that we can still decode the old codec format after changing the
442 // way meta info is stored. 440 // way meta info is stored.
443 TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) { 441 TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) {
444 base::FilePath test_file = 442 base::FilePath test_file =
445 GetTestDataDir().AppendASCII("bookmarks/meta_info_as_string.json"); 443 GetTestDataDir().AppendASCII("bookmarks/meta_info_as_string.json");
446 ASSERT_TRUE(base::PathExists(test_file)); 444 ASSERT_TRUE(base::PathExists(test_file));
447 445
448 JSONFileValueDeserializer deserializer(test_file); 446 JSONFileValueDeserializer deserializer(test_file);
449 scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL)); 447 scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL));
450 448
451 scoped_ptr<BookmarkModel> model(client_.CreateModel()); 449 scoped_ptr<BookmarkModel> model(TestBookmarkClient::CreateModel());
452 BookmarkCodec decoder; 450 BookmarkCodec decoder;
453 ASSERT_TRUE(Decode(&decoder, model.get(), *root.get())); 451 ASSERT_TRUE(Decode(&decoder, model.get(), *root.get()));
454 452
455 EXPECT_EQ(1, model->root_node()->sync_transaction_version()); 453 EXPECT_EQ(1, model->root_node()->sync_transaction_version());
456 const BookmarkNode* bbn = model->bookmark_bar_node(); 454 const BookmarkNode* bbn = model->bookmark_bar_node();
457 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion, 455 EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion,
458 bbn->GetChild(0)->sync_transaction_version()); 456 bbn->GetChild(0)->sync_transaction_version());
459 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version()); 457 EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version());
460 458
461 const char kSyncTransactionVersionKey[] = "sync.transaction_version"; 459 const char kSyncTransactionVersionKey[] = "sync.transaction_version";
462 const char kNormalKey[] = "key"; 460 const char kNormalKey[] = "key";
463 const char kNestedKey[] = "nested.key"; 461 const char kNestedKey[] = "nested.key";
464 std::string meta_value; 462 std::string meta_value;
465 EXPECT_FALSE( 463 EXPECT_FALSE(
466 model->root_node()->GetMetaInfo(kSyncTransactionVersionKey, &meta_value)); 464 model->root_node()->GetMetaInfo(kSyncTransactionVersionKey, &meta_value));
467 EXPECT_FALSE( 465 EXPECT_FALSE(
468 bbn->GetChild(1)->GetMetaInfo(kSyncTransactionVersionKey, &meta_value)); 466 bbn->GetChild(1)->GetMetaInfo(kSyncTransactionVersionKey, &meta_value));
469 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNormalKey, &meta_value)); 467 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNormalKey, &meta_value));
470 EXPECT_EQ("value", meta_value); 468 EXPECT_EQ("value", meta_value);
471 EXPECT_TRUE(bbn->GetChild(1)->GetMetaInfo(kNormalKey, &meta_value)); 469 EXPECT_TRUE(bbn->GetChild(1)->GetMetaInfo(kNormalKey, &meta_value));
472 EXPECT_EQ("value2", meta_value); 470 EXPECT_EQ("value2", meta_value);
473 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNestedKey, &meta_value)); 471 EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNestedKey, &meta_value));
474 EXPECT_EQ("value3", meta_value); 472 EXPECT_EQ("value3", meta_value);
475 } 473 }
476 474
477 } // namespace bookmarks 475 } // namespace bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698