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 |