| OLD | NEW |
| 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_model.h" | 5 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/base_paths.h" | 10 #include "base/base_paths.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 EXPECT_EQ(0, mobile_node->child_count()); | 301 EXPECT_EQ(0, mobile_node->child_count()); |
| 302 EXPECT_EQ(BookmarkNode::MOBILE, mobile_node->type()); | 302 EXPECT_EQ(BookmarkNode::MOBILE, mobile_node->type()); |
| 303 | 303 |
| 304 EXPECT_TRUE(bb_node->id() != other_node->id()); | 304 EXPECT_TRUE(bb_node->id() != other_node->id()); |
| 305 EXPECT_TRUE(bb_node->id() != mobile_node->id()); | 305 EXPECT_TRUE(bb_node->id() != mobile_node->id()); |
| 306 EXPECT_TRUE(other_node->id() != mobile_node->id()); | 306 EXPECT_TRUE(other_node->id() != mobile_node->id()); |
| 307 } | 307 } |
| 308 | 308 |
| 309 TEST_F(BookmarkModelTest, AddURL) { | 309 TEST_F(BookmarkModelTest, AddURL) { |
| 310 const BookmarkNode* root = model_.bookmark_bar_node(); | 310 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 311 const string16 title(ASCIIToUTF16("foo")); | 311 const base::string16 title(ASCIIToUTF16("foo")); |
| 312 const GURL url("http://foo.com"); | 312 const GURL url("http://foo.com"); |
| 313 | 313 |
| 314 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); | 314 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); |
| 315 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 315 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 316 observer_details_.ExpectEquals(root, NULL, 0, -1); | 316 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 317 | 317 |
| 318 ASSERT_EQ(1, root->child_count()); | 318 ASSERT_EQ(1, root->child_count()); |
| 319 ASSERT_EQ(title, new_node->GetTitle()); | 319 ASSERT_EQ(title, new_node->GetTitle()); |
| 320 ASSERT_TRUE(url == new_node->url()); | 320 ASSERT_TRUE(url == new_node->url()); |
| 321 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 321 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 322 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); | 322 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); |
| 323 | 323 |
| 324 EXPECT_TRUE(new_node->id() != root->id() && | 324 EXPECT_TRUE(new_node->id() != root->id() && |
| 325 new_node->id() != model_.other_node()->id() && | 325 new_node->id() != model_.other_node()->id() && |
| 326 new_node->id() != model_.mobile_node()->id()); | 326 new_node->id() != model_.mobile_node()->id()); |
| 327 } | 327 } |
| 328 | 328 |
| 329 TEST_F(BookmarkModelTest, AddURLWithUnicodeTitle) { | 329 TEST_F(BookmarkModelTest, AddURLWithUnicodeTitle) { |
| 330 const BookmarkNode* root = model_.bookmark_bar_node(); | 330 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 331 const string16 title(WideToUTF16( | 331 const base::string16 title(WideToUTF16( |
| 332 L"\u767e\u5ea6\u4e00\u4e0b\uff0c\u4f60\u5c31\u77e5\u9053")); | 332 L"\u767e\u5ea6\u4e00\u4e0b\uff0c\u4f60\u5c31\u77e5\u9053")); |
| 333 const GURL url("https://www.baidu.com/"); | 333 const GURL url("https://www.baidu.com/"); |
| 334 | 334 |
| 335 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); | 335 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); |
| 336 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 336 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 337 observer_details_.ExpectEquals(root, NULL, 0, -1); | 337 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 338 | 338 |
| 339 ASSERT_EQ(1, root->child_count()); | 339 ASSERT_EQ(1, root->child_count()); |
| 340 ASSERT_EQ(title, new_node->GetTitle()); | 340 ASSERT_EQ(title, new_node->GetTitle()); |
| 341 ASSERT_TRUE(url == new_node->url()); | 341 ASSERT_TRUE(url == new_node->url()); |
| 342 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 342 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 343 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); | 343 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); |
| 344 | 344 |
| 345 EXPECT_TRUE(new_node->id() != root->id() && | 345 EXPECT_TRUE(new_node->id() != root->id() && |
| 346 new_node->id() != model_.other_node()->id() && | 346 new_node->id() != model_.other_node()->id() && |
| 347 new_node->id() != model_.mobile_node()->id()); | 347 new_node->id() != model_.mobile_node()->id()); |
| 348 } | 348 } |
| 349 | 349 |
| 350 TEST_F(BookmarkModelTest, AddURLWithWhitespaceTitle) { | 350 TEST_F(BookmarkModelTest, AddURLWithWhitespaceTitle) { |
| 351 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_whitespace_test_cases); ++i) { | 351 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_whitespace_test_cases); ++i) { |
| 352 const BookmarkNode* root = model_.bookmark_bar_node(); | 352 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 353 const string16 title( | 353 const base::string16 title( |
| 354 ASCIIToUTF16(url_whitespace_test_cases[i].input_title)); | 354 ASCIIToUTF16(url_whitespace_test_cases[i].input_title)); |
| 355 const GURL url("http://foo.com"); | 355 const GURL url("http://foo.com"); |
| 356 | 356 |
| 357 const BookmarkNode* new_node = model_.AddURL(root, i, title, url); | 357 const BookmarkNode* new_node = model_.AddURL(root, i, title, url); |
| 358 | 358 |
| 359 int size = i + 1; | 359 int size = i + 1; |
| 360 EXPECT_EQ(size, root->child_count()); | 360 EXPECT_EQ(size, root->child_count()); |
| 361 EXPECT_EQ(ASCIIToUTF16(url_whitespace_test_cases[i].expected_title), | 361 EXPECT_EQ(ASCIIToUTF16(url_whitespace_test_cases[i].expected_title), |
| 362 new_node->GetTitle()); | 362 new_node->GetTitle()); |
| 363 EXPECT_EQ(BookmarkNode::URL, new_node->type()); | 363 EXPECT_EQ(BookmarkNode::URL, new_node->type()); |
| 364 } | 364 } |
| 365 } | 365 } |
| 366 | 366 |
| 367 TEST_F(BookmarkModelTest, AddURLToMobileBookmarks) { | 367 TEST_F(BookmarkModelTest, AddURLToMobileBookmarks) { |
| 368 const BookmarkNode* root = model_.mobile_node(); | 368 const BookmarkNode* root = model_.mobile_node(); |
| 369 const string16 title(ASCIIToUTF16("foo")); | 369 const base::string16 title(ASCIIToUTF16("foo")); |
| 370 const GURL url("http://foo.com"); | 370 const GURL url("http://foo.com"); |
| 371 | 371 |
| 372 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); | 372 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url); |
| 373 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 373 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 374 observer_details_.ExpectEquals(root, NULL, 0, -1); | 374 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 375 | 375 |
| 376 ASSERT_EQ(1, root->child_count()); | 376 ASSERT_EQ(1, root->child_count()); |
| 377 ASSERT_EQ(title, new_node->GetTitle()); | 377 ASSERT_EQ(title, new_node->GetTitle()); |
| 378 ASSERT_TRUE(url == new_node->url()); | 378 ASSERT_TRUE(url == new_node->url()); |
| 379 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 379 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 380 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); | 380 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url)); |
| 381 | 381 |
| 382 EXPECT_TRUE(new_node->id() != root->id() && | 382 EXPECT_TRUE(new_node->id() != root->id() && |
| 383 new_node->id() != model_.other_node()->id() && | 383 new_node->id() != model_.other_node()->id() && |
| 384 new_node->id() != model_.mobile_node()->id()); | 384 new_node->id() != model_.mobile_node()->id()); |
| 385 } | 385 } |
| 386 | 386 |
| 387 TEST_F(BookmarkModelTest, AddFolder) { | 387 TEST_F(BookmarkModelTest, AddFolder) { |
| 388 const BookmarkNode* root = model_.bookmark_bar_node(); | 388 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 389 const string16 title(ASCIIToUTF16("foo")); | 389 const base::string16 title(ASCIIToUTF16("foo")); |
| 390 | 390 |
| 391 const BookmarkNode* new_node = model_.AddFolder(root, 0, title); | 391 const BookmarkNode* new_node = model_.AddFolder(root, 0, title); |
| 392 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 392 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 393 observer_details_.ExpectEquals(root, NULL, 0, -1); | 393 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 394 | 394 |
| 395 ASSERT_EQ(1, root->child_count()); | 395 ASSERT_EQ(1, root->child_count()); |
| 396 ASSERT_EQ(title, new_node->GetTitle()); | 396 ASSERT_EQ(title, new_node->GetTitle()); |
| 397 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type()); | 397 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type()); |
| 398 | 398 |
| 399 EXPECT_TRUE(new_node->id() != root->id() && | 399 EXPECT_TRUE(new_node->id() != root->id() && |
| 400 new_node->id() != model_.other_node()->id() && | 400 new_node->id() != model_.other_node()->id() && |
| 401 new_node->id() != model_.mobile_node()->id()); | 401 new_node->id() != model_.mobile_node()->id()); |
| 402 | 402 |
| 403 // Add another folder, just to make sure folder_ids are incremented correctly. | 403 // Add another folder, just to make sure folder_ids are incremented correctly. |
| 404 ClearCounts(); | 404 ClearCounts(); |
| 405 model_.AddFolder(root, 0, title); | 405 model_.AddFolder(root, 0, title); |
| 406 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 406 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 407 observer_details_.ExpectEquals(root, NULL, 0, -1); | 407 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 408 } | 408 } |
| 409 | 409 |
| 410 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) { | 410 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) { |
| 411 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { | 411 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { |
| 412 const BookmarkNode* root = model_.bookmark_bar_node(); | 412 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 413 const string16 title( | 413 const base::string16 title( |
| 414 ASCIIToUTF16(title_whitespace_test_cases[i].input_title)); | 414 ASCIIToUTF16(title_whitespace_test_cases[i].input_title)); |
| 415 | 415 |
| 416 const BookmarkNode* new_node = model_.AddFolder(root, i, title); | 416 const BookmarkNode* new_node = model_.AddFolder(root, i, title); |
| 417 | 417 |
| 418 int size = i + 1; | 418 int size = i + 1; |
| 419 EXPECT_EQ(size, root->child_count()); | 419 EXPECT_EQ(size, root->child_count()); |
| 420 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), | 420 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), |
| 421 new_node->GetTitle()); | 421 new_node->GetTitle()); |
| 422 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type()); | 422 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type()); |
| 423 } | 423 } |
| 424 } | 424 } |
| 425 | 425 |
| 426 TEST_F(BookmarkModelTest, RemoveURL) { | 426 TEST_F(BookmarkModelTest, RemoveURL) { |
| 427 const BookmarkNode* root = model_.bookmark_bar_node(); | 427 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 428 const string16 title(ASCIIToUTF16("foo")); | 428 const base::string16 title(ASCIIToUTF16("foo")); |
| 429 const GURL url("http://foo.com"); | 429 const GURL url("http://foo.com"); |
| 430 model_.AddURL(root, 0, title, url); | 430 model_.AddURL(root, 0, title, url); |
| 431 ClearCounts(); | 431 ClearCounts(); |
| 432 | 432 |
| 433 model_.Remove(root, 0); | 433 model_.Remove(root, 0); |
| 434 ASSERT_EQ(0, root->child_count()); | 434 ASSERT_EQ(0, root->child_count()); |
| 435 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 435 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 436 observer_details_.ExpectEquals(root, NULL, 0, -1); | 436 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 437 | 437 |
| 438 // Make sure there is no mapping for the URL. | 438 // Make sure there is no mapping for the URL. |
| 439 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); | 439 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); |
| 440 } | 440 } |
| 441 | 441 |
| 442 TEST_F(BookmarkModelTest, RemoveFolder) { | 442 TEST_F(BookmarkModelTest, RemoveFolder) { |
| 443 const BookmarkNode* root = model_.bookmark_bar_node(); | 443 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 444 const BookmarkNode* folder = model_.AddFolder(root, 0, ASCIIToUTF16("foo")); | 444 const BookmarkNode* folder = model_.AddFolder(root, 0, ASCIIToUTF16("foo")); |
| 445 | 445 |
| 446 ClearCounts(); | 446 ClearCounts(); |
| 447 | 447 |
| 448 // Add a URL as a child. | 448 // Add a URL as a child. |
| 449 const string16 title(ASCIIToUTF16("foo")); | 449 const base::string16 title(ASCIIToUTF16("foo")); |
| 450 const GURL url("http://foo.com"); | 450 const GURL url("http://foo.com"); |
| 451 model_.AddURL(folder, 0, title, url); | 451 model_.AddURL(folder, 0, title, url); |
| 452 | 452 |
| 453 ClearCounts(); | 453 ClearCounts(); |
| 454 | 454 |
| 455 // Now remove the folder. | 455 // Now remove the folder. |
| 456 model_.Remove(root, 0); | 456 model_.Remove(root, 0); |
| 457 ASSERT_EQ(0, root->child_count()); | 457 ASSERT_EQ(0, root->child_count()); |
| 458 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 458 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 459 observer_details_.ExpectEquals(root, NULL, 0, -1); | 459 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 460 | 460 |
| 461 // Make sure there is no mapping for the URL. | 461 // Make sure there is no mapping for the URL. |
| 462 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); | 462 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); |
| 463 } | 463 } |
| 464 | 464 |
| 465 TEST_F(BookmarkModelTest, RemoveAll) { | 465 TEST_F(BookmarkModelTest, RemoveAll) { |
| 466 const BookmarkNode* bookmark_bar_node = model_.bookmark_bar_node(); | 466 const BookmarkNode* bookmark_bar_node = model_.bookmark_bar_node(); |
| 467 | 467 |
| 468 ClearCounts(); | 468 ClearCounts(); |
| 469 | 469 |
| 470 // Add a url to bookmark bar. | 470 // Add a url to bookmark bar. |
| 471 string16 title(ASCIIToUTF16("foo")); | 471 base::string16 title(ASCIIToUTF16("foo")); |
| 472 GURL url("http://foo.com"); | 472 GURL url("http://foo.com"); |
| 473 model_.AddURL(bookmark_bar_node, 0, title, url); | 473 model_.AddURL(bookmark_bar_node, 0, title, url); |
| 474 | 474 |
| 475 // Add a folder with child URL. | 475 // Add a folder with child URL. |
| 476 const BookmarkNode* folder = model_.AddFolder(bookmark_bar_node, 0, title); | 476 const BookmarkNode* folder = model_.AddFolder(bookmark_bar_node, 0, title); |
| 477 model_.AddURL(folder, 0, title, url); | 477 model_.AddURL(folder, 0, title, url); |
| 478 | 478 |
| 479 AssertObserverCount(3, 0, 0, 0, 0, 0, 0, 0, 0); | 479 AssertObserverCount(3, 0, 0, 0, 0, 0, 0, 0, 0); |
| 480 ClearCounts(); | 480 ClearCounts(); |
| 481 | 481 |
| 482 model_.RemoveAll(); | 482 model_.RemoveAll(); |
| 483 | 483 |
| 484 EXPECT_EQ(0, bookmark_bar_node->child_count()); | 484 EXPECT_EQ(0, bookmark_bar_node->child_count()); |
| 485 // No individual BookmarkNodeRemoved events are fired, so removed count | 485 // No individual BookmarkNodeRemoved events are fired, so removed count |
| 486 // should be 0. | 486 // should be 0. |
| 487 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 1); | 487 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 1); |
| 488 AssertExtensiveChangesObserverCount(1, 1); | 488 AssertExtensiveChangesObserverCount(1, 1); |
| 489 EXPECT_EQ(1, AllNodesRemovedObserverCount()); | 489 EXPECT_EQ(1, AllNodesRemovedObserverCount()); |
| 490 } | 490 } |
| 491 | 491 |
| 492 TEST_F(BookmarkModelTest, SetTitle) { | 492 TEST_F(BookmarkModelTest, SetTitle) { |
| 493 const BookmarkNode* root = model_.bookmark_bar_node(); | 493 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 494 string16 title(ASCIIToUTF16("foo")); | 494 base::string16 title(ASCIIToUTF16("foo")); |
| 495 const GURL url("http://foo.com"); | 495 const GURL url("http://foo.com"); |
| 496 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 496 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 497 | 497 |
| 498 ClearCounts(); | 498 ClearCounts(); |
| 499 | 499 |
| 500 title = ASCIIToUTF16("foo2"); | 500 title = ASCIIToUTF16("foo2"); |
| 501 model_.SetTitle(node, title); | 501 model_.SetTitle(node, title); |
| 502 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); | 502 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); |
| 503 observer_details_.ExpectEquals(node, NULL, -1, -1); | 503 observer_details_.ExpectEquals(node, NULL, -1, -1); |
| 504 EXPECT_EQ(title, node->GetTitle()); | 504 EXPECT_EQ(title, node->GetTitle()); |
| 505 } | 505 } |
| 506 | 506 |
| 507 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) { | 507 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) { |
| 508 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { | 508 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { |
| 509 const BookmarkNode* root = model_.bookmark_bar_node(); | 509 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 510 string16 title(ASCIIToUTF16("dummy")); | 510 base::string16 title(ASCIIToUTF16("dummy")); |
| 511 const GURL url("http://foo.com"); | 511 const GURL url("http://foo.com"); |
| 512 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 512 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 513 | 513 |
| 514 title = ASCIIToUTF16(title_whitespace_test_cases[i].input_title); | 514 title = ASCIIToUTF16(title_whitespace_test_cases[i].input_title); |
| 515 model_.SetTitle(node, title); | 515 model_.SetTitle(node, title); |
| 516 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), | 516 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), |
| 517 node->GetTitle()); | 517 node->GetTitle()); |
| 518 } | 518 } |
| 519 } | 519 } |
| 520 | 520 |
| 521 TEST_F(BookmarkModelTest, SetURL) { | 521 TEST_F(BookmarkModelTest, SetURL) { |
| 522 const BookmarkNode* root = model_.bookmark_bar_node(); | 522 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 523 const string16 title(ASCIIToUTF16("foo")); | 523 const base::string16 title(ASCIIToUTF16("foo")); |
| 524 GURL url("http://foo.com"); | 524 GURL url("http://foo.com"); |
| 525 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 525 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 526 | 526 |
| 527 ClearCounts(); | 527 ClearCounts(); |
| 528 | 528 |
| 529 url = GURL("http://foo2.com"); | 529 url = GURL("http://foo2.com"); |
| 530 model_.SetURL(node, url); | 530 model_.SetURL(node, url); |
| 531 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); | 531 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); |
| 532 observer_details_.ExpectEquals(node, NULL, -1, -1); | 532 observer_details_.ExpectEquals(node, NULL, -1, -1); |
| 533 EXPECT_EQ(url, node->url()); | 533 EXPECT_EQ(url, node->url()); |
| 534 } | 534 } |
| 535 | 535 |
| 536 TEST_F(BookmarkModelTest, SetDateAdded) { | 536 TEST_F(BookmarkModelTest, SetDateAdded) { |
| 537 const BookmarkNode* root = model_.bookmark_bar_node(); | 537 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 538 const string16 title(ASCIIToUTF16("foo")); | 538 const base::string16 title(ASCIIToUTF16("foo")); |
| 539 GURL url("http://foo.com"); | 539 GURL url("http://foo.com"); |
| 540 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 540 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 541 | 541 |
| 542 ClearCounts(); | 542 ClearCounts(); |
| 543 | 543 |
| 544 base::Time new_time = base::Time::Now() + base::TimeDelta::FromMinutes(20); | 544 base::Time new_time = base::Time::Now() + base::TimeDelta::FromMinutes(20); |
| 545 model_.SetDateAdded(node, new_time); | 545 model_.SetDateAdded(node, new_time); |
| 546 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0); | 546 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0); |
| 547 EXPECT_EQ(new_time, node->date_added()); | 547 EXPECT_EQ(new_time, node->date_added()); |
| 548 EXPECT_EQ(new_time, model_.bookmark_bar_node()->date_folder_modified()); | 548 EXPECT_EQ(new_time, model_.bookmark_bar_node()->date_folder_modified()); |
| 549 } | 549 } |
| 550 | 550 |
| 551 TEST_F(BookmarkModelTest, Move) { | 551 TEST_F(BookmarkModelTest, Move) { |
| 552 const BookmarkNode* root = model_.bookmark_bar_node(); | 552 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 553 const string16 title(ASCIIToUTF16("foo")); | 553 const base::string16 title(ASCIIToUTF16("foo")); |
| 554 const GURL url("http://foo.com"); | 554 const GURL url("http://foo.com"); |
| 555 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 555 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 556 const BookmarkNode* folder1 = model_.AddFolder(root, 0, ASCIIToUTF16("foo")); | 556 const BookmarkNode* folder1 = model_.AddFolder(root, 0, ASCIIToUTF16("foo")); |
| 557 ClearCounts(); | 557 ClearCounts(); |
| 558 | 558 |
| 559 model_.Move(node, folder1, 0); | 559 model_.Move(node, folder1, 0); |
| 560 | 560 |
| 561 AssertObserverCount(0, 1, 0, 0, 0, 0, 0, 0, 0); | 561 AssertObserverCount(0, 1, 0, 0, 0, 0, 0, 0, 0); |
| 562 observer_details_.ExpectEquals(root, folder1, 1, 0); | 562 observer_details_.ExpectEquals(root, folder1, 1, 0); |
| 563 EXPECT_TRUE(folder1 == node->parent()); | 563 EXPECT_TRUE(folder1 == node->parent()); |
| 564 EXPECT_EQ(1, root->child_count()); | 564 EXPECT_EQ(1, root->child_count()); |
| 565 EXPECT_EQ(folder1, root->GetChild(0)); | 565 EXPECT_EQ(folder1, root->GetChild(0)); |
| 566 EXPECT_EQ(1, folder1->child_count()); | 566 EXPECT_EQ(1, folder1->child_count()); |
| 567 EXPECT_EQ(node, folder1->GetChild(0)); | 567 EXPECT_EQ(node, folder1->GetChild(0)); |
| 568 | 568 |
| 569 // And remove the folder. | 569 // And remove the folder. |
| 570 ClearCounts(); | 570 ClearCounts(); |
| 571 model_.Remove(root, 0); | 571 model_.Remove(root, 0); |
| 572 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 572 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 573 observer_details_.ExpectEquals(root, NULL, 0, -1); | 573 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 574 EXPECT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); | 574 EXPECT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL); |
| 575 EXPECT_EQ(0, root->child_count()); | 575 EXPECT_EQ(0, root->child_count()); |
| 576 } | 576 } |
| 577 | 577 |
| 578 TEST_F(BookmarkModelTest, NonMovingMoveCall) { | 578 TEST_F(BookmarkModelTest, NonMovingMoveCall) { |
| 579 const BookmarkNode* root = model_.bookmark_bar_node(); | 579 const BookmarkNode* root = model_.bookmark_bar_node(); |
| 580 const string16 title(ASCIIToUTF16("foo")); | 580 const base::string16 title(ASCIIToUTF16("foo")); |
| 581 const GURL url("http://foo.com"); | 581 const GURL url("http://foo.com"); |
| 582 const base::Time old_date(base::Time::Now() - base::TimeDelta::FromDays(1)); | 582 const base::Time old_date(base::Time::Now() - base::TimeDelta::FromDays(1)); |
| 583 | 583 |
| 584 const BookmarkNode* node = model_.AddURL(root, 0, title, url); | 584 const BookmarkNode* node = model_.AddURL(root, 0, title, url); |
| 585 model_.SetDateFolderModified(root, old_date); | 585 model_.SetDateFolderModified(root, old_date); |
| 586 | 586 |
| 587 // Since |node| is already at the index 0 of |root|, this is no-op. | 587 // Since |node| is already at the index 0 of |root|, this is no-op. |
| 588 model_.Move(node, root, 0); | 588 model_.Move(node, root, 0); |
| 589 | 589 |
| 590 // Check that the modification date is kept untouched. | 590 // Check that the modification date is kept untouched. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 actual_model_string = test::ModelStringFromNode(root); | 643 actual_model_string = test::ModelStringFromNode(root); |
| 644 EXPECT_EQ("a 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] d 1:[ b d c ] " | 644 EXPECT_EQ("a 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] d 1:[ b d c ] " |
| 645 "d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ", | 645 "d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ", |
| 646 actual_model_string); | 646 actual_model_string); |
| 647 } | 647 } |
| 648 | 648 |
| 649 // Tests that adding a URL to a folder updates the last modified time. | 649 // Tests that adding a URL to a folder updates the last modified time. |
| 650 TEST_F(BookmarkModelTest, ParentForNewNodes) { | 650 TEST_F(BookmarkModelTest, ParentForNewNodes) { |
| 651 ASSERT_EQ(model_.bookmark_bar_node(), model_.GetParentForNewNodes()); | 651 ASSERT_EQ(model_.bookmark_bar_node(), model_.GetParentForNewNodes()); |
| 652 | 652 |
| 653 const string16 title(ASCIIToUTF16("foo")); | 653 const base::string16 title(ASCIIToUTF16("foo")); |
| 654 const GURL url("http://foo.com"); | 654 const GURL url("http://foo.com"); |
| 655 | 655 |
| 656 model_.AddURL(model_.other_node(), 0, title, url); | 656 model_.AddURL(model_.other_node(), 0, title, url); |
| 657 ASSERT_EQ(model_.other_node(), model_.GetParentForNewNodes()); | 657 ASSERT_EQ(model_.other_node(), model_.GetParentForNewNodes()); |
| 658 } | 658 } |
| 659 | 659 |
| 660 // Tests that adding a URL to a folder updates the last modified time. | 660 // Tests that adding a URL to a folder updates the last modified time. |
| 661 TEST_F(BookmarkModelTest, ParentForNewMobileNodes) { | 661 TEST_F(BookmarkModelTest, ParentForNewMobileNodes) { |
| 662 ASSERT_EQ(model_.bookmark_bar_node(), model_.GetParentForNewNodes()); | 662 ASSERT_EQ(model_.bookmark_bar_node(), model_.GetParentForNewNodes()); |
| 663 | 663 |
| 664 const string16 title(ASCIIToUTF16("foo")); | 664 const base::string16 title(ASCIIToUTF16("foo")); |
| 665 const GURL url("http://foo.com"); | 665 const GURL url("http://foo.com"); |
| 666 | 666 |
| 667 model_.AddURL(model_.mobile_node(), 0, title, url); | 667 model_.AddURL(model_.mobile_node(), 0, title, url); |
| 668 ASSERT_EQ(model_.mobile_node(), model_.GetParentForNewNodes()); | 668 ASSERT_EQ(model_.mobile_node(), model_.GetParentForNewNodes()); |
| 669 } | 669 } |
| 670 | 670 |
| 671 // Make sure recently modified stays in sync when adding a URL. | 671 // Make sure recently modified stays in sync when adding a URL. |
| 672 TEST_F(BookmarkModelTest, MostRecentlyModifiedFolders) { | 672 TEST_F(BookmarkModelTest, MostRecentlyModifiedFolders) { |
| 673 // Add a folder. | 673 // Add a folder. |
| 674 const BookmarkNode* folder = model_.AddFolder(model_.other_node(), 0, | 674 const BookmarkNode* folder = model_.AddFolder(model_.other_node(), 0, |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 ASSERT_EQ(n1, model_.GetMostRecentlyAddedNodeForURL(url)); | 752 ASSERT_EQ(n1, model_.GetMostRecentlyAddedNodeForURL(url)); |
| 753 | 753 |
| 754 // swap 1 and 2, then check again. | 754 // swap 1 and 2, then check again. |
| 755 SwapDateAdded(n1, n2); | 755 SwapDateAdded(n1, n2); |
| 756 ASSERT_EQ(n2, model_.GetMostRecentlyAddedNodeForURL(url)); | 756 ASSERT_EQ(n2, model_.GetMostRecentlyAddedNodeForURL(url)); |
| 757 } | 757 } |
| 758 | 758 |
| 759 // Makes sure GetBookmarks removes duplicates. | 759 // Makes sure GetBookmarks removes duplicates. |
| 760 TEST_F(BookmarkModelTest, GetBookmarksWithDups) { | 760 TEST_F(BookmarkModelTest, GetBookmarksWithDups) { |
| 761 const GURL url("http://foo.com/0"); | 761 const GURL url("http://foo.com/0"); |
| 762 const string16 title(ASCIIToUTF16("blah")); | 762 const base::string16 title(ASCIIToUTF16("blah")); |
| 763 model_.AddURL(model_.bookmark_bar_node(), 0, title, url); | 763 model_.AddURL(model_.bookmark_bar_node(), 0, title, url); |
| 764 model_.AddURL(model_.bookmark_bar_node(), 1, title, url); | 764 model_.AddURL(model_.bookmark_bar_node(), 1, title, url); |
| 765 | 765 |
| 766 std::vector<BookmarkService::URLAndTitle> bookmarks; | 766 std::vector<BookmarkService::URLAndTitle> bookmarks; |
| 767 model_.GetBookmarks(&bookmarks); | 767 model_.GetBookmarks(&bookmarks); |
| 768 ASSERT_EQ(1U, bookmarks.size()); | 768 ASSERT_EQ(1U, bookmarks.size()); |
| 769 EXPECT_EQ(url, bookmarks[0].url); | 769 EXPECT_EQ(url, bookmarks[0].url); |
| 770 EXPECT_EQ(title, bookmarks[0].title); | 770 EXPECT_EQ(title, bookmarks[0].title); |
| 771 | 771 |
| 772 model_.AddURL(model_.bookmark_bar_node(), 2, ASCIIToUTF16("Title2"), url); | 772 model_.AddURL(model_.bookmark_bar_node(), 2, ASCIIToUTF16("Title2"), url); |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1046 const BookmarkNode* parent = model_.bookmark_bar_node(); | 1046 const BookmarkNode* parent = model_.bookmark_bar_node(); |
| 1047 PopulateBookmarkNode(&bbn, &model_, parent); | 1047 PopulateBookmarkNode(&bbn, &model_, parent); |
| 1048 EXPECT_TRUE(parent->GetChild(0)->IsVisible()); | 1048 EXPECT_TRUE(parent->GetChild(0)->IsVisible()); |
| 1049 | 1049 |
| 1050 // Bookmark bar should be visible now that it has a child. | 1050 // Bookmark bar should be visible now that it has a child. |
| 1051 EXPECT_TRUE(model_.bookmark_bar_node()->IsVisible()); | 1051 EXPECT_TRUE(model_.bookmark_bar_node()->IsVisible()); |
| 1052 } | 1052 } |
| 1053 | 1053 |
| 1054 TEST_F(BookmarkModelTest, MobileNodeVisibileWithChildren) { | 1054 TEST_F(BookmarkModelTest, MobileNodeVisibileWithChildren) { |
| 1055 const BookmarkNode* root = model_.mobile_node(); | 1055 const BookmarkNode* root = model_.mobile_node(); |
| 1056 const string16 title(ASCIIToUTF16("foo")); | 1056 const base::string16 title(ASCIIToUTF16("foo")); |
| 1057 const GURL url("http://foo.com"); | 1057 const GURL url("http://foo.com"); |
| 1058 | 1058 |
| 1059 model_.AddURL(root, 0, title, url); | 1059 model_.AddURL(root, 0, title, url); |
| 1060 EXPECT_TRUE(model_.mobile_node()->IsVisible()); | 1060 EXPECT_TRUE(model_.mobile_node()->IsVisible()); |
| 1061 } | 1061 } |
| 1062 | 1062 |
| 1063 TEST_F(BookmarkModelTest, ExtensiveChangesObserver) { | 1063 TEST_F(BookmarkModelTest, ExtensiveChangesObserver) { |
| 1064 AssertExtensiveChangesObserverCount(0, 0); | 1064 AssertExtensiveChangesObserverCount(0, 0); |
| 1065 EXPECT_FALSE(model_.IsDoingExtensiveChanges()); | 1065 EXPECT_FALSE(model_.IsDoingExtensiveChanges()); |
| 1066 model_.BeginExtensiveChanges(); | 1066 model_.BeginExtensiveChanges(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1114 EXPECT_TRUE(node.DeleteMetaInfo("key2.subkey2.leaf")); | 1114 EXPECT_TRUE(node.DeleteMetaInfo("key2.subkey2.leaf")); |
| 1115 EXPECT_FALSE(node.DeleteMetaInfo("key3")); | 1115 EXPECT_FALSE(node.DeleteMetaInfo("key3")); |
| 1116 EXPECT_FALSE(node.GetMetaInfo("key1", &out_value)); | 1116 EXPECT_FALSE(node.GetMetaInfo("key1", &out_value)); |
| 1117 EXPECT_FALSE(node.GetMetaInfo("key2.subkey1", &out_value)); | 1117 EXPECT_FALSE(node.GetMetaInfo("key2.subkey1", &out_value)); |
| 1118 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2", &out_value)); | 1118 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2", &out_value)); |
| 1119 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2.leaf", &out_value)); | 1119 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2.leaf", &out_value)); |
| 1120 EXPECT_FALSE(node.GetMetaInfoMap()); | 1120 EXPECT_FALSE(node.GetMetaInfoMap()); |
| 1121 } | 1121 } |
| 1122 | 1122 |
| 1123 } // namespace | 1123 } // namespace |
| OLD | NEW |