| OLD | NEW |
| 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_model.h" | 5 #include "components/bookmarks/browser/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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 | 151 |
| 152 virtual void BookmarkNodeMoved(BookmarkModel* model, | 152 virtual void BookmarkNodeMoved(BookmarkModel* model, |
| 153 const BookmarkNode* old_parent, | 153 const BookmarkNode* old_parent, |
| 154 int old_index, | 154 int old_index, |
| 155 const BookmarkNode* new_parent, | 155 const BookmarkNode* new_parent, |
| 156 int new_index) OVERRIDE { | 156 int new_index) OVERRIDE { |
| 157 ++moved_count_; | 157 ++moved_count_; |
| 158 observer_details_.Set(old_parent, new_parent, old_index, new_index); | 158 observer_details_.Set(old_parent, new_parent, old_index, new_index); |
| 159 } | 159 } |
| 160 | 160 |
| 161 virtual void OnWillAddBookmarkNode(BookmarkModel* model, |
| 162 BookmarkNode* node) OVERRIDE { |
| 163 ++will_add_count_; |
| 164 EXPECT_TRUE(node->parent() == NULL); |
| 165 } |
| 166 |
| 161 virtual void BookmarkNodeAdded(BookmarkModel* model, | 167 virtual void BookmarkNodeAdded(BookmarkModel* model, |
| 162 const BookmarkNode* parent, | 168 const BookmarkNode* parent, |
| 163 int index) OVERRIDE { | 169 int index) OVERRIDE { |
| 164 ++added_count_; | 170 ++added_count_; |
| 165 observer_details_.Set(parent, NULL, index, -1); | 171 observer_details_.Set(parent, NULL, index, -1); |
| 166 } | 172 } |
| 167 | 173 |
| 168 virtual void OnWillRemoveBookmarks(BookmarkModel* model, | 174 virtual void OnWillRemoveBookmarks(BookmarkModel* model, |
| 169 const BookmarkNode* parent, | 175 const BookmarkNode* parent, |
| 170 int old_index, | 176 int old_index, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 BookmarkModel* model, | 229 BookmarkModel* model, |
| 224 const std::set<GURL>& removed_urls) OVERRIDE { | 230 const std::set<GURL>& removed_urls) OVERRIDE { |
| 225 ++all_bookmarks_removed_; | 231 ++all_bookmarks_removed_; |
| 226 } | 232 } |
| 227 | 233 |
| 228 virtual void OnWillRemoveAllUserBookmarks(BookmarkModel* model) OVERRIDE { | 234 virtual void OnWillRemoveAllUserBookmarks(BookmarkModel* model) OVERRIDE { |
| 229 ++before_remove_all_count_; | 235 ++before_remove_all_count_; |
| 230 } | 236 } |
| 231 | 237 |
| 232 void ClearCounts() { | 238 void ClearCounts() { |
| 233 added_count_ = moved_count_ = removed_count_ = changed_count_ = | 239 will_add_count_ = added_count_ = moved_count_ = removed_count_ = |
| 234 reordered_count_ = extensive_changes_beginning_count_ = | 240 changed_count_ = reordered_count_ = extensive_changes_beginning_count_ = |
| 235 extensive_changes_ended_count_ = all_bookmarks_removed_ = | 241 extensive_changes_ended_count_ = all_bookmarks_removed_ = |
| 236 before_remove_count_ = before_change_count_ = before_reorder_count_ = | 242 before_remove_count_ = before_change_count_ = before_reorder_count_ = |
| 237 before_remove_all_count_ = 0; | 243 before_remove_all_count_ = 0; |
| 238 } | 244 } |
| 239 | 245 |
| 240 void AssertObserverCount(int added_count, | 246 void AssertObserverCount(int will_add_count, |
| 247 int added_count, |
| 241 int moved_count, | 248 int moved_count, |
| 242 int removed_count, | 249 int removed_count, |
| 243 int changed_count, | 250 int changed_count, |
| 244 int reordered_count, | 251 int reordered_count, |
| 245 int before_remove_count, | 252 int before_remove_count, |
| 246 int before_change_count, | 253 int before_change_count, |
| 247 int before_reorder_count, | 254 int before_reorder_count, |
| 248 int before_remove_all_count) { | 255 int before_remove_all_count) { |
| 256 EXPECT_EQ(will_add_count_, will_add_count); |
| 249 EXPECT_EQ(added_count_, added_count); | 257 EXPECT_EQ(added_count_, added_count); |
| 250 EXPECT_EQ(moved_count_, moved_count); | 258 EXPECT_EQ(moved_count_, moved_count); |
| 251 EXPECT_EQ(removed_count_, removed_count); | 259 EXPECT_EQ(removed_count_, removed_count); |
| 252 EXPECT_EQ(changed_count_, changed_count); | 260 EXPECT_EQ(changed_count_, changed_count); |
| 253 EXPECT_EQ(reordered_count_, reordered_count); | 261 EXPECT_EQ(reordered_count_, reordered_count); |
| 254 EXPECT_EQ(before_remove_count_, before_remove_count); | 262 EXPECT_EQ(before_remove_count_, before_remove_count); |
| 255 EXPECT_EQ(before_change_count_, before_change_count); | 263 EXPECT_EQ(before_change_count_, before_change_count); |
| 256 EXPECT_EQ(before_reorder_count_, before_reorder_count); | 264 EXPECT_EQ(before_reorder_count_, before_reorder_count); |
| 257 EXPECT_EQ(before_remove_all_count_, before_remove_all_count); | 265 EXPECT_EQ(before_remove_all_count_, before_remove_all_count); |
| 258 } | 266 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 283 | 291 |
| 284 return extra_node; | 292 return extra_node; |
| 285 } | 293 } |
| 286 | 294 |
| 287 protected: | 295 protected: |
| 288 test::TestBookmarkClient client_; | 296 test::TestBookmarkClient client_; |
| 289 scoped_ptr<BookmarkModel> model_; | 297 scoped_ptr<BookmarkModel> model_; |
| 290 ObserverDetails observer_details_; | 298 ObserverDetails observer_details_; |
| 291 | 299 |
| 292 private: | 300 private: |
| 301 int will_add_count_; |
| 293 int added_count_; | 302 int added_count_; |
| 294 int moved_count_; | 303 int moved_count_; |
| 295 int removed_count_; | 304 int removed_count_; |
| 296 int changed_count_; | 305 int changed_count_; |
| 297 int reordered_count_; | 306 int reordered_count_; |
| 298 int extensive_changes_beginning_count_; | 307 int extensive_changes_beginning_count_; |
| 299 int extensive_changes_ended_count_; | 308 int extensive_changes_ended_count_; |
| 300 int all_bookmarks_removed_; | 309 int all_bookmarks_removed_; |
| 301 int before_remove_count_; | 310 int before_remove_count_; |
| 302 int before_change_count_; | 311 int before_change_count_; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 326 EXPECT_TRUE(bb_node->id() != mobile_node->id()); | 335 EXPECT_TRUE(bb_node->id() != mobile_node->id()); |
| 327 EXPECT_TRUE(other_node->id() != mobile_node->id()); | 336 EXPECT_TRUE(other_node->id() != mobile_node->id()); |
| 328 } | 337 } |
| 329 | 338 |
| 330 TEST_F(BookmarkModelTest, AddURL) { | 339 TEST_F(BookmarkModelTest, AddURL) { |
| 331 const BookmarkNode* root = model_->bookmark_bar_node(); | 340 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 332 const base::string16 title(ASCIIToUTF16("foo")); | 341 const base::string16 title(ASCIIToUTF16("foo")); |
| 333 const GURL url("http://foo.com"); | 342 const GURL url("http://foo.com"); |
| 334 | 343 |
| 335 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); | 344 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); |
| 336 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 345 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 337 observer_details_.ExpectEquals(root, NULL, 0, -1); | 346 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 338 | 347 |
| 339 ASSERT_EQ(1, root->child_count()); | 348 ASSERT_EQ(1, root->child_count()); |
| 340 ASSERT_EQ(title, new_node->GetTitle()); | 349 ASSERT_EQ(title, new_node->GetTitle()); |
| 341 ASSERT_TRUE(url == new_node->url()); | 350 ASSERT_TRUE(url == new_node->url()); |
| 342 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 351 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 343 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); | 352 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); |
| 344 | 353 |
| 345 EXPECT_TRUE(new_node->id() != root->id() && | 354 EXPECT_TRUE(new_node->id() != root->id() && |
| 346 new_node->id() != model_->other_node()->id() && | 355 new_node->id() != model_->other_node()->id() && |
| 347 new_node->id() != model_->mobile_node()->id()); | 356 new_node->id() != model_->mobile_node()->id()); |
| 348 } | 357 } |
| 349 | 358 |
| 350 TEST_F(BookmarkModelTest, AddURLWithUnicodeTitle) { | 359 TEST_F(BookmarkModelTest, AddURLWithUnicodeTitle) { |
| 351 const BookmarkNode* root = model_->bookmark_bar_node(); | 360 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 352 const base::string16 title(base::WideToUTF16( | 361 const base::string16 title(base::WideToUTF16( |
| 353 L"\u767e\u5ea6\u4e00\u4e0b\uff0c\u4f60\u5c31\u77e5\u9053")); | 362 L"\u767e\u5ea6\u4e00\u4e0b\uff0c\u4f60\u5c31\u77e5\u9053")); |
| 354 const GURL url("https://www.baidu.com/"); | 363 const GURL url("https://www.baidu.com/"); |
| 355 | 364 |
| 356 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); | 365 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); |
| 357 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 366 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 358 observer_details_.ExpectEquals(root, NULL, 0, -1); | 367 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 359 | 368 |
| 360 ASSERT_EQ(1, root->child_count()); | 369 ASSERT_EQ(1, root->child_count()); |
| 361 ASSERT_EQ(title, new_node->GetTitle()); | 370 ASSERT_EQ(title, new_node->GetTitle()); |
| 362 ASSERT_TRUE(url == new_node->url()); | 371 ASSERT_TRUE(url == new_node->url()); |
| 363 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 372 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 364 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); | 373 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); |
| 365 | 374 |
| 366 EXPECT_TRUE(new_node->id() != root->id() && | 375 EXPECT_TRUE(new_node->id() != root->id() && |
| 367 new_node->id() != model_->other_node()->id() && | 376 new_node->id() != model_->other_node()->id() && |
| (...skipping 20 matching lines...) Expand all Loading... |
| 388 TEST_F(BookmarkModelTest, AddURLWithCreationTimeAndMetaInfo) { | 397 TEST_F(BookmarkModelTest, AddURLWithCreationTimeAndMetaInfo) { |
| 389 const BookmarkNode* root = model_->bookmark_bar_node(); | 398 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 390 const base::string16 title(ASCIIToUTF16("foo")); | 399 const base::string16 title(ASCIIToUTF16("foo")); |
| 391 const GURL url("http://foo.com"); | 400 const GURL url("http://foo.com"); |
| 392 const Time time = Time::Now() - TimeDelta::FromDays(1); | 401 const Time time = Time::Now() - TimeDelta::FromDays(1); |
| 393 BookmarkNode::MetaInfoMap meta_info; | 402 BookmarkNode::MetaInfoMap meta_info; |
| 394 meta_info["foo"] = "bar"; | 403 meta_info["foo"] = "bar"; |
| 395 | 404 |
| 396 const BookmarkNode* new_node = model_->AddURLWithCreationTimeAndMetaInfo( | 405 const BookmarkNode* new_node = model_->AddURLWithCreationTimeAndMetaInfo( |
| 397 root, 0, title, url, time, &meta_info); | 406 root, 0, title, url, time, &meta_info); |
| 398 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 407 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 399 observer_details_.ExpectEquals(root, NULL, 0, -1); | 408 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 400 | 409 |
| 401 ASSERT_EQ(1, root->child_count()); | 410 ASSERT_EQ(1, root->child_count()); |
| 402 ASSERT_EQ(title, new_node->GetTitle()); | 411 ASSERT_EQ(title, new_node->GetTitle()); |
| 403 ASSERT_TRUE(url == new_node->url()); | 412 ASSERT_TRUE(url == new_node->url()); |
| 404 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 413 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 405 ASSERT_EQ(time, new_node->date_added()); | 414 ASSERT_EQ(time, new_node->date_added()); |
| 406 ASSERT_TRUE(new_node->GetMetaInfoMap()); | 415 ASSERT_TRUE(new_node->GetMetaInfoMap()); |
| 407 ASSERT_EQ(meta_info, *new_node->GetMetaInfoMap()); | 416 ASSERT_EQ(meta_info, *new_node->GetMetaInfoMap()); |
| 408 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); | 417 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); |
| 409 | 418 |
| 410 EXPECT_TRUE(new_node->id() != root->id() && | 419 EXPECT_TRUE(new_node->id() != root->id() && |
| 411 new_node->id() != model_->other_node()->id() && | 420 new_node->id() != model_->other_node()->id() && |
| 412 new_node->id() != model_->mobile_node()->id()); | 421 new_node->id() != model_->mobile_node()->id()); |
| 413 } | 422 } |
| 414 | 423 |
| 415 TEST_F(BookmarkModelTest, AddURLToMobileBookmarks) { | 424 TEST_F(BookmarkModelTest, AddURLToMobileBookmarks) { |
| 416 const BookmarkNode* root = model_->mobile_node(); | 425 const BookmarkNode* root = model_->mobile_node(); |
| 417 const base::string16 title(ASCIIToUTF16("foo")); | 426 const base::string16 title(ASCIIToUTF16("foo")); |
| 418 const GURL url("http://foo.com"); | 427 const GURL url("http://foo.com"); |
| 419 | 428 |
| 420 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); | 429 const BookmarkNode* new_node = model_->AddURL(root, 0, title, url); |
| 421 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 430 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 422 observer_details_.ExpectEquals(root, NULL, 0, -1); | 431 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 423 | 432 |
| 424 ASSERT_EQ(1, root->child_count()); | 433 ASSERT_EQ(1, root->child_count()); |
| 425 ASSERT_EQ(title, new_node->GetTitle()); | 434 ASSERT_EQ(title, new_node->GetTitle()); |
| 426 ASSERT_TRUE(url == new_node->url()); | 435 ASSERT_TRUE(url == new_node->url()); |
| 427 ASSERT_EQ(BookmarkNode::URL, new_node->type()); | 436 ASSERT_EQ(BookmarkNode::URL, new_node->type()); |
| 428 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); | 437 ASSERT_TRUE(new_node == model_->GetMostRecentlyAddedUserNodeForURL(url)); |
| 429 | 438 |
| 430 EXPECT_TRUE(new_node->id() != root->id() && | 439 EXPECT_TRUE(new_node->id() != root->id() && |
| 431 new_node->id() != model_->other_node()->id() && | 440 new_node->id() != model_->other_node()->id() && |
| 432 new_node->id() != model_->mobile_node()->id()); | 441 new_node->id() != model_->mobile_node()->id()); |
| 433 } | 442 } |
| 434 | 443 |
| 435 TEST_F(BookmarkModelTest, AddFolder) { | 444 TEST_F(BookmarkModelTest, AddFolder) { |
| 436 const BookmarkNode* root = model_->bookmark_bar_node(); | 445 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 437 const base::string16 title(ASCIIToUTF16("foo")); | 446 const base::string16 title(ASCIIToUTF16("foo")); |
| 438 | 447 |
| 439 const BookmarkNode* new_node = model_->AddFolder(root, 0, title); | 448 const BookmarkNode* new_node = model_->AddFolder(root, 0, title); |
| 440 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 449 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 441 observer_details_.ExpectEquals(root, NULL, 0, -1); | 450 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 442 | 451 |
| 443 ASSERT_EQ(1, root->child_count()); | 452 ASSERT_EQ(1, root->child_count()); |
| 444 ASSERT_EQ(title, new_node->GetTitle()); | 453 ASSERT_EQ(title, new_node->GetTitle()); |
| 445 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type()); | 454 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type()); |
| 446 | 455 |
| 447 EXPECT_TRUE(new_node->id() != root->id() && | 456 EXPECT_TRUE(new_node->id() != root->id() && |
| 448 new_node->id() != model_->other_node()->id() && | 457 new_node->id() != model_->other_node()->id() && |
| 449 new_node->id() != model_->mobile_node()->id()); | 458 new_node->id() != model_->mobile_node()->id()); |
| 450 | 459 |
| 451 // Add another folder, just to make sure folder_ids are incremented correctly. | 460 // Add another folder, just to make sure folder_ids are incremented correctly. |
| 452 ClearCounts(); | 461 ClearCounts(); |
| 453 model_->AddFolder(root, 0, title); | 462 model_->AddFolder(root, 0, title); |
| 454 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0); | 463 AssertObserverCount(1, 1, 0, 0, 0, 0, 0, 0, 0, 0); |
| 455 observer_details_.ExpectEquals(root, NULL, 0, -1); | 464 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 456 } | 465 } |
| 457 | 466 |
| 458 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) { | 467 TEST_F(BookmarkModelTest, AddFolderWithWhitespaceTitle) { |
| 459 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { | 468 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { |
| 460 const BookmarkNode* root = model_->bookmark_bar_node(); | 469 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 461 const base::string16 title( | 470 const base::string16 title( |
| 462 ASCIIToUTF16(title_whitespace_test_cases[i].input_title)); | 471 ASCIIToUTF16(title_whitespace_test_cases[i].input_title)); |
| 463 | 472 |
| 464 const BookmarkNode* new_node = model_->AddFolder(root, i, title); | 473 const BookmarkNode* new_node = model_->AddFolder(root, i, title); |
| 465 | 474 |
| 466 int size = i + 1; | 475 int size = i + 1; |
| 467 EXPECT_EQ(size, root->child_count()); | 476 EXPECT_EQ(size, root->child_count()); |
| 468 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), | 477 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), |
| 469 new_node->GetTitle()); | 478 new_node->GetTitle()); |
| 470 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type()); | 479 EXPECT_EQ(BookmarkNode::FOLDER, new_node->type()); |
| 471 } | 480 } |
| 472 } | 481 } |
| 473 | 482 |
| 474 TEST_F(BookmarkModelTest, RemoveURL) { | 483 TEST_F(BookmarkModelTest, RemoveURL) { |
| 475 const BookmarkNode* root = model_->bookmark_bar_node(); | 484 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 476 const base::string16 title(ASCIIToUTF16("foo")); | 485 const base::string16 title(ASCIIToUTF16("foo")); |
| 477 const GURL url("http://foo.com"); | 486 const GURL url("http://foo.com"); |
| 478 model_->AddURL(root, 0, title, url); | 487 model_->AddURL(root, 0, title, url); |
| 479 ClearCounts(); | 488 ClearCounts(); |
| 480 | 489 |
| 481 model_->Remove(root, 0); | 490 model_->Remove(root, 0); |
| 482 ASSERT_EQ(0, root->child_count()); | 491 ASSERT_EQ(0, root->child_count()); |
| 483 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 492 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 484 observer_details_.ExpectEquals(root, NULL, 0, -1); | 493 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 485 | 494 |
| 486 // Make sure there is no mapping for the URL. | 495 // Make sure there is no mapping for the URL. |
| 487 ASSERT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); | 496 ASSERT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); |
| 488 } | 497 } |
| 489 | 498 |
| 490 TEST_F(BookmarkModelTest, RemoveFolder) { | 499 TEST_F(BookmarkModelTest, RemoveFolder) { |
| 491 const BookmarkNode* root = model_->bookmark_bar_node(); | 500 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 492 const BookmarkNode* folder = model_->AddFolder(root, 0, ASCIIToUTF16("foo")); | 501 const BookmarkNode* folder = model_->AddFolder(root, 0, ASCIIToUTF16("foo")); |
| 493 | 502 |
| 494 ClearCounts(); | 503 ClearCounts(); |
| 495 | 504 |
| 496 // Add a URL as a child. | 505 // Add a URL as a child. |
| 497 const base::string16 title(ASCIIToUTF16("foo")); | 506 const base::string16 title(ASCIIToUTF16("foo")); |
| 498 const GURL url("http://foo.com"); | 507 const GURL url("http://foo.com"); |
| 499 model_->AddURL(folder, 0, title, url); | 508 model_->AddURL(folder, 0, title, url); |
| 500 | 509 |
| 501 ClearCounts(); | 510 ClearCounts(); |
| 502 | 511 |
| 503 // Now remove the folder. | 512 // Now remove the folder. |
| 504 model_->Remove(root, 0); | 513 model_->Remove(root, 0); |
| 505 ASSERT_EQ(0, root->child_count()); | 514 ASSERT_EQ(0, root->child_count()); |
| 506 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 515 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 507 observer_details_.ExpectEquals(root, NULL, 0, -1); | 516 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 508 | 517 |
| 509 // Make sure there is no mapping for the URL. | 518 // Make sure there is no mapping for the URL. |
| 510 ASSERT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); | 519 ASSERT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); |
| 511 } | 520 } |
| 512 | 521 |
| 513 TEST_F(BookmarkModelTest, RemoveAllUserBookmarks) { | 522 TEST_F(BookmarkModelTest, RemoveAllUserBookmarks) { |
| 514 const BookmarkNode* bookmark_bar_node = model_->bookmark_bar_node(); | 523 const BookmarkNode* bookmark_bar_node = model_->bookmark_bar_node(); |
| 515 | 524 |
| 516 ClearCounts(); | 525 ClearCounts(); |
| 517 | 526 |
| 518 // Add a url to bookmark bar. | 527 // Add a url to bookmark bar. |
| 519 base::string16 title(ASCIIToUTF16("foo")); | 528 base::string16 title(ASCIIToUTF16("foo")); |
| 520 GURL url("http://foo.com"); | 529 GURL url("http://foo.com"); |
| 521 model_->AddURL(bookmark_bar_node, 0, title, url); | 530 model_->AddURL(bookmark_bar_node, 0, title, url); |
| 522 | 531 |
| 523 // Add a folder with child URL. | 532 // Add a folder with child URL. |
| 524 const BookmarkNode* folder = model_->AddFolder(bookmark_bar_node, 0, title); | 533 const BookmarkNode* folder = model_->AddFolder(bookmark_bar_node, 0, title); |
| 525 model_->AddURL(folder, 0, title, url); | 534 model_->AddURL(folder, 0, title, url); |
| 526 | 535 |
| 527 AssertObserverCount(3, 0, 0, 0, 0, 0, 0, 0, 0); | 536 AssertObserverCount(3, 3, 0, 0, 0, 0, 0, 0, 0, 0); |
| 528 ClearCounts(); | 537 ClearCounts(); |
| 529 | 538 |
| 530 model_->RemoveAllUserBookmarks(); | 539 model_->RemoveAllUserBookmarks(); |
| 531 | 540 |
| 532 EXPECT_EQ(0, bookmark_bar_node->child_count()); | 541 EXPECT_EQ(0, bookmark_bar_node->child_count()); |
| 533 // No individual BookmarkNodeRemoved events are fired, so removed count | 542 // No individual BookmarkNodeRemoved events are fired, so removed count |
| 534 // should be 0. | 543 // should be 0. |
| 535 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 1); | 544 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0, 1); |
| 536 AssertExtensiveChangesObserverCount(1, 1); | 545 AssertExtensiveChangesObserverCount(1, 1); |
| 537 EXPECT_EQ(1, AllNodesRemovedObserverCount()); | 546 EXPECT_EQ(1, AllNodesRemovedObserverCount()); |
| 538 } | 547 } |
| 539 | 548 |
| 540 TEST_F(BookmarkModelTest, SetTitle) { | 549 TEST_F(BookmarkModelTest, SetTitle) { |
| 541 const BookmarkNode* root = model_->bookmark_bar_node(); | 550 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 542 base::string16 title(ASCIIToUTF16("foo")); | 551 base::string16 title(ASCIIToUTF16("foo")); |
| 543 const GURL url("http://foo.com"); | 552 const GURL url("http://foo.com"); |
| 544 const BookmarkNode* node = model_->AddURL(root, 0, title, url); | 553 const BookmarkNode* node = model_->AddURL(root, 0, title, url); |
| 545 | 554 |
| 546 ClearCounts(); | 555 ClearCounts(); |
| 547 | 556 |
| 548 title = ASCIIToUTF16("foo2"); | 557 title = ASCIIToUTF16("foo2"); |
| 549 model_->SetTitle(node, title); | 558 model_->SetTitle(node, title); |
| 550 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); | 559 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 1, 0, 0); |
| 551 observer_details_.ExpectEquals(node, NULL, -1, -1); | 560 observer_details_.ExpectEquals(node, NULL, -1, -1); |
| 552 EXPECT_EQ(title, node->GetTitle()); | 561 EXPECT_EQ(title, node->GetTitle()); |
| 553 } | 562 } |
| 554 | 563 |
| 555 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) { | 564 TEST_F(BookmarkModelTest, SetTitleWithWhitespace) { |
| 556 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { | 565 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(title_whitespace_test_cases); ++i) { |
| 557 const BookmarkNode* root = model_->bookmark_bar_node(); | 566 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 558 base::string16 title(ASCIIToUTF16("dummy")); | 567 base::string16 title(ASCIIToUTF16("dummy")); |
| 559 const GURL url("http://foo.com"); | 568 const GURL url("http://foo.com"); |
| 560 const BookmarkNode* node = model_->AddURL(root, 0, title, url); | 569 const BookmarkNode* node = model_->AddURL(root, 0, title, url); |
| 561 | 570 |
| 562 title = ASCIIToUTF16(title_whitespace_test_cases[i].input_title); | 571 title = ASCIIToUTF16(title_whitespace_test_cases[i].input_title); |
| 563 model_->SetTitle(node, title); | 572 model_->SetTitle(node, title); |
| 564 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), | 573 EXPECT_EQ(ASCIIToUTF16(title_whitespace_test_cases[i].expected_title), |
| 565 node->GetTitle()); | 574 node->GetTitle()); |
| 566 } | 575 } |
| 567 } | 576 } |
| 568 | 577 |
| 569 TEST_F(BookmarkModelTest, SetURL) { | 578 TEST_F(BookmarkModelTest, SetURL) { |
| 570 const BookmarkNode* root = model_->bookmark_bar_node(); | 579 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 571 const base::string16 title(ASCIIToUTF16("foo")); | 580 const base::string16 title(ASCIIToUTF16("foo")); |
| 572 GURL url("http://foo.com"); | 581 GURL url("http://foo.com"); |
| 573 const BookmarkNode* node = model_->AddURL(root, 0, title, url); | 582 const BookmarkNode* node = model_->AddURL(root, 0, title, url); |
| 574 | 583 |
| 575 ClearCounts(); | 584 ClearCounts(); |
| 576 | 585 |
| 577 url = GURL("http://foo2.com"); | 586 url = GURL("http://foo2.com"); |
| 578 model_->SetURL(node, url); | 587 model_->SetURL(node, url); |
| 579 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0); | 588 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 1, 0, 0); |
| 580 observer_details_.ExpectEquals(node, NULL, -1, -1); | 589 observer_details_.ExpectEquals(node, NULL, -1, -1); |
| 581 EXPECT_EQ(url, node->url()); | 590 EXPECT_EQ(url, node->url()); |
| 582 } | 591 } |
| 583 | 592 |
| 584 TEST_F(BookmarkModelTest, SetDateAdded) { | 593 TEST_F(BookmarkModelTest, SetDateAdded) { |
| 585 const BookmarkNode* root = model_->bookmark_bar_node(); | 594 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 586 const base::string16 title(ASCIIToUTF16("foo")); | 595 const base::string16 title(ASCIIToUTF16("foo")); |
| 587 GURL url("http://foo.com"); | 596 GURL url("http://foo.com"); |
| 588 const BookmarkNode* node = model_->AddURL(root, 0, title, url); | 597 const BookmarkNode* node = model_->AddURL(root, 0, title, url); |
| 589 | 598 |
| 590 ClearCounts(); | 599 ClearCounts(); |
| 591 | 600 |
| 592 base::Time new_time = base::Time::Now() + base::TimeDelta::FromMinutes(20); | 601 base::Time new_time = base::Time::Now() + base::TimeDelta::FromMinutes(20); |
| 593 model_->SetDateAdded(node, new_time); | 602 model_->SetDateAdded(node, new_time); |
| 594 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0); | 603 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0, 0); |
| 595 EXPECT_EQ(new_time, node->date_added()); | 604 EXPECT_EQ(new_time, node->date_added()); |
| 596 EXPECT_EQ(new_time, model_->bookmark_bar_node()->date_folder_modified()); | 605 EXPECT_EQ(new_time, model_->bookmark_bar_node()->date_folder_modified()); |
| 597 } | 606 } |
| 598 | 607 |
| 599 TEST_F(BookmarkModelTest, Move) { | 608 TEST_F(BookmarkModelTest, Move) { |
| 600 const BookmarkNode* root = model_->bookmark_bar_node(); | 609 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 601 const base::string16 title(ASCIIToUTF16("foo")); | 610 const base::string16 title(ASCIIToUTF16("foo")); |
| 602 const GURL url("http://foo.com"); | 611 const GURL url("http://foo.com"); |
| 603 const BookmarkNode* node = model_->AddURL(root, 0, title, url); | 612 const BookmarkNode* node = model_->AddURL(root, 0, title, url); |
| 604 const BookmarkNode* folder1 = model_->AddFolder(root, 0, ASCIIToUTF16("foo")); | 613 const BookmarkNode* folder1 = model_->AddFolder(root, 0, ASCIIToUTF16("foo")); |
| 605 ClearCounts(); | 614 ClearCounts(); |
| 606 | 615 |
| 607 model_->Move(node, folder1, 0); | 616 model_->Move(node, folder1, 0); |
| 608 | 617 |
| 609 AssertObserverCount(0, 1, 0, 0, 0, 0, 0, 0, 0); | 618 AssertObserverCount(0, 0, 1, 0, 0, 0, 0, 0, 0, 0); |
| 610 observer_details_.ExpectEquals(root, folder1, 1, 0); | 619 observer_details_.ExpectEquals(root, folder1, 1, 0); |
| 611 EXPECT_TRUE(folder1 == node->parent()); | 620 EXPECT_TRUE(folder1 == node->parent()); |
| 612 EXPECT_EQ(1, root->child_count()); | 621 EXPECT_EQ(1, root->child_count()); |
| 613 EXPECT_EQ(folder1, root->GetChild(0)); | 622 EXPECT_EQ(folder1, root->GetChild(0)); |
| 614 EXPECT_EQ(1, folder1->child_count()); | 623 EXPECT_EQ(1, folder1->child_count()); |
| 615 EXPECT_EQ(node, folder1->GetChild(0)); | 624 EXPECT_EQ(node, folder1->GetChild(0)); |
| 616 | 625 |
| 617 // And remove the folder. | 626 // And remove the folder. |
| 618 ClearCounts(); | 627 ClearCounts(); |
| 619 model_->Remove(root, 0); | 628 model_->Remove(root, 0); |
| 620 AssertObserverCount(0, 0, 1, 0, 0, 1, 0, 0, 0); | 629 AssertObserverCount(0, 0, 0, 1, 0, 0, 1, 0, 0, 0); |
| 621 observer_details_.ExpectEquals(root, NULL, 0, -1); | 630 observer_details_.ExpectEquals(root, NULL, 0, -1); |
| 622 EXPECT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); | 631 EXPECT_TRUE(model_->GetMostRecentlyAddedUserNodeForURL(url) == NULL); |
| 623 EXPECT_EQ(0, root->child_count()); | 632 EXPECT_EQ(0, root->child_count()); |
| 624 } | 633 } |
| 625 | 634 |
| 626 TEST_F(BookmarkModelTest, NonMovingMoveCall) { | 635 TEST_F(BookmarkModelTest, NonMovingMoveCall) { |
| 627 const BookmarkNode* root = model_->bookmark_bar_node(); | 636 const BookmarkNode* root = model_->bookmark_bar_node(); |
| 628 const base::string16 title(ASCIIToUTF16("foo")); | 637 const base::string16 title(ASCIIToUTF16("foo")); |
| 629 const GURL url("http://foo.com"); | 638 const GURL url("http://foo.com"); |
| 630 const base::Time old_date(base::Time::Now() - base::TimeDelta::FromDays(1)); | 639 const base::Time old_date(base::Time::Now() - base::TimeDelta::FromDays(1)); |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1004 BookmarkNode* child3 = AsMutable(parent->GetChild(3)); | 1013 BookmarkNode* child3 = AsMutable(parent->GetChild(3)); |
| 1005 child3->SetTitle(ASCIIToUTF16("C")); | 1014 child3->SetTitle(ASCIIToUTF16("C")); |
| 1006 delete child3->Remove(child3->GetChild(0)); | 1015 delete child3->Remove(child3->GetChild(0)); |
| 1007 | 1016 |
| 1008 ClearCounts(); | 1017 ClearCounts(); |
| 1009 | 1018 |
| 1010 // Sort the children of the bookmark bar node. | 1019 // Sort the children of the bookmark bar node. |
| 1011 model_->SortChildren(parent); | 1020 model_->SortChildren(parent); |
| 1012 | 1021 |
| 1013 // Make sure we were notified. | 1022 // Make sure we were notified. |
| 1014 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 1, 0); | 1023 AssertObserverCount(0, 0, 0, 0, 0, 1, 0, 0, 1, 0); |
| 1015 | 1024 |
| 1016 // Make sure the order matches (remember, 'a' and 'C' are folders and | 1025 // Make sure the order matches (remember, 'a' and 'C' are folders and |
| 1017 // come first). | 1026 // come first). |
| 1018 EXPECT_EQ(parent->GetChild(0)->GetTitle(), ASCIIToUTF16("a")); | 1027 EXPECT_EQ(parent->GetChild(0)->GetTitle(), ASCIIToUTF16("a")); |
| 1019 EXPECT_EQ(parent->GetChild(1)->GetTitle(), ASCIIToUTF16("C")); | 1028 EXPECT_EQ(parent->GetChild(1)->GetTitle(), ASCIIToUTF16("C")); |
| 1020 EXPECT_EQ(parent->GetChild(2)->GetTitle(), ASCIIToUTF16("B")); | 1029 EXPECT_EQ(parent->GetChild(2)->GetTitle(), ASCIIToUTF16("B")); |
| 1021 EXPECT_EQ(parent->GetChild(3)->GetTitle(), ASCIIToUTF16("d")); | 1030 EXPECT_EQ(parent->GetChild(3)->GetTitle(), ASCIIToUTF16("d")); |
| 1022 } | 1031 } |
| 1023 | 1032 |
| 1024 TEST_F(BookmarkModelTest, Reorder) { | 1033 TEST_F(BookmarkModelTest, Reorder) { |
| 1025 // Populate the bookmark bar node with nodes 'A', 'B', 'C' and 'D'. | 1034 // Populate the bookmark bar node with nodes 'A', 'B', 'C' and 'D'. |
| 1026 TestNode bbn; | 1035 TestNode bbn; |
| 1027 PopulateNodeFromString("A B C D", &bbn); | 1036 PopulateNodeFromString("A B C D", &bbn); |
| 1028 BookmarkNode* parent = AsMutable(model_->bookmark_bar_node()); | 1037 BookmarkNode* parent = AsMutable(model_->bookmark_bar_node()); |
| 1029 PopulateBookmarkNode(&bbn, model_.get(), parent); | 1038 PopulateBookmarkNode(&bbn, model_.get(), parent); |
| 1030 | 1039 |
| 1031 ClearCounts(); | 1040 ClearCounts(); |
| 1032 | 1041 |
| 1033 // Reorder bar node's bookmarks in reverse order. | 1042 // Reorder bar node's bookmarks in reverse order. |
| 1034 std::vector<const BookmarkNode*> new_order; | 1043 std::vector<const BookmarkNode*> new_order; |
| 1035 new_order.push_back(parent->GetChild(3)); | 1044 new_order.push_back(parent->GetChild(3)); |
| 1036 new_order.push_back(parent->GetChild(2)); | 1045 new_order.push_back(parent->GetChild(2)); |
| 1037 new_order.push_back(parent->GetChild(1)); | 1046 new_order.push_back(parent->GetChild(1)); |
| 1038 new_order.push_back(parent->GetChild(0)); | 1047 new_order.push_back(parent->GetChild(0)); |
| 1039 model_->ReorderChildren(parent, new_order); | 1048 model_->ReorderChildren(parent, new_order); |
| 1040 | 1049 |
| 1041 // Make sure we were notified. | 1050 // Make sure we were notified. |
| 1042 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 1, 0); | 1051 AssertObserverCount(0, 0, 0, 0, 0, 1, 0, 0, 1, 0); |
| 1043 | 1052 |
| 1044 // Make sure the order matches is correct (it should be reversed). | 1053 // Make sure the order matches is correct (it should be reversed). |
| 1045 ASSERT_EQ(4, parent->child_count()); | 1054 ASSERT_EQ(4, parent->child_count()); |
| 1046 EXPECT_EQ("D", base::UTF16ToASCII(parent->GetChild(0)->GetTitle())); | 1055 EXPECT_EQ("D", base::UTF16ToASCII(parent->GetChild(0)->GetTitle())); |
| 1047 EXPECT_EQ("C", base::UTF16ToASCII(parent->GetChild(1)->GetTitle())); | 1056 EXPECT_EQ("C", base::UTF16ToASCII(parent->GetChild(1)->GetTitle())); |
| 1048 EXPECT_EQ("B", base::UTF16ToASCII(parent->GetChild(2)->GetTitle())); | 1057 EXPECT_EQ("B", base::UTF16ToASCII(parent->GetChild(2)->GetTitle())); |
| 1049 EXPECT_EQ("A", base::UTF16ToASCII(parent->GetChild(3)->GetTitle())); | 1058 EXPECT_EQ("A", base::UTF16ToASCII(parent->GetChild(3)->GetTitle())); |
| 1050 } | 1059 } |
| 1051 | 1060 |
| 1052 TEST_F(BookmarkModelTest, NodeVisibility) { | 1061 TEST_F(BookmarkModelTest, NodeVisibility) { |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1194 EXPECT_TRUE(node.DeleteMetaInfo("key2.subkey2.leaf")); | 1203 EXPECT_TRUE(node.DeleteMetaInfo("key2.subkey2.leaf")); |
| 1195 EXPECT_FALSE(node.DeleteMetaInfo("key3")); | 1204 EXPECT_FALSE(node.DeleteMetaInfo("key3")); |
| 1196 EXPECT_FALSE(node.GetMetaInfo("key1", &out_value)); | 1205 EXPECT_FALSE(node.GetMetaInfo("key1", &out_value)); |
| 1197 EXPECT_FALSE(node.GetMetaInfo("key2.subkey1", &out_value)); | 1206 EXPECT_FALSE(node.GetMetaInfo("key2.subkey1", &out_value)); |
| 1198 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2", &out_value)); | 1207 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2", &out_value)); |
| 1199 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2.leaf", &out_value)); | 1208 EXPECT_FALSE(node.GetMetaInfo("key2.subkey2.leaf", &out_value)); |
| 1200 EXPECT_FALSE(node.GetMetaInfoMap()); | 1209 EXPECT_FALSE(node.GetMetaInfoMap()); |
| 1201 } | 1210 } |
| 1202 | 1211 |
| 1203 } // namespace | 1212 } // namespace |
| OLD | NEW |