diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 04:37:57 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-19 04:37:57 +0000 |
commit | 2e5e02fb69357d0030f27eca29d12df0f779d649 (patch) | |
tree | 152a76ceb6e674b92259cff3b1315391b14d76fc | |
parent | be06a75bb612b0652f7ba926668b94671b9c6ab8 (diff) | |
download | chromium_src-2e5e02fb69357d0030f27eca29d12df0f779d649.zip chromium_src-2e5e02fb69357d0030f27eca29d12df0f779d649.tar.gz chromium_src-2e5e02fb69357d0030f27eca29d12df0f779d649.tar.bz2 |
Port back_forward_menu_model_unittest to linux.
Also port TabContentsFactory.
Review URL: http://codereview.chromium.org/21496
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10005 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/back_forward_menu_model.h | 2 | ||||
-rw-r--r-- | chrome/browser/back_forward_menu_model_unittest.cc | 525 |
2 files changed, 255 insertions, 272 deletions
diff --git a/chrome/browser/back_forward_menu_model.h b/chrome/browser/back_forward_menu_model.h index 269ddc3..834efaa 100644 --- a/chrome/browser/back_forward_menu_model.h +++ b/chrome/browser/back_forward_menu_model.h @@ -35,6 +35,8 @@ class BackForwardMenuModel { // specific constructors directly. static BackForwardMenuModel* Create(Browser* browser, ModelType model_type); + virtual ~BackForwardMenuModel() { } + // Returns how many history items the menu should show. For example, if the // navigation controller of the current tab has a current entry index of 5 and // forward_direction_ is false (we are the back button delegate) then this diff --git a/chrome/browser/back_forward_menu_model_unittest.cc b/chrome/browser/back_forward_menu_model_unittest.cc index 5e1fbd5..0765ea8 100644 --- a/chrome/browser/back_forward_menu_model_unittest.cc +++ b/chrome/browser/back_forward_menu_model_unittest.cc @@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/back_forward_menu_model_win.h" +#include "chrome/browser/back_forward_menu_model.h" +#include "base/file_path.h" #include "base/file_util.h" #include "base/path_service.h" #include "chrome/browser/profile_manager.h" @@ -23,9 +24,6 @@ const TabContentsType kHTTPTabContentsType = // NavigationController instance which we wrap our RecentPagesModel around. class BackFwdMenuModelTestTabContents : public TabContents { public: - BEGIN_MSG_MAP(BackFwdMenuModelTestTabContents) - END_MSG_MAP() - BackFwdMenuModelTestTabContents() : TabContents(kHTTPTabContentsType) { } @@ -66,18 +64,17 @@ class BackFwdMenuModelTest : public testing::Test { // Name a subdirectory of the temp directory. ASSERT_TRUE(PathService::Get(base::DIR_TEMP, &test_dir_)); - file_util::AppendToPath(&test_dir_, L"BackFwdMenuModelTest"); + test_dir_ = test_dir_.Append(FILE_PATH_LITERAL("BackFwdMenuModelTest")); // Create a fresh, empty copy of this directory. file_util::Delete(test_dir_, true); - CreateDirectory(test_dir_.c_str(), NULL); + file_util::CreateDirectory(test_dir_); profile_path_ = test_dir_; - file_util::AppendToPath(&profile_path_, L"New Profile"); + profile_path_ = profile_path_.Append(FILE_PATH_LITERAL("New Profile")); profile_ = ProfileManager::CreateProfile( - FilePath::FromWStringHack(profile_path_), - L"New Profile", L"new-profile", L""); + profile_path_, L"New Profile", L"new-profile", L""); ASSERT_TRUE(profile_); pm_.AddProfile(profile_); } @@ -86,7 +83,7 @@ class BackFwdMenuModelTest : public testing::Test { TabContents::RegisterFactory(kHTTPTabContentsType, NULL); // Removes a profile from the set of currently-loaded profiles. - pm_.RemoveProfileByPath(FilePath::FromWStringHack(profile_path_)); + pm_.RemoveProfileByPath(profile_path_); // Clean up test directory ASSERT_TRUE(file_util::Delete(test_dir_, true)); @@ -104,7 +101,7 @@ class BackFwdMenuModelTest : public testing::Test { // Forwards a URL "load" request through to our dummy TabContents // implementation. void LoadURLAndUpdateState(TabContents* contents, - const std::wstring& url, + const std::string& url, const std::wstring& title) { contents->controller()->LoadURL(GURL(url), GURL(), PageTransition::LINK); BackFwdMenuModelTestTabContents* rsmttc = @@ -114,8 +111,8 @@ class BackFwdMenuModelTest : public testing::Test { private: MessageLoopForUI message_loop_; - std::wstring test_dir_; - std::wstring profile_path_; + FilePath test_dir_; + FilePath profile_path_; ProfileManager pm_; Profile* profile_; }; @@ -124,81 +121,70 @@ TEST_F(BackFwdMenuModelTest, BasicCase) { TabContents* contents = CreateTabContents(); { - BackForwardMenuModelWin back_model( - NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE); - back_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> back_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE)); + back_model->set_test_tab_contents(contents); - BackForwardMenuModelWin forward_model( - NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE); - forward_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> forward_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE)); + forward_model->set_test_tab_contents(contents); - EXPECT_EQ(0, back_model.GetItemCount()); - EXPECT_EQ(0, forward_model.GetItemCount()); - EXPECT_FALSE(back_model.SupportsCommand(1)); - EXPECT_FALSE(back_model.IsCommandEnabled(1)); + EXPECT_EQ(0, back_model->GetTotalItemCount()); + EXPECT_EQ(0, forward_model->GetTotalItemCount()); + EXPECT_FALSE(back_model->ItemHasCommand(1)); // Seed the controller with a few URLs - LoadURLAndUpdateState(contents, L"http://www.a.com/1", L"A1"); - LoadURLAndUpdateState(contents, L"http://www.a.com/2", L"A2"); - LoadURLAndUpdateState(contents, L"http://www.a.com/3", L"A3"); - LoadURLAndUpdateState(contents, L"http://www.b.com/1", L"B1"); - LoadURLAndUpdateState(contents, L"http://www.b.com/2", L"B2"); - LoadURLAndUpdateState(contents, L"http://www.c.com/1", L"C1"); - LoadURLAndUpdateState(contents, L"http://www.c.com/2", L"C2"); - LoadURLAndUpdateState(contents, L"http://www.c.com/3", L"C3"); + LoadURLAndUpdateState(contents, "http://www.a.com/1", L"A1"); + LoadURLAndUpdateState(contents, "http://www.a.com/2", L"A2"); + LoadURLAndUpdateState(contents, "http://www.a.com/3", L"A3"); + LoadURLAndUpdateState(contents, "http://www.b.com/1", L"B1"); + LoadURLAndUpdateState(contents, "http://www.b.com/2", L"B2"); + LoadURLAndUpdateState(contents, "http://www.c.com/1", L"C1"); + LoadURLAndUpdateState(contents, "http://www.c.com/2", L"C2"); + LoadURLAndUpdateState(contents, "http://www.c.com/3", L"C3"); // There're two more items here: a separator and a "Show Full History". - EXPECT_EQ(9, back_model.GetItemCount()); - EXPECT_EQ(0, forward_model.GetItemCount()); - EXPECT_EQ(L"C2", back_model.GetLabel(1)); - EXPECT_EQ(L"A1", back_model.GetLabel(7)); - EXPECT_EQ(back_model.GetShowFullHistoryLabel(), - back_model.GetLabel(9)); - - EXPECT_TRUE(back_model.SupportsCommand(1)); - EXPECT_TRUE(back_model.IsCommandEnabled(1)); - EXPECT_TRUE(back_model.SupportsCommand(7)); - EXPECT_TRUE(back_model.IsCommandEnabled(7)); - EXPECT_TRUE(back_model.IsItemSeparator(8)); - EXPECT_TRUE(back_model.SupportsCommand(9)); - EXPECT_TRUE(back_model.IsCommandEnabled(9)); - EXPECT_FALSE(back_model.SupportsCommand(8)); - EXPECT_FALSE(back_model.IsCommandEnabled(8)); - EXPECT_FALSE(back_model.SupportsCommand(10)); - EXPECT_FALSE(back_model.IsCommandEnabled(10)); + EXPECT_EQ(9, back_model->GetTotalItemCount()); + EXPECT_EQ(0, forward_model->GetTotalItemCount()); + EXPECT_EQ(L"C2", back_model->GetItemLabel(1)); + EXPECT_EQ(L"A1", back_model->GetItemLabel(7)); + EXPECT_EQ(back_model->GetShowFullHistoryLabel(), + back_model->GetItemLabel(9)); + + EXPECT_TRUE(back_model->ItemHasCommand(1)); + EXPECT_TRUE(back_model->ItemHasCommand(7)); + EXPECT_TRUE(back_model->IsSeparator(8)); + EXPECT_TRUE(back_model->ItemHasCommand(9)); + EXPECT_FALSE(back_model->ItemHasCommand(8)); + EXPECT_FALSE(back_model->ItemHasCommand(10)); contents->controller()->GoToOffset(-7); - EXPECT_EQ(0, back_model.GetItemCount()); - EXPECT_EQ(9, forward_model.GetItemCount()); - EXPECT_EQ(L"A2", forward_model.GetLabel(1)); - EXPECT_EQ(L"C3", forward_model.GetLabel(7)); - EXPECT_EQ(forward_model.GetShowFullHistoryLabel(), - forward_model.GetLabel(9)); - - EXPECT_TRUE(forward_model.SupportsCommand(1)); - EXPECT_TRUE(forward_model.IsCommandEnabled(1)); - EXPECT_TRUE(forward_model.SupportsCommand(7)); - EXPECT_TRUE(forward_model.IsCommandEnabled(7)); - EXPECT_TRUE(forward_model.IsItemSeparator(8)); - EXPECT_TRUE(forward_model.SupportsCommand(9)); - EXPECT_TRUE(forward_model.IsCommandEnabled(9)); - EXPECT_FALSE(forward_model.SupportsCommand(8)); - EXPECT_FALSE(forward_model.IsCommandEnabled(8)); - EXPECT_FALSE(forward_model.SupportsCommand(10)); - EXPECT_FALSE(forward_model.IsCommandEnabled(10)); + EXPECT_EQ(0, back_model->GetTotalItemCount()); + EXPECT_EQ(9, forward_model->GetTotalItemCount()); + EXPECT_EQ(L"A2", forward_model->GetItemLabel(1)); + EXPECT_EQ(L"C3", forward_model->GetItemLabel(7)); + EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), + forward_model->GetItemLabel(9)); + + EXPECT_TRUE(forward_model->ItemHasCommand(1)); + EXPECT_TRUE(forward_model->ItemHasCommand(7)); + EXPECT_TRUE(forward_model->IsSeparator(8)); + EXPECT_TRUE(forward_model->ItemHasCommand(9)); + EXPECT_FALSE(forward_model->ItemHasCommand(8)); + EXPECT_FALSE(forward_model->ItemHasCommand(10)); contents->controller()->GoToOffset(4); - EXPECT_EQ(6, back_model.GetItemCount()); - EXPECT_EQ(5, forward_model.GetItemCount()); - EXPECT_EQ(L"B1", back_model.GetLabel(1)); - EXPECT_EQ(L"A1", back_model.GetLabel(4)); - EXPECT_EQ(back_model.GetShowFullHistoryLabel(), - back_model.GetLabel(6)); - EXPECT_EQ(L"C1", forward_model.GetLabel(1)); - EXPECT_EQ(L"C3", forward_model.GetLabel(3)); - EXPECT_EQ(forward_model.GetShowFullHistoryLabel(), - forward_model.GetLabel(5)); + EXPECT_EQ(6, back_model->GetTotalItemCount()); + EXPECT_EQ(5, forward_model->GetTotalItemCount()); + EXPECT_EQ(L"B1", back_model->GetItemLabel(1)); + EXPECT_EQ(L"A1", back_model->GetItemLabel(4)); + EXPECT_EQ(back_model->GetShowFullHistoryLabel(), + back_model->GetItemLabel(6)); + EXPECT_EQ(L"C1", forward_model->GetItemLabel(1)); + EXPECT_EQ(L"C3", forward_model->GetItemLabel(3)); + EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), + forward_model->GetItemLabel(5)); } contents->CloseContents(); } @@ -207,98 +193,90 @@ TEST_F(BackFwdMenuModelTest, MaxItemsTest) { TabContents* contents = CreateTabContents(); { - BackForwardMenuModelWin back_model( - NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE); - back_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> back_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE)); + back_model->set_test_tab_contents(contents); - BackForwardMenuModelWin forward_model( - NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE); - forward_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> forward_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE)); + forward_model->set_test_tab_contents(contents); // Seed the controller with 32 URLs - LoadURLAndUpdateState(contents, L"http://www.a.com/1", L"A1"); - LoadURLAndUpdateState(contents, L"http://www.a.com/2", L"A2"); - LoadURLAndUpdateState(contents, L"http://www.a.com/3", L"A3"); - LoadURLAndUpdateState(contents, L"http://www.b.com/1", L"B1"); - LoadURLAndUpdateState(contents, L"http://www.b.com/2", L"B2"); - LoadURLAndUpdateState(contents, L"http://www.b.com/3", L"B3"); - LoadURLAndUpdateState(contents, L"http://www.c.com/1", L"C1"); - LoadURLAndUpdateState(contents, L"http://www.c.com/2", L"C2"); - LoadURLAndUpdateState(contents, L"http://www.c.com/3", L"C3"); - LoadURLAndUpdateState(contents, L"http://www.d.com/1", L"D1"); - LoadURLAndUpdateState(contents, L"http://www.d.com/2", L"D2"); - LoadURLAndUpdateState(contents, L"http://www.d.com/3", L"D3"); - LoadURLAndUpdateState(contents, L"http://www.e.com/1", L"E1"); - LoadURLAndUpdateState(contents, L"http://www.e.com/2", L"E2"); - LoadURLAndUpdateState(contents, L"http://www.e.com/3", L"E3"); - LoadURLAndUpdateState(contents, L"http://www.f.com/1", L"F1"); - LoadURLAndUpdateState(contents, L"http://www.f.com/2", L"F2"); - LoadURLAndUpdateState(contents, L"http://www.f.com/3", L"F3"); - LoadURLAndUpdateState(contents, L"http://www.g.com/1", L"G1"); - LoadURLAndUpdateState(contents, L"http://www.g.com/2", L"G2"); - LoadURLAndUpdateState(contents, L"http://www.g.com/3", L"G3"); - LoadURLAndUpdateState(contents, L"http://www.h.com/1", L"H1"); - LoadURLAndUpdateState(contents, L"http://www.h.com/2", L"H2"); - LoadURLAndUpdateState(contents, L"http://www.h.com/3", L"H3"); - LoadURLAndUpdateState(contents, L"http://www.i.com/1", L"I1"); - LoadURLAndUpdateState(contents, L"http://www.i.com/2", L"I2"); - LoadURLAndUpdateState(contents, L"http://www.i.com/3", L"I3"); - LoadURLAndUpdateState(contents, L"http://www.j.com/1", L"J1"); - LoadURLAndUpdateState(contents, L"http://www.j.com/2", L"J2"); - LoadURLAndUpdateState(contents, L"http://www.j.com/3", L"J3"); - LoadURLAndUpdateState(contents, L"http://www.k.com/1", L"K1"); - LoadURLAndUpdateState(contents, L"http://www.k.com/2", L"K2"); + LoadURLAndUpdateState(contents, "http://www.a.com/1", L"A1"); + LoadURLAndUpdateState(contents, "http://www.a.com/2", L"A2"); + LoadURLAndUpdateState(contents, "http://www.a.com/3", L"A3"); + LoadURLAndUpdateState(contents, "http://www.b.com/1", L"B1"); + LoadURLAndUpdateState(contents, "http://www.b.com/2", L"B2"); + LoadURLAndUpdateState(contents, "http://www.b.com/3", L"B3"); + LoadURLAndUpdateState(contents, "http://www.c.com/1", L"C1"); + LoadURLAndUpdateState(contents, "http://www.c.com/2", L"C2"); + LoadURLAndUpdateState(contents, "http://www.c.com/3", L"C3"); + LoadURLAndUpdateState(contents, "http://www.d.com/1", L"D1"); + LoadURLAndUpdateState(contents, "http://www.d.com/2", L"D2"); + LoadURLAndUpdateState(contents, "http://www.d.com/3", L"D3"); + LoadURLAndUpdateState(contents, "http://www.e.com/1", L"E1"); + LoadURLAndUpdateState(contents, "http://www.e.com/2", L"E2"); + LoadURLAndUpdateState(contents, "http://www.e.com/3", L"E3"); + LoadURLAndUpdateState(contents, "http://www.f.com/1", L"F1"); + LoadURLAndUpdateState(contents, "http://www.f.com/2", L"F2"); + LoadURLAndUpdateState(contents, "http://www.f.com/3", L"F3"); + LoadURLAndUpdateState(contents, "http://www.g.com/1", L"G1"); + LoadURLAndUpdateState(contents, "http://www.g.com/2", L"G2"); + LoadURLAndUpdateState(contents, "http://www.g.com/3", L"G3"); + LoadURLAndUpdateState(contents, "http://www.h.com/1", L"H1"); + LoadURLAndUpdateState(contents, "http://www.h.com/2", L"H2"); + LoadURLAndUpdateState(contents, "http://www.h.com/3", L"H3"); + LoadURLAndUpdateState(contents, "http://www.i.com/1", L"I1"); + LoadURLAndUpdateState(contents, "http://www.i.com/2", L"I2"); + LoadURLAndUpdateState(contents, "http://www.i.com/3", L"I3"); + LoadURLAndUpdateState(contents, "http://www.j.com/1", L"J1"); + LoadURLAndUpdateState(contents, "http://www.j.com/2", L"J2"); + LoadURLAndUpdateState(contents, "http://www.j.com/3", L"J3"); + LoadURLAndUpdateState(contents, "http://www.k.com/1", L"K1"); + LoadURLAndUpdateState(contents, "http://www.k.com/2", L"K2"); // Also there're two more for a separator and a "Show Full History". int chapter_stop_offset = 6; EXPECT_EQ(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset, - back_model.GetItemCount()); - EXPECT_EQ(0, forward_model.GetItemCount()); - EXPECT_EQ(L"K1", back_model.GetLabel(1)); - EXPECT_EQ(back_model.GetShowFullHistoryLabel(), - back_model.GetLabel(BackForwardMenuModel::kMaxHistoryItems + 2 + + back_model->GetTotalItemCount()); + EXPECT_EQ(0, forward_model->GetTotalItemCount()); + EXPECT_EQ(L"K1", back_model->GetItemLabel(1)); + EXPECT_EQ(back_model->GetShowFullHistoryLabel(), + back_model->GetItemLabel(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset)); // Test for out of bounds (beyond Show Full History). - EXPECT_FALSE(back_model.SupportsCommand( - BackForwardMenuModel::kMaxHistoryItems + chapter_stop_offset + 3)); - EXPECT_FALSE(back_model.IsCommandEnabled( + EXPECT_FALSE(back_model->ItemHasCommand( BackForwardMenuModel::kMaxHistoryItems + chapter_stop_offset + 3)); - EXPECT_TRUE(back_model.SupportsCommand( - BackForwardMenuModel::kMaxHistoryItems)); - EXPECT_TRUE(back_model.IsCommandEnabled( + EXPECT_TRUE(back_model->ItemHasCommand( BackForwardMenuModel::kMaxHistoryItems)); - EXPECT_TRUE(back_model.IsItemSeparator( + EXPECT_TRUE(back_model->IsSeparator( BackForwardMenuModel::kMaxHistoryItems + 1)); contents->controller()->GoToIndex(0); EXPECT_EQ(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset, - forward_model.GetItemCount()); - EXPECT_EQ(0, back_model.GetItemCount()); - EXPECT_EQ(L"A2", forward_model.GetLabel(1)); - EXPECT_EQ(forward_model.GetShowFullHistoryLabel(), - forward_model.GetLabel(BackForwardMenuModel::kMaxHistoryItems + 2 + + forward_model->GetTotalItemCount()); + EXPECT_EQ(0, back_model->GetTotalItemCount()); + EXPECT_EQ(L"A2", forward_model->GetItemLabel(1)); + EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), + forward_model->GetItemLabel(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset)); // Out of bounds - EXPECT_FALSE(forward_model.SupportsCommand( - BackForwardMenuModel::kMaxHistoryItems + 3 + chapter_stop_offset)); - EXPECT_FALSE(forward_model.IsCommandEnabled( + EXPECT_FALSE(forward_model->ItemHasCommand( BackForwardMenuModel::kMaxHistoryItems + 3 + chapter_stop_offset)); - EXPECT_TRUE(forward_model.SupportsCommand( - BackForwardMenuModel::kMaxHistoryItems)); - EXPECT_TRUE(forward_model.IsCommandEnabled( + EXPECT_TRUE(forward_model->ItemHasCommand( BackForwardMenuModel::kMaxHistoryItems)); - EXPECT_TRUE(forward_model.IsItemSeparator( + EXPECT_TRUE(forward_model->IsSeparator( BackForwardMenuModel::kMaxHistoryItems + 1)); } contents->CloseContents(); } -void ValidateModel(BackForwardMenuModelWin* model, int history_items, +void ValidateModel(BackForwardMenuModel* model, int history_items, int chapter_stops) { int h = std::min(BackForwardMenuModel::kMaxHistoryItems, history_items); int c = std::min(BackForwardMenuModel::kMaxChapterStops, chapter_stops); @@ -308,200 +286,203 @@ void ValidateModel(BackForwardMenuModelWin* model, int history_items, h += 2; // separator and View History link if (c > 0) ++c; - EXPECT_EQ(h + c, model->GetItemCount()); + EXPECT_EQ(h + c, model->GetTotalItemCount()); } TEST_F(BackFwdMenuModelTest, ChapterStops) { TabContents* contents = CreateTabContents(); { - BackForwardMenuModelWin back_model( - NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE); - back_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> back_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::BACKWARD_MENU_DELEGATE)); + back_model->set_test_tab_contents(contents); - BackForwardMenuModelWin forward_model( - NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE); - forward_model.set_test_tab_contents(contents); + scoped_ptr<BackForwardMenuModel> forward_model(BackForwardMenuModel::Create( + NULL, BackForwardMenuModel::FORWARD_MENU_DELEGATE)); + forward_model->set_test_tab_contents(contents); // Seed the controller with 32 URLs. int i = 0; - LoadURLAndUpdateState(contents, L"http://www.a.com/1", L"A1"); // 0 - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.a.com/2", L"A2"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.a.com/3", L"A3"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.b.com/1", L"B1"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.b.com/2", L"B2"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.b.com/3", L"B3"); // 5 - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.c.com/1", L"C1"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.c.com/2", L"C2"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.c.com/3", L"C3"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.d.com/1", L"D1"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.d.com/2", L"D2"); // 10 - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.d.com/3", L"D3"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.e.com/1", L"E1"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.e.com/2", L"E2"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.e.com/3", L"E3"); - ValidateModel(&back_model, i++, 0); - LoadURLAndUpdateState(contents, L"http://www.f.com/1", L"F1"); // 15 - ValidateModel(&back_model, i++, 1); - LoadURLAndUpdateState(contents, L"http://www.f.com/2", L"F2"); - ValidateModel(&back_model, i++, 1); - LoadURLAndUpdateState(contents, L"http://www.f.com/3", L"F3"); - ValidateModel(&back_model, i++, 1); - LoadURLAndUpdateState(contents, L"http://www.g.com/1", L"G1"); - ValidateModel(&back_model, i++, 2); - LoadURLAndUpdateState(contents, L"http://www.g.com/2", L"G2"); - ValidateModel(&back_model, i++, 2); - LoadURLAndUpdateState(contents, L"http://www.g.com/3", L"G3"); // 20 - ValidateModel(&back_model, i++, 2); - LoadURLAndUpdateState(contents, L"http://www.h.com/1", L"H1"); - ValidateModel(&back_model, i++, 3); - LoadURLAndUpdateState(contents, L"http://www.h.com/2", L"H2"); - ValidateModel(&back_model, i++, 3); - LoadURLAndUpdateState(contents, L"http://www.h.com/3", L"H3"); - ValidateModel(&back_model, i++, 3); - LoadURLAndUpdateState(contents, L"http://www.i.com/1", L"I1"); - ValidateModel(&back_model, i++, 4); - LoadURLAndUpdateState(contents, L"http://www.i.com/2", L"I2"); // 25 - ValidateModel(&back_model, i++, 4); - LoadURLAndUpdateState(contents, L"http://www.i.com/3", L"I3"); - ValidateModel(&back_model, i++, 4); - LoadURLAndUpdateState(contents, L"http://www.j.com/1", L"J1"); - ValidateModel(&back_model, i++, 5); - LoadURLAndUpdateState(contents, L"http://www.j.com/2", L"J2"); - ValidateModel(&back_model, i++, 5); - LoadURLAndUpdateState(contents, L"http://www.j.com/3", L"J3"); - ValidateModel(&back_model, i++, 5); - LoadURLAndUpdateState(contents, L"http://www.k.com/1", L"K1"); // 30 - ValidateModel(&back_model, i++, 6); - LoadURLAndUpdateState(contents, L"http://www.k.com/2", L"K2"); - ValidateModel(&back_model, i++, 6); - LoadURLAndUpdateState(contents, L"http://www.k.com/3", L"K3"); // 32 - ValidateModel(&back_model, i++, 6); + LoadURLAndUpdateState(contents, "http://www.a.com/1", L"A1"); // 0 + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.a.com/2", L"A2"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.a.com/3", L"A3"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.b.com/1", L"B1"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.b.com/2", L"B2"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.b.com/3", L"B3"); // 5 + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.c.com/1", L"C1"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.c.com/2", L"C2"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.c.com/3", L"C3"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.d.com/1", L"D1"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.d.com/2", L"D2"); // 10 + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.d.com/3", L"D3"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.e.com/1", L"E1"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.e.com/2", L"E2"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.e.com/3", L"E3"); + ValidateModel(back_model.get(), i++, 0); + LoadURLAndUpdateState(contents, "http://www.f.com/1", L"F1"); // 15 + ValidateModel(back_model.get(), i++, 1); + LoadURLAndUpdateState(contents, "http://www.f.com/2", L"F2"); + ValidateModel(back_model.get(), i++, 1); + LoadURLAndUpdateState(contents, "http://www.f.com/3", L"F3"); + ValidateModel(back_model.get(), i++, 1); + LoadURLAndUpdateState(contents, "http://www.g.com/1", L"G1"); + ValidateModel(back_model.get(), i++, 2); + LoadURLAndUpdateState(contents, "http://www.g.com/2", L"G2"); + ValidateModel(back_model.get(), i++, 2); + LoadURLAndUpdateState(contents, "http://www.g.com/3", L"G3"); // 20 + ValidateModel(back_model.get(), i++, 2); + LoadURLAndUpdateState(contents, "http://www.h.com/1", L"H1"); + ValidateModel(back_model.get(), i++, 3); + LoadURLAndUpdateState(contents, "http://www.h.com/2", L"H2"); + ValidateModel(back_model.get(), i++, 3); + LoadURLAndUpdateState(contents, "http://www.h.com/3", L"H3"); + ValidateModel(back_model.get(), i++, 3); + LoadURLAndUpdateState(contents, "http://www.i.com/1", L"I1"); + ValidateModel(back_model.get(), i++, 4); + LoadURLAndUpdateState(contents, "http://www.i.com/2", L"I2"); // 25 + ValidateModel(back_model.get(), i++, 4); + LoadURLAndUpdateState(contents, "http://www.i.com/3", L"I3"); + ValidateModel(back_model.get(), i++, 4); + LoadURLAndUpdateState(contents, "http://www.j.com/1", L"J1"); + ValidateModel(back_model.get(), i++, 5); + LoadURLAndUpdateState(contents, "http://www.j.com/2", L"J2"); + ValidateModel(back_model.get(), i++, 5); + LoadURLAndUpdateState(contents, "http://www.j.com/3", L"J3"); + ValidateModel(back_model.get(), i++, 5); + LoadURLAndUpdateState(contents, "http://www.k.com/1", L"K1"); // 30 + ValidateModel(back_model.get(), i++, 6); + LoadURLAndUpdateState(contents, "http://www.k.com/2", L"K2"); + ValidateModel(back_model.get(), i++, 6); + LoadURLAndUpdateState(contents, "http://www.k.com/3", L"K3"); // 32 + ValidateModel(back_model.get(), i++, 6); // Check to see if the chapter stops have the right labels. int index = BackForwardMenuModel::kMaxHistoryItems + 1; - EXPECT_EQ(L"", back_model.GetLabel(index++)); // separator. - EXPECT_EQ(L"F3", back_model.GetLabel(index++)); - EXPECT_EQ(L"E3", back_model.GetLabel(index++)); - EXPECT_EQ(L"D3", back_model.GetLabel(index++)); - EXPECT_EQ(L"C3", back_model.GetLabel(index++)); - EXPECT_EQ(L"B3", back_model.GetLabel(index)); // max 5 chapter stops. - EXPECT_EQ(L"", back_model.GetLabel(index + 1)); // separator. - EXPECT_EQ(back_model.GetShowFullHistoryLabel(), - back_model.GetLabel(index + 2)); + EXPECT_EQ(L"", back_model->GetItemLabel(index++)); // separator. + EXPECT_EQ(L"F3", back_model->GetItemLabel(index++)); + EXPECT_EQ(L"E3", back_model->GetItemLabel(index++)); + EXPECT_EQ(L"D3", back_model->GetItemLabel(index++)); + EXPECT_EQ(L"C3", back_model->GetItemLabel(index++)); + EXPECT_EQ(L"B3", back_model->GetItemLabel(index)); // max 5 chapter stops. + EXPECT_EQ(L"", back_model->GetItemLabel(index + 1)); // separator. + EXPECT_EQ(back_model->GetShowFullHistoryLabel(), + back_model->GetItemLabel(index + 2)); // If we go back two we should still see the same chapter stop at the end. contents->controller()->GoBack(); - EXPECT_EQ(L"B3", back_model.GetLabel(index)); + EXPECT_EQ(L"B3", back_model->GetItemLabel(index)); contents->controller()->GoBack(); - EXPECT_EQ(L"B3", back_model.GetLabel(index)); + EXPECT_EQ(L"B3", back_model->GetItemLabel(index)); // But if we go back again, it should change. contents->controller()->GoBack(); - EXPECT_EQ(L"A3", back_model.GetLabel(index)); + EXPECT_EQ(L"A3", back_model->GetItemLabel(index)); contents->controller()->GoBack(); - EXPECT_EQ(L"A3", back_model.GetLabel(index)); + EXPECT_EQ(L"A3", back_model->GetItemLabel(index)); contents->controller()->GoBack(); - EXPECT_EQ(L"A3", back_model.GetLabel(index)); + EXPECT_EQ(L"A3", back_model->GetItemLabel(index)); contents->controller()->GoBack(); - EXPECT_EQ(L"", back_model.GetLabel(index)); // is now a separator. + EXPECT_EQ(L"", back_model->GetItemLabel(index)); // is now a separator. contents->controller()->GoToOffset(6); // undo our position change. // Go back enough to make sure no chapter stops should appear. contents->controller()->GoToOffset(-BackForwardMenuModel::kMaxHistoryItems); - ValidateModel(&forward_model, BackForwardMenuModel::kMaxHistoryItems, 0); + ValidateModel(forward_model.get(), BackForwardMenuModel::kMaxHistoryItems, + 0); // Go forward (still no chapter stop) contents->controller()->GoForward(); - ValidateModel(&forward_model, + ValidateModel(forward_model.get(), BackForwardMenuModel::kMaxHistoryItems - 1, 0); // Go back two (one chapter stop should show up) contents->controller()->GoBack(); contents->controller()->GoBack(); - ValidateModel(&forward_model, BackForwardMenuModel::kMaxHistoryItems, 1); + ValidateModel(forward_model.get(), + BackForwardMenuModel::kMaxHistoryItems, 1); // Go to beginning. contents->controller()->GoToIndex(0); // Check to see if the chapter stops have the right labels. index = BackForwardMenuModel::kMaxHistoryItems + 1; - EXPECT_EQ(L"", forward_model.GetLabel(index++)); // separator. - EXPECT_EQ(L"E3", forward_model.GetLabel(index++)); - EXPECT_EQ(L"F3", forward_model.GetLabel(index++)); - EXPECT_EQ(L"G3", forward_model.GetLabel(index++)); - EXPECT_EQ(L"H3", forward_model.GetLabel(index++)); - EXPECT_EQ(L"I3", forward_model.GetLabel(index)); // max 5 chapter stops. - EXPECT_EQ(L"", forward_model.GetLabel(index + 1)); // separator. - EXPECT_EQ(forward_model.GetShowFullHistoryLabel(), - forward_model.GetLabel(index + 2)); + EXPECT_EQ(L"", forward_model->GetItemLabel(index++)); // separator. + EXPECT_EQ(L"E3", forward_model->GetItemLabel(index++)); + EXPECT_EQ(L"F3", forward_model->GetItemLabel(index++)); + EXPECT_EQ(L"G3", forward_model->GetItemLabel(index++)); + EXPECT_EQ(L"H3", forward_model->GetItemLabel(index++)); + // max 5 chapter stops. + EXPECT_EQ(L"I3", forward_model->GetItemLabel(index)); + EXPECT_EQ(L"", forward_model->GetItemLabel(index + 1)); // separator. + EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), + forward_model->GetItemLabel(index + 2)); // If we advance one we should still see the same chapter stop at the end. contents->controller()->GoForward(); - EXPECT_EQ(L"I3", forward_model.GetLabel(index)); + EXPECT_EQ(L"I3", forward_model->GetItemLabel(index)); // But if we advance one again, it should change. contents->controller()->GoForward(); - EXPECT_EQ(L"J3", forward_model.GetLabel(index)); + EXPECT_EQ(L"J3", forward_model->GetItemLabel(index)); contents->controller()->GoForward(); - EXPECT_EQ(L"J3", forward_model.GetLabel(index)); + EXPECT_EQ(L"J3", forward_model->GetItemLabel(index)); contents->controller()->GoForward(); - EXPECT_EQ(L"J3", forward_model.GetLabel(index)); + EXPECT_EQ(L"J3", forward_model->GetItemLabel(index)); contents->controller()->GoForward(); - EXPECT_EQ(L"K3", forward_model.GetLabel(index)); + EXPECT_EQ(L"K3", forward_model->GetItemLabel(index)); // Now test the boundary cases by using the chapter stop function directly. // Out of bounds, first too far right (incrementing), then too far left. - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(33, false)); - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(-1, true)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(33, false)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(-1, true)); // Test being at end and going right, then at beginning going left. - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(32, true)); - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(0, false)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(32, true)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(0, false)); // Test success: beginning going right and end going left. - EXPECT_EQ(2, back_model.GetIndexOfNextChapterStop(0, true)); - EXPECT_EQ(29, back_model.GetIndexOfNextChapterStop(32, false)); + EXPECT_EQ(2, back_model->GetIndexOfNextChapterStop(0, true)); + EXPECT_EQ(29, back_model->GetIndexOfNextChapterStop(32, false)); // Now see when the chapter stops begin to show up. - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(1, false)); - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(2, false)); - EXPECT_EQ(2, back_model.GetIndexOfNextChapterStop(3, false)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(2, false)); + EXPECT_EQ(2, back_model->GetIndexOfNextChapterStop(3, false)); // Now see when the chapter stops end. - EXPECT_EQ(32, back_model.GetIndexOfNextChapterStop(30, true)); - EXPECT_EQ(32, back_model.GetIndexOfNextChapterStop(31, true)); - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(32, true)); + EXPECT_EQ(32, back_model->GetIndexOfNextChapterStop(30, true)); + EXPECT_EQ(32, back_model->GetIndexOfNextChapterStop(31, true)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(32, true)); // Bug found during review (two different sites, but first wasn't considered // a chapter-stop). contents->controller()->GoToIndex(0); // Go to A1. - LoadURLAndUpdateState(contents, L"http://www.b.com/1", L"B1"); - EXPECT_EQ(0, back_model.GetIndexOfNextChapterStop(1, false)); - EXPECT_EQ(1, back_model.GetIndexOfNextChapterStop(0, true)); + LoadURLAndUpdateState(contents, "http://www.b.com/1", L"B1"); + EXPECT_EQ(0, back_model->GetIndexOfNextChapterStop(1, false)); + EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(0, true)); // Now see if it counts 'www.x.com' and 'mail.x.com' as same domain, which // it should. contents->controller()->GoToIndex(0); // Go to A1. - LoadURLAndUpdateState(contents, L"http://mail.a.com/2", L"A2-mail"); - LoadURLAndUpdateState(contents, L"http://www.b.com/1", L"B1"); - LoadURLAndUpdateState(contents, L"http://mail.b.com/2", L"B2-mail"); - LoadURLAndUpdateState(contents, L"http://new.site.com", L"new"); - EXPECT_EQ(1, back_model.GetIndexOfNextChapterStop(0, true)); - EXPECT_EQ(3, back_model.GetIndexOfNextChapterStop(1, true)); - EXPECT_EQ(3, back_model.GetIndexOfNextChapterStop(2, true)); - EXPECT_EQ(4, back_model.GetIndexOfNextChapterStop(3, true)); + LoadURLAndUpdateState(contents, "http://mail.a.com/2", L"A2-mail"); + LoadURLAndUpdateState(contents, "http://www.b.com/1", L"B1"); + LoadURLAndUpdateState(contents, "http://mail.b.com/2", L"B2-mail"); + LoadURLAndUpdateState(contents, "http://new.site.com", L"new"); + EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(0, true)); + EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(1, true)); + EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(2, true)); + EXPECT_EQ(4, back_model->GetIndexOfNextChapterStop(3, true)); // And try backwards as well. - EXPECT_EQ(3, back_model.GetIndexOfNextChapterStop(4, false)); - EXPECT_EQ(1, back_model.GetIndexOfNextChapterStop(3, false)); - EXPECT_EQ(1, back_model.GetIndexOfNextChapterStop(2, false)); - EXPECT_EQ(-1, back_model.GetIndexOfNextChapterStop(1, false)); + EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(4, false)); + EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(3, false)); + EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(2, false)); + EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); } contents->CloseContents(); } |