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 |