Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Side by Side Diff: components/undo/bookmark_undo_service_test.cc

Issue 1229063002: Add BookmarkUndoServiceTest.UndoRemoveFolderWithSubfolders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't set sub_folder1* (now unused) Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/undo/bookmark_undo_service.h" 5 #include "components/undo/bookmark_undo_service.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/bookmarks/browser/bookmark_model.h" 8 #include "components/bookmarks/browser/bookmark_model.h"
9 #include "components/bookmarks/test/bookmark_test_helpers.h" 9 #include "components/bookmarks/test/bookmark_test_helpers.h"
10 #include "components/bookmarks/test/test_bookmark_client.h" 10 #include "components/bookmarks/test/test_bookmark_client.h"
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 undo_service->undo_manager()->Undo(); 387 undo_service->undo_manager()->Undo();
388 388
389 ASSERT_EQ(1, model->other_node()->child_count()); 389 ASSERT_EQ(1, model->other_node()->child_count());
390 new_folder = model->other_node()->GetChild(0); 390 new_folder = model->other_node()->GetChild(0);
391 EXPECT_EQ(1, new_folder->child_count()); 391 EXPECT_EQ(1, new_folder->child_count());
392 node = new_folder->GetChild(0); 392 node = new_folder->GetChild(0);
393 EXPECT_EQ(node->GetTitle(), ASCIIToUTF16("bar")); 393 EXPECT_EQ(node->GetTitle(), ASCIIToUTF16("bar"));
394 EXPECT_EQ(node->url(), GURL("http://www.bar.com")); 394 EXPECT_EQ(node->url(), GURL("http://www.bar.com"));
395 } 395 }
396 396
397 TEST_F(BookmarkUndoServiceTest, UndoRemoveFolderWithSubfolders) {
398 BookmarkModel* model = GetModel();
399 BookmarkUndoService* undo_service = GetUndoService();
400
401 // Setup bookmarks in the Other Bookmarks with the following structure:
402 // folder
403 // subfolder1
404 // subfolder2
405 // bar - http://www.bar.com
406 // This setup of multiple subfolders where the first subfolder has 0 children
407 // is designed specifically to ensure we do not crash in this scenario and
408 // that bookmarks are restored to the proper subfolder. See crbug.com/474123.
409 const BookmarkNode* parent = model->other_node();
410 const BookmarkNode* new_folder = model->AddFolder(
411 parent, 0, ASCIIToUTF16("folder"));
412 model->AddFolder(new_folder, 0, ASCIIToUTF16("subfolder1"));
413 const BookmarkNode* sub_folder2 = model->AddFolder(
414 new_folder, 1, ASCIIToUTF16("subfolder2"));
415 model->AddURL(sub_folder2, 0, ASCIIToUTF16("bar"),
416 GURL("http://www.bar.com"));
417
418 model->Remove(parent->GetChild(0));
419
420 // Test that the undo restores the subfolders and their contents.
421 undo_service->undo_manager()->Undo();
422
423 ASSERT_EQ(1, model->other_node()->child_count());
424 const BookmarkNode* restored_new_folder = model->other_node()->GetChild(0);
425 EXPECT_EQ(2, restored_new_folder->child_count());
426
427 const BookmarkNode* restored_sub_folder1 = restored_new_folder->GetChild(0);
428 EXPECT_EQ(ASCIIToUTF16("subfolder1"), restored_sub_folder1->GetTitle());
429 EXPECT_EQ(0, restored_sub_folder1->child_count());
430
431 const BookmarkNode* restored_sub_folder2 = restored_new_folder->GetChild(1);
432 EXPECT_EQ(ASCIIToUTF16("subfolder2"), restored_sub_folder2->GetTitle());
433 EXPECT_EQ(1, restored_sub_folder2->child_count());
434
435 const BookmarkNode* node = restored_sub_folder2->GetChild(0);
436 EXPECT_EQ(node->GetTitle(), ASCIIToUTF16("bar"));
437 EXPECT_EQ(node->url(), GURL("http://www.bar.com"));
438 }
439
397 TEST_F(BookmarkUndoServiceTest, TestUpperLimit) { 440 TEST_F(BookmarkUndoServiceTest, TestUpperLimit) {
398 BookmarkModel* model = GetModel(); 441 BookmarkModel* model = GetModel();
399 BookmarkUndoService* undo_service = GetUndoService(); 442 BookmarkUndoService* undo_service = GetUndoService();
400 443
401 // This maximum is set in undo_manager.cc 444 // This maximum is set in undo_manager.cc
402 const size_t kMaxUndoGroups = 100; 445 const size_t kMaxUndoGroups = 100;
403 446
404 const BookmarkNode* parent = model->other_node(); 447 const BookmarkNode* parent = model->other_node();
405 model->AddURL(parent, 0, ASCIIToUTF16("foo"), GURL("http://www.foo.com")); 448 model->AddURL(parent, 0, ASCIIToUTF16("foo"), GURL("http://www.foo.com"));
406 for (size_t i = 1; i < kMaxUndoGroups + 1; ++i) 449 for (size_t i = 1; i < kMaxUndoGroups + 1; ++i)
407 model->AddURL(parent, i, ASCIIToUTF16("bar"), GURL("http://www.bar.com")); 450 model->AddURL(parent, i, ASCIIToUTF16("bar"), GURL("http://www.bar.com"));
408 451
409 EXPECT_EQ(kMaxUndoGroups, undo_service->undo_manager()->undo_count()); 452 EXPECT_EQ(kMaxUndoGroups, undo_service->undo_manager()->undo_count());
410 453
411 // Undo as many operations as possible. 454 // Undo as many operations as possible.
412 while (undo_service->undo_manager()->undo_count()) 455 while (undo_service->undo_manager()->undo_count())
413 undo_service->undo_manager()->Undo(); 456 undo_service->undo_manager()->Undo();
414 457
415 EXPECT_EQ(1, parent->child_count()); 458 EXPECT_EQ(1, parent->child_count());
416 const BookmarkNode* node = model->other_node()->GetChild(0); 459 const BookmarkNode* node = model->other_node()->GetChild(0);
417 EXPECT_EQ(node->GetTitle(), ASCIIToUTF16("foo")); 460 EXPECT_EQ(node->GetTitle(), ASCIIToUTF16("foo"));
418 EXPECT_EQ(node->url(), GURL("http://www.foo.com")); 461 EXPECT_EQ(node->url(), GURL("http://www.foo.com"));
419 } 462 }
420 463
421 } // namespace 464 } // namespace
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698