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

Unified Diff: chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc

Issue 10989027: Split TabRestoreService into InMemoryTRS and PersistentTRS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: GYP out InMemoryTRS on non-Android and fix incorrect comments Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
diff --git a/chrome/browser/sessions/tab_restore_service_browsertest.cc b/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
similarity index 84%
rename from chrome/browser/sessions/tab_restore_service_browsertest.cc
rename to chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
index dbd0a2123d207c31700024cb303982b21dfeee61..5de3431c5343e793fe2ff1f605c60c1f214125d1 100644
--- a/chrome/browser/sessions/tab_restore_service_browsertest.cc
+++ b/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
@@ -2,13 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "chrome/browser/sessions/persistent_tab_restore_service.h"
+
+#include "base/compiler_specific.h"
#include "base/stringprintf.h"
#include "base/utf_string_conversions.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"
@@ -38,11 +40,11 @@ using content::NavigationEntry;
// Create subclass that overrides TimeNow so that we can control the time used
// for closed tabs and windows.
-class TabRestoreTimeFactory : public TabRestoreService::TimeFactory {
+class PersistentTabRestoreTimeFactory : public TabRestoreService::TimeFactory {
public:
- TabRestoreTimeFactory() : time_(base::Time::Now()) {}
+ PersistentTabRestoreTimeFactory() : time_(base::Time::Now()) {}
- virtual ~TabRestoreTimeFactory() {}
+ virtual ~PersistentTabRestoreTimeFactory() {}
virtual base::Time TimeNow() {
return time_;
@@ -52,9 +54,9 @@ class TabRestoreTimeFactory : public TabRestoreService::TimeFactory {
base::Time time_;
};
-class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
+class PersistentTabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
public:
- TabRestoreServiceTest()
+ PersistentTabRestoreServiceTest()
: ui_thread_(content::BrowserThread::UI, &message_loop_) {
url1_ = GURL("http://1");
url2_ = GURL("http://2");
@@ -63,19 +65,21 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
" (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19";
}
- ~TabRestoreServiceTest() {
+ ~PersistentTabRestoreServiceTest() {
}
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_));
+ time_factory_ = new PersistentTabRestoreTimeFactory();
+ service_.reset(new PersistentTabRestoreService(profile(), time_factory_));
}
- virtual void TearDown() {
+ virtual void TearDown() OVERRIDE {
service_->Shutdown();
service_.reset();
delete time_factory_;
@@ -83,6 +87,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 +114,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,14 +156,17 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
GURL url2_;
GURL url3_;
std::string user_agent_override_;
- scoped_ptr<TabRestoreService> service_;
- TabRestoreTimeFactory* time_factory_;
+ scoped_ptr<PersistentTabRestoreService> service_;
+ PersistentTabRestoreTimeFactory* time_factory_;
content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox
webkit_platform_support_;
content::TestBrowserThread ui_thread_;
};
-TEST_F(TabRestoreServiceTest, Basic) {
+const size_t PersistentTabRestoreServiceTest::kMaxEntries =
+ TabRestoreServiceHelper::kMaxEntries;
+
+TEST_F(PersistentTabRestoreServiceTest, Basic) {
AddThreeNavigations();
// Have the service record the tab.
@@ -201,13 +216,13 @@ TEST_F(TabRestoreServiceTest, Basic) {
// Make sure TabRestoreService doesn't create an entry for a tab with no
// navigations.
-TEST_F(TabRestoreServiceTest, DontCreateEmptyTab) {
+TEST_F(PersistentTabRestoreServiceTest, DontCreateEmptyTab) {
service_->CreateHistoricalTab(web_contents(), -1);
EXPECT_TRUE(service_->entries().empty());
}
// Tests restoring a single tab.
-TEST_F(TabRestoreServiceTest, Restore) {
+TEST_F(PersistentTabRestoreServiceTest, Restore) {
AddThreeNavigations();
// Have the service record the tab.
@@ -220,7 +235,7 @@ TEST_F(TabRestoreServiceTest, Restore) {
ASSERT_EQ(1U, service_->entries().size());
// And verify the entry.
- TabRestoreService::Entry* entry = service_->entries().front();
+ PersistentTabRestoreService::Entry* entry = service_->entries().front();
ASSERT_EQ(TabRestoreService::TAB, entry->type);
Tab* tab = static_cast<Tab*>(entry);
EXPECT_FALSE(tab->pinned);
@@ -234,7 +249,7 @@ TEST_F(TabRestoreServiceTest, Restore) {
}
// Tests restoring a single pinned tab.
-TEST_F(TabRestoreServiceTest, RestorePinnedAndApp) {
+TEST_F(PersistentTabRestoreServiceTest, RestorePinnedAndApp) {
AddThreeNavigations();
// Have the service record the tab.
@@ -274,9 +289,9 @@ TEST_F(TabRestoreServiceTest, RestorePinnedAndApp) {
// We only restore apps on chromeos.
#if defined(USE_AURA)
-typedef InProcessBrowserTest TabRestoreServiceBrowserTest;
+typedef InProcessBrowserTest PersistentTabRestoreServiceBrowserTest;
-IN_PROC_BROWSER_TEST_F(TabRestoreServiceBrowserTest, RestoreApp) {
+IN_PROC_BROWSER_TEST_F(PersistentTabRestoreServiceBrowserTest, RestoreApp) {
Profile* profile = browser()->profile();
TabRestoreService* trs = TabRestoreServiceFactory::GetForProfile(profile);
const char* app_name = "TestApp";
@@ -301,7 +316,7 @@ IN_PROC_BROWSER_TEST_F(TabRestoreServiceBrowserTest, RestoreApp) {
#endif // defined(USE_AURA)
// Make sure we persist entries to disk that have post data.
-TEST_F(TabRestoreServiceTest, DontPersistPostData) {
+TEST_F(PersistentTabRestoreServiceTest, DontPersistPostData) {
AddThreeNavigations();
controller().GetEntryAtIndex(0)->SetHasPostData(true);
controller().GetEntryAtIndex(1)->SetHasPostData(true);
@@ -331,7 +346,7 @@ TEST_F(TabRestoreServiceTest, DontPersistPostData) {
// Make sure we don't persist entries to disk that have post data. This
// differs from DontPersistPostData1 in that all the navigations have post
// data, so that nothing should be persisted.
-TEST_F(TabRestoreServiceTest, DontLoadTwice) {
+TEST_F(PersistentTabRestoreServiceTest, DontLoadTwice) {
AddThreeNavigations();
// Have the service record the tab.
@@ -348,7 +363,7 @@ TEST_F(TabRestoreServiceTest, DontLoadTwice) {
}
// Makes sure we load the previous session as necessary.
-TEST_F(TabRestoreServiceTest, LoadPreviousSession) {
+TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSession) {
CreateSessionServiceWithOneWindow(false);
SessionServiceFactory::GetForProfile(profile())->
@@ -372,7 +387,7 @@ TEST_F(TabRestoreServiceTest, LoadPreviousSession) {
}
// Makes sure we don't attempt to load previous sessions after a restore.
-TEST_F(TabRestoreServiceTest, DontLoadAfterRestore) {
+TEST_F(PersistentTabRestoreServiceTest, DontLoadAfterRestore) {
CreateSessionServiceWithOneWindow(false);
SessionServiceFactory::GetForProfile(profile())->
@@ -382,12 +397,13 @@ TEST_F(TabRestoreServiceTest, DontLoadAfterRestore) {
service_->LoadTabsFromLastSession();
- // Because we restored a session TabRestoreService shouldn't load the tabs.
+ // Because we restored a session PersistentTabRestoreService shouldn't load
+ // the tabs.
ASSERT_EQ(0U, service_->entries().size());
}
// Makes sure we don't attempt to load previous sessions after a clean exit.
-TEST_F(TabRestoreServiceTest, DontLoadAfterCleanExit) {
+TEST_F(PersistentTabRestoreServiceTest, DontLoadAfterCleanExit) {
CreateSessionServiceWithOneWindow(false);
SessionServiceFactory::GetForProfile(profile())->
@@ -400,7 +416,7 @@ TEST_F(TabRestoreServiceTest, DontLoadAfterCleanExit) {
ASSERT_EQ(0U, service_->entries().size());
}
-TEST_F(TabRestoreServiceTest, LoadPreviousSessionAndTabs) {
+TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSessionAndTabs) {
CreateSessionServiceWithOneWindow(false);
SessionServiceFactory::GetForProfile(profile())->
@@ -443,7 +459,7 @@ TEST_F(TabRestoreServiceTest, LoadPreviousSessionAndTabs) {
}
// Make sure pinned state is correctly loaded from session service.
-TEST_F(TabRestoreServiceTest, LoadPreviousSessionAndTabsPinned) {
+TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSessionAndTabsPinned) {
CreateSessionServiceWithOneWindow(true);
SessionServiceFactory::GetForProfile(profile())->
@@ -482,12 +498,12 @@ TEST_F(TabRestoreServiceTest, LoadPreviousSessionAndTabsPinned) {
EXPECT_TRUE(url3_ == tab->navigations[2].virtual_url());
}
-// Creates TabRestoreService::kMaxEntries + 1 windows in the session service
-// and makes sure we only get back TabRestoreService::kMaxEntries on restore.
-TEST_F(TabRestoreServiceTest, ManyWindowsInSessionService) {
+// Creates kMaxEntries + 1 windows in the session service and makes sure we only
+// get back kMaxEntries on restore.
+TEST_F(PersistentTabRestoreServiceTest, 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 +517,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();
@@ -518,7 +534,7 @@ TEST_F(TabRestoreServiceTest, ManyWindowsInSessionService) {
}
// Makes sure we restore timestamps correctly.
-TEST_F(TabRestoreServiceTest, TimestampSurvivesRestore) {
+TEST_F(PersistentTabRestoreServiceTest, TimestampSurvivesRestore) {
base::Time tab_timestamp(base::Time::FromInternalValue(123456789));
AddThreeNavigations();
@@ -569,11 +585,11 @@ TEST_F(TabRestoreServiceTest, TimestampSurvivesRestore) {
}
}
-TEST_F(TabRestoreServiceTest, PruneEntries) {
+TEST_F(PersistentTabRestoreServiceTest, 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 +600,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 +618,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 +634,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,33 +648,33 @@ 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());
}
// Regression test for crbug.com/106082
-TEST_F(TabRestoreServiceTest, PruneIsCalled) {
+TEST_F(PersistentTabRestoreServiceTest, PruneIsCalled) {
CreateSessionServiceWithOneWindow(false);
SessionServiceFactory::GetForProfile(profile())->
@@ -666,14 +682,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(web_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());
}
« no previous file with comments | « chrome/browser/sessions/persistent_tab_restore_service.cc ('k') | chrome/browser/sessions/session_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698