| Index: chrome/browser/sessions/tab_restore_service_browsertest.cc
|
| diff --git a/chrome/browser/sessions/tab_restore_service_browsertest.cc b/chrome/browser/sessions/tab_restore_service_browsertest.cc
|
| index 4a8ed63b32bdbaad0c10201dd8c4f273486880d1..5e45685de401210a1e090477f08e2845a0cd5af3 100644
|
| --- a/chrome/browser/sessions/tab_restore_service_browsertest.cc
|
| +++ b/chrome/browser/sessions/tab_restore_service_browsertest.cc
|
| @@ -2,13 +2,14 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/compiler_specific.h"
|
| #include "base/stringprintf.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/sessions/persistent_tab_restore_service.h"
|
| #include "chrome/browser/sessions/session_service.h"
|
| #include "chrome/browser/sessions/session_service_factory.h"
|
| #include "chrome/browser/sessions/session_types.h"
|
| #include "chrome/browser/sessions/session_types_test_helper.h"
|
| -#include "chrome/browser/sessions/tab_restore_service.h"
|
| #include "chrome/browser/sessions/tab_restore_service_factory.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| @@ -67,15 +68,17 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
|
| }
|
|
|
| protected:
|
| - // testing::Test overrides
|
| - virtual void SetUp() {
|
| + static const size_t kMaxEntries;
|
| +
|
| + // testing::Test:
|
| + virtual void SetUp() OVERRIDE {
|
| WebKit::initialize(webkit_platform_support_.Get());
|
| ChromeRenderViewHostTestHarness::SetUp();
|
| time_factory_ = new TabRestoreTimeFactory();
|
| - service_.reset(new TabRestoreService(profile(), time_factory_));
|
| + service_.reset(new PersistentTabRestoreService(profile(), time_factory_));
|
| }
|
|
|
| - virtual void TearDown() {
|
| + virtual void TearDown() OVERRIDE {
|
| service_->Shutdown();
|
| service_.reset();
|
| delete time_factory_;
|
| @@ -83,6 +86,14 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
|
| WebKit::shutdown();
|
| }
|
|
|
| + TabRestoreService::Entries* mutable_entries() {
|
| + return service_->mutable_entries();
|
| + }
|
| +
|
| + void PruneEntries() {
|
| + service_->PruneEntries();
|
| + }
|
| +
|
| void AddThreeNavigations() {
|
| // Navigate to three URLs.
|
| NavigateAndCommit(url1_);
|
| @@ -102,7 +113,7 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
|
| // one is created.
|
| service_->Shutdown();
|
| service_.reset();
|
| - service_.reset(new TabRestoreService(profile(), time_factory_));
|
| + service_.reset(new PersistentTabRestoreService(profile(), time_factory_));
|
| service_->LoadTabsFromLastSession();
|
| }
|
|
|
| @@ -144,13 +155,16 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
|
| GURL url2_;
|
| GURL url3_;
|
| std::string user_agent_override_;
|
| - scoped_ptr<TabRestoreService> service_;
|
| + scoped_ptr<PersistentTabRestoreService> service_;
|
| TabRestoreTimeFactory* time_factory_;
|
| content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox
|
| webkit_platform_support_;
|
| content::TestBrowserThread ui_thread_;
|
| };
|
|
|
| +const size_t TabRestoreServiceTest::kMaxEntries =
|
| + TabRestoreServiceHelper::kMaxEntries;
|
| +
|
| TEST_F(TabRestoreServiceTest, Basic) {
|
| AddThreeNavigations();
|
|
|
| @@ -487,7 +501,7 @@ TEST_F(TabRestoreServiceTest, LoadPreviousSessionAndTabsPinned) {
|
| TEST_F(TabRestoreServiceTest, ManyWindowsInSessionService) {
|
| CreateSessionServiceWithOneWindow(false);
|
|
|
| - for (size_t i = 0; i < TabRestoreService::kMaxEntries; ++i)
|
| + for (size_t i = 0; i < kMaxEntries; ++i)
|
| AddWindowWithOneTabToSessionService(false);
|
|
|
| SessionServiceFactory::GetForProfile(profile())->
|
| @@ -501,7 +515,7 @@ TEST_F(TabRestoreServiceTest, ManyWindowsInSessionService) {
|
|
|
| // We should get back kMaxEntries entries. We added more, but
|
| // TabRestoreService only allows up to kMaxEntries.
|
| - ASSERT_EQ(TabRestoreService::kMaxEntries, service_->entries().size());
|
| + ASSERT_EQ(kMaxEntries, service_->entries().size());
|
|
|
| // The first entry should come from the session service.
|
| TabRestoreService::Entry* entry = service_->entries().front();
|
| @@ -573,7 +587,7 @@ TEST_F(TabRestoreServiceTest, PruneEntries) {
|
| service_->ClearEntries();
|
| ASSERT_TRUE(service_->entries().empty());
|
|
|
| - const size_t max_entries = TabRestoreService::kMaxEntries;
|
| + const size_t max_entries = kMaxEntries;
|
| for (size_t i = 0; i < max_entries + 5; i++) {
|
| TabNavigation navigation =
|
| SessionTypesTestHelper::CreateNavigation(
|
| @@ -584,16 +598,16 @@ TEST_F(TabRestoreServiceTest, PruneEntries) {
|
| tab->navigations.push_back(navigation);
|
| tab->current_navigation_index = 0;
|
|
|
| - service_->entries_.push_back(tab);
|
| + mutable_entries()->push_back(tab);
|
| }
|
|
|
| // Only keep kMaxEntries around.
|
| - EXPECT_EQ(max_entries + 5, service_->entries_.size());
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + EXPECT_EQ(max_entries + 5, service_->entries().size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| // Pruning again does nothing.
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
|
|
| // Prune older first.
|
| const char kRecentUrl[] = "http://recent";
|
| @@ -602,12 +616,12 @@ TEST_F(TabRestoreServiceTest, PruneEntries) {
|
| Tab* tab = new Tab();
|
| tab->navigations.push_back(navigation);
|
| tab->current_navigation_index = 0;
|
| - service_->entries_.push_front(tab);
|
| - EXPECT_EQ(max_entries + 1, service_->entries_.size());
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + mutable_entries()->push_front(tab);
|
| + EXPECT_EQ(max_entries + 1, service_->entries().size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| EXPECT_EQ(GURL(kRecentUrl),
|
| - static_cast<Tab*>(service_->entries_.front())->
|
| + static_cast<Tab*>(service_->entries().front())->
|
| navigations[0].virtual_url());
|
|
|
| // Ignore NTPs.
|
| @@ -618,13 +632,13 @@ TEST_F(TabRestoreServiceTest, PruneEntries) {
|
| tab = new Tab();
|
| tab->navigations.push_back(navigation);
|
| tab->current_navigation_index = 0;
|
| - service_->entries_.push_front(tab);
|
| + mutable_entries()->push_front(tab);
|
|
|
| - EXPECT_EQ(max_entries + 1, service_->entries_.size());
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + EXPECT_EQ(max_entries + 1, service_->entries().size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| EXPECT_EQ(GURL(kRecentUrl),
|
| - static_cast<Tab*>(service_->entries_.front())->
|
| + static_cast<Tab*>(service_->entries().front())->
|
| navigations[0].virtual_url());
|
|
|
| // Don't prune pinned NTPs.
|
| @@ -632,28 +646,28 @@ TEST_F(TabRestoreServiceTest, PruneEntries) {
|
| tab->pinned = true;
|
| tab->current_navigation_index = 0;
|
| tab->navigations.push_back(navigation);
|
| - service_->entries_.push_front(tab);
|
| - EXPECT_EQ(max_entries + 1, service_->entries_.size());
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + mutable_entries()->push_front(tab);
|
| + EXPECT_EQ(max_entries + 1, service_->entries().size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
|
| - static_cast<Tab*>(service_->entries_.front())->
|
| + static_cast<Tab*>(service_->entries().front())->
|
| navigations[0].virtual_url());
|
|
|
| // Don't prune NTPs that have multiple navigations.
|
| // (Erase the last NTP first.)
|
| - delete service_->entries_.front();
|
| - service_->entries_.erase(service_->entries_.begin());
|
| + delete service_->entries().front();
|
| + mutable_entries()->erase(mutable_entries()->begin());
|
| tab = new Tab();
|
| tab->current_navigation_index = 1;
|
| tab->navigations.push_back(navigation);
|
| tab->navigations.push_back(navigation);
|
| - service_->entries_.push_front(tab);
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| - service_->PruneEntries();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + mutable_entries()->push_front(tab);
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| + PruneEntries();
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
|
| - static_cast<Tab*>(service_->entries_.front())->
|
| + static_cast<Tab*>(service_->entries().front())->
|
| navigations[1].virtual_url());
|
| }
|
|
|
| @@ -666,14 +680,14 @@ TEST_F(TabRestoreServiceTest, PruneIsCalled) {
|
|
|
| profile()->set_restored_last_session(true);
|
|
|
| - const size_t max_entries = TabRestoreService::kMaxEntries;
|
| + const size_t max_entries = kMaxEntries;
|
| for (size_t i = 0; i < max_entries + 5; i++) {
|
| NavigateAndCommit(GURL(StringPrintf("http://%d", static_cast<int>(i))));
|
| service_->CreateHistoricalTab(contents(), -1);
|
| }
|
|
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| // This should not crash.
|
| service_->LoadTabsFromLastSession();
|
| - EXPECT_EQ(max_entries, service_->entries_.size());
|
| + EXPECT_EQ(max_entries, service_->entries().size());
|
| }
|
|
|