| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/toolbar/back_forward_menu_model.h" | 5 #include "chrome/browser/ui/toolbar/back_forward_menu_model.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/strings/string16.h" | 8 #include "base/strings/string16.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 controller().GoBack(); | 99 controller().GoBack(); |
| 100 WebContentsTester::For(web_contents())->CommitPendingNavigation(); | 100 WebContentsTester::For(web_contents())->CommitPendingNavigation(); |
| 101 } | 101 } |
| 102 void GoForward() { | 102 void GoForward() { |
| 103 controller().GoForward(); | 103 controller().GoForward(); |
| 104 WebContentsTester::For(web_contents())->CommitPendingNavigation(); | 104 WebContentsTester::For(web_contents())->CommitPendingNavigation(); |
| 105 } | 105 } |
| 106 }; | 106 }; |
| 107 | 107 |
| 108 TEST_F(BackFwdMenuModelTest, BasicCase) { | 108 TEST_F(BackFwdMenuModelTest, BasicCase) { |
| 109 scoped_ptr<BackForwardMenuModel> back_model(new BackForwardMenuModel( | 109 std::unique_ptr<BackForwardMenuModel> back_model( |
| 110 NULL, BackForwardMenuModel::BACKWARD_MENU)); | 110 new BackForwardMenuModel(NULL, BackForwardMenuModel::BACKWARD_MENU)); |
| 111 back_model->set_test_web_contents(web_contents()); | 111 back_model->set_test_web_contents(web_contents()); |
| 112 | 112 |
| 113 scoped_ptr<BackForwardMenuModel> forward_model(new BackForwardMenuModel( | 113 std::unique_ptr<BackForwardMenuModel> forward_model( |
| 114 NULL, BackForwardMenuModel::FORWARD_MENU)); | 114 new BackForwardMenuModel(NULL, BackForwardMenuModel::FORWARD_MENU)); |
| 115 forward_model->set_test_web_contents(web_contents()); | 115 forward_model->set_test_web_contents(web_contents()); |
| 116 | 116 |
| 117 EXPECT_EQ(0, back_model->GetItemCount()); | 117 EXPECT_EQ(0, back_model->GetItemCount()); |
| 118 EXPECT_EQ(0, forward_model->GetItemCount()); | 118 EXPECT_EQ(0, forward_model->GetItemCount()); |
| 119 EXPECT_FALSE(back_model->ItemHasCommand(1)); | 119 EXPECT_FALSE(back_model->ItemHasCommand(1)); |
| 120 | 120 |
| 121 // Seed the controller with a few URLs | 121 // Seed the controller with a few URLs |
| 122 LoadURLAndUpdateState("http://www.a.com/1", "A1"); | 122 LoadURLAndUpdateState("http://www.a.com/1", "A1"); |
| 123 LoadURLAndUpdateState("http://www.a.com/2", "A2"); | 123 LoadURLAndUpdateState("http://www.a.com/2", "A2"); |
| 124 LoadURLAndUpdateState("http://www.a.com/3", "A3"); | 124 LoadURLAndUpdateState("http://www.a.com/3", "A3"); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 EXPECT_EQ(ASCIIToUTF16("A1"), back_model->GetLabelAt(3)); | 167 EXPECT_EQ(ASCIIToUTF16("A1"), back_model->GetLabelAt(3)); |
| 168 EXPECT_EQ(back_model->GetShowFullHistoryLabel(), | 168 EXPECT_EQ(back_model->GetShowFullHistoryLabel(), |
| 169 back_model->GetLabelAt(5)); | 169 back_model->GetLabelAt(5)); |
| 170 EXPECT_EQ(ASCIIToUTF16("C1"), forward_model->GetLabelAt(0)); | 170 EXPECT_EQ(ASCIIToUTF16("C1"), forward_model->GetLabelAt(0)); |
| 171 EXPECT_EQ(ASCIIToUTF16("C3"), forward_model->GetLabelAt(2)); | 171 EXPECT_EQ(ASCIIToUTF16("C3"), forward_model->GetLabelAt(2)); |
| 172 EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), | 172 EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), |
| 173 forward_model->GetLabelAt(4)); | 173 forward_model->GetLabelAt(4)); |
| 174 } | 174 } |
| 175 | 175 |
| 176 TEST_F(BackFwdMenuModelTest, MaxItemsTest) { | 176 TEST_F(BackFwdMenuModelTest, MaxItemsTest) { |
| 177 scoped_ptr<BackForwardMenuModel> back_model(new BackForwardMenuModel( | 177 std::unique_ptr<BackForwardMenuModel> back_model( |
| 178 NULL, BackForwardMenuModel::BACKWARD_MENU)); | 178 new BackForwardMenuModel(NULL, BackForwardMenuModel::BACKWARD_MENU)); |
| 179 back_model->set_test_web_contents(web_contents()); | 179 back_model->set_test_web_contents(web_contents()); |
| 180 | 180 |
| 181 scoped_ptr<BackForwardMenuModel> forward_model(new BackForwardMenuModel( | 181 std::unique_ptr<BackForwardMenuModel> forward_model( |
| 182 NULL, BackForwardMenuModel::FORWARD_MENU)); | 182 new BackForwardMenuModel(NULL, BackForwardMenuModel::FORWARD_MENU)); |
| 183 forward_model->set_test_web_contents(web_contents()); | 183 forward_model->set_test_web_contents(web_contents()); |
| 184 | 184 |
| 185 // Seed the controller with 32 URLs | 185 // Seed the controller with 32 URLs |
| 186 LoadURLAndUpdateState("http://www.a.com/1", "A1"); | 186 LoadURLAndUpdateState("http://www.a.com/1", "A1"); |
| 187 LoadURLAndUpdateState("http://www.a.com/2", "A2"); | 187 LoadURLAndUpdateState("http://www.a.com/2", "A2"); |
| 188 LoadURLAndUpdateState("http://www.a.com/3", "A3"); | 188 LoadURLAndUpdateState("http://www.a.com/3", "A3"); |
| 189 LoadURLAndUpdateState("http://www.b.com/1", "B1"); | 189 LoadURLAndUpdateState("http://www.b.com/1", "B1"); |
| 190 LoadURLAndUpdateState("http://www.b.com/2", "B2"); | 190 LoadURLAndUpdateState("http://www.b.com/2", "B2"); |
| 191 LoadURLAndUpdateState("http://www.b.com/3", "B3"); | 191 LoadURLAndUpdateState("http://www.b.com/3", "B3"); |
| 192 LoadURLAndUpdateState("http://www.c.com/1", "C1"); | 192 LoadURLAndUpdateState("http://www.c.com/1", "C1"); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 EXPECT_FALSE(forward_model->ItemHasCommand( | 249 EXPECT_FALSE(forward_model->ItemHasCommand( |
| 250 BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset)); | 250 BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset)); |
| 251 | 251 |
| 252 EXPECT_TRUE(forward_model->ItemHasCommand( | 252 EXPECT_TRUE(forward_model->ItemHasCommand( |
| 253 BackForwardMenuModel::kMaxHistoryItems - 1)); | 253 BackForwardMenuModel::kMaxHistoryItems - 1)); |
| 254 EXPECT_TRUE(forward_model->IsSeparator( | 254 EXPECT_TRUE(forward_model->IsSeparator( |
| 255 BackForwardMenuModel::kMaxHistoryItems)); | 255 BackForwardMenuModel::kMaxHistoryItems)); |
| 256 } | 256 } |
| 257 | 257 |
| 258 TEST_F(BackFwdMenuModelTest, ChapterStops) { | 258 TEST_F(BackFwdMenuModelTest, ChapterStops) { |
| 259 scoped_ptr<BackForwardMenuModel> back_model(new BackForwardMenuModel( | 259 std::unique_ptr<BackForwardMenuModel> back_model( |
| 260 NULL, BackForwardMenuModel::BACKWARD_MENU)); | 260 new BackForwardMenuModel(NULL, BackForwardMenuModel::BACKWARD_MENU)); |
| 261 back_model->set_test_web_contents(web_contents()); | 261 back_model->set_test_web_contents(web_contents()); |
| 262 | 262 |
| 263 scoped_ptr<BackForwardMenuModel> forward_model(new BackForwardMenuModel( | 263 std::unique_ptr<BackForwardMenuModel> forward_model( |
| 264 NULL, BackForwardMenuModel::FORWARD_MENU)); | 264 new BackForwardMenuModel(NULL, BackForwardMenuModel::FORWARD_MENU)); |
| 265 forward_model->set_test_web_contents(web_contents()); | 265 forward_model->set_test_web_contents(web_contents()); |
| 266 | 266 |
| 267 // Seed the controller with 32 URLs. | 267 // Seed the controller with 32 URLs. |
| 268 int i = 0; | 268 int i = 0; |
| 269 LoadURLAndUpdateState("http://www.a.com/1", "A1"); | 269 LoadURLAndUpdateState("http://www.a.com/1", "A1"); |
| 270 ValidateModel(back_model.get(), i++, 0); | 270 ValidateModel(back_model.get(), i++, 0); |
| 271 LoadURLAndUpdateState("http://www.a.com/2", "A2"); | 271 LoadURLAndUpdateState("http://www.a.com/2", "A2"); |
| 272 ValidateModel(back_model.get(), i++, 0); | 272 ValidateModel(back_model.get(), i++, 0); |
| 273 LoadURLAndUpdateState("http://www.a.com/3", "A3"); | 273 LoadURLAndUpdateState("http://www.a.com/3", "A3"); |
| 274 ValidateModel(back_model.get(), i++, 0); | 274 ValidateModel(back_model.get(), i++, 0); |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(2, true)); | 460 EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(2, true)); |
| 461 EXPECT_EQ(4, back_model->GetIndexOfNextChapterStop(3, true)); | 461 EXPECT_EQ(4, back_model->GetIndexOfNextChapterStop(3, true)); |
| 462 // And try backwards as well. | 462 // And try backwards as well. |
| 463 EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(4, false)); | 463 EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(4, false)); |
| 464 EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(3, false)); | 464 EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(3, false)); |
| 465 EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(2, false)); | 465 EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(2, false)); |
| 466 EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); | 466 EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); |
| 467 } | 467 } |
| 468 | 468 |
| 469 TEST_F(BackFwdMenuModelTest, EscapeLabel) { | 469 TEST_F(BackFwdMenuModelTest, EscapeLabel) { |
| 470 scoped_ptr<BackForwardMenuModel> back_model(new BackForwardMenuModel( | 470 std::unique_ptr<BackForwardMenuModel> back_model( |
| 471 NULL, BackForwardMenuModel::BACKWARD_MENU)); | 471 new BackForwardMenuModel(NULL, BackForwardMenuModel::BACKWARD_MENU)); |
| 472 back_model->set_test_web_contents(web_contents()); | 472 back_model->set_test_web_contents(web_contents()); |
| 473 | 473 |
| 474 EXPECT_EQ(0, back_model->GetItemCount()); | 474 EXPECT_EQ(0, back_model->GetItemCount()); |
| 475 EXPECT_FALSE(back_model->ItemHasCommand(1)); | 475 EXPECT_FALSE(back_model->ItemHasCommand(1)); |
| 476 | 476 |
| 477 LoadURLAndUpdateState("http://www.a.com/1", "A B"); | 477 LoadURLAndUpdateState("http://www.a.com/1", "A B"); |
| 478 LoadURLAndUpdateState("http://www.a.com/1", "A & B"); | 478 LoadURLAndUpdateState("http://www.a.com/1", "A & B"); |
| 479 LoadURLAndUpdateState("http://www.a.com/2", "A && B"); | 479 LoadURLAndUpdateState("http://www.a.com/2", "A && B"); |
| 480 LoadURLAndUpdateState("http://www.a.com/2", "A &&& B"); | 480 LoadURLAndUpdateState("http://www.a.com/2", "A &&& B"); |
| 481 LoadURLAndUpdateState("http://www.a.com/3", ""); | 481 LoadURLAndUpdateState("http://www.a.com/3", ""); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 494 EXPECT_EQ(ASCIIToUTF16("A &&&& B"), back_model->GetLabelAt(1)); | 494 EXPECT_EQ(ASCIIToUTF16("A &&&& B"), back_model->GetLabelAt(1)); |
| 495 EXPECT_EQ(ASCIIToUTF16("A &&&&&& B"), back_model->GetLabelAt(0)); | 495 EXPECT_EQ(ASCIIToUTF16("A &&&&&& B"), back_model->GetLabelAt(0)); |
| 496 #endif // defined(OS_MACOSX) | 496 #endif // defined(OS_MACOSX) |
| 497 } | 497 } |
| 498 | 498 |
| 499 // Test asynchronous loading of favicon from history service. | 499 // Test asynchronous loading of favicon from history service. |
| 500 TEST_F(BackFwdMenuModelTest, FaviconLoadTest) { | 500 TEST_F(BackFwdMenuModelTest, FaviconLoadTest) { |
| 501 ASSERT_TRUE(profile()->CreateHistoryService(true, false)); | 501 ASSERT_TRUE(profile()->CreateHistoryService(true, false)); |
| 502 profile()->CreateFaviconService(); | 502 profile()->CreateFaviconService(); |
| 503 Browser::CreateParams native_params(profile()); | 503 Browser::CreateParams native_params(profile()); |
| 504 scoped_ptr<Browser> browser( | 504 std::unique_ptr<Browser> browser( |
| 505 chrome::CreateBrowserWithTestWindowForParams(&native_params)); | 505 chrome::CreateBrowserWithTestWindowForParams(&native_params)); |
| 506 FaviconDelegate favicon_delegate; | 506 FaviconDelegate favicon_delegate; |
| 507 | 507 |
| 508 BackForwardMenuModel back_model( | 508 BackForwardMenuModel back_model( |
| 509 browser.get(), BackForwardMenuModel::BACKWARD_MENU); | 509 browser.get(), BackForwardMenuModel::BACKWARD_MENU); |
| 510 back_model.set_test_web_contents(controller().GetWebContents()); | 510 back_model.set_test_web_contents(controller().GetWebContents()); |
| 511 back_model.SetMenuModelDelegate(&favicon_delegate); | 511 back_model.SetMenuModelDelegate(&favicon_delegate); |
| 512 | 512 |
| 513 SkBitmap new_icon_bitmap(CreateBitmap(SK_ColorRED)); | 513 SkBitmap new_icon_bitmap(CreateBitmap(SK_ColorRED)); |
| 514 | 514 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 // Verify we did get the expected favicon. | 559 // Verify we did get the expected favicon. |
| 560 EXPECT_EQ(0, memcmp(new_icon_bitmap.getPixels(), | 560 EXPECT_EQ(0, memcmp(new_icon_bitmap.getPixels(), |
| 561 valid_icon_bitmap.getPixels(), | 561 valid_icon_bitmap.getPixels(), |
| 562 new_icon_bitmap.getSize())); | 562 new_icon_bitmap.getSize())); |
| 563 | 563 |
| 564 // Make sure the browser deconstructor doesn't have problems. | 564 // Make sure the browser deconstructor doesn't have problems. |
| 565 browser->tab_strip_model()->CloseAllTabs(); | 565 browser->tab_strip_model()->CloseAllTabs(); |
| 566 // This is required to prevent the message loop from hanging. | 566 // This is required to prevent the message loop from hanging. |
| 567 profile()->DestroyHistoryService(); | 567 profile()->DestroyHistoryService(); |
| 568 } | 568 } |
| OLD | NEW |