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