Index: chrome/browser/sessions/better_session_restore_browsertest.cc |
diff --git a/chrome/browser/sessions/better_session_restore_browsertest.cc b/chrome/browser/sessions/better_session_restore_browsertest.cc |
index 2962d938d81357d1dd7a9fe1fcddfa0799b2c43f..64387deda51a480889d64167e5e97c9094cbaaec 100644 |
--- a/chrome/browser/sessions/better_session_restore_browsertest.cc |
+++ b/chrome/browser/sessions/better_session_restore_browsertest.cc |
@@ -22,6 +22,7 @@ |
#include "chrome/test/base/in_process_browser_test.h" |
#include "chrome/test/base/ui_test_utils.h" |
#include "content/public/browser/web_contents.h" |
+#include "content/public/common/url_constants.h" |
#include "content/public/test/browser_test_utils.h" |
#include "net/base/net_util.h" |
#include "net/base/upload_bytes_element_reader.h" |
@@ -131,6 +132,21 @@ class BetterSessionRestoreTest : public InProcessBrowserTest { |
EXPECT_EQ(title_storing_, final_title); |
} |
+ void NavigateAndCheckStoredData(const std::string& filename) { |
+ // Navigate to a page which has previously stored data; check that the |
+ // stored data can be accessed. |
+ content::WebContents* web_contents = |
+ chrome::GetActiveWebContents(browser()); |
+ content::TitleWatcher title_watcher(web_contents, title_pass_); |
+ title_watcher.AlsoWaitForTitle(title_storing_); |
+ title_watcher.AlsoWaitForTitle(title_error_write_failed_); |
+ title_watcher.AlsoWaitForTitle(title_error_empty_); |
+ ui_test_utils::NavigateToURL( |
+ browser(), GURL(fake_server_address_ + test_path_ + filename)); |
+ string16 final_title = title_watcher.WaitAndGetTitle(); |
+ EXPECT_EQ(title_pass_, final_title); |
+ } |
+ |
void CheckReloadedPageRestored() { |
CheckTitle(title_pass_); |
} |
@@ -218,13 +234,16 @@ class BetterSessionRestoreTest : public InProcessBrowserTest { |
}; |
class ContinueWhereILeftOffTest : public BetterSessionRestoreTest { |
+ public: |
+ virtual void SetUpOnMainThread() OVERRIDE { |
+ SessionStartupPref::SetStartupPref( |
+ browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
+ } |
}; |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionCookies) { |
// Set the startup preference to "continue where I left off" and visit a page |
// which stores a session cookie. |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
StoreDataWithPage("session_cookies.html"); |
} |
@@ -235,8 +254,6 @@ IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionCookies) { |
} |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionStorage) { |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
StoreDataWithPage("session_storage.html"); |
} |
@@ -246,8 +263,6 @@ IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionStorage) { |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, |
PRE_PRE_LocalStorageClearedOnExit) { |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
StoreDataWithPage("local_storage.html"); |
} |
@@ -273,8 +288,6 @@ IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, |
PRE_PRE_CookiesClearedOnExit) { |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
StoreDataWithPage("cookies.html"); |
} |
@@ -291,8 +304,6 @@ IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, CookiesClearedOnExit) { |
} |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_Post) { |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
PostFormWithPage("post.html", false); |
} |
@@ -301,8 +312,6 @@ IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, Post) { |
} |
IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_PostWithPassword) { |
- SessionStartupPref::SetStartupPref( |
- browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
PostFormWithPage("post_with_password.html", true); |
} |
@@ -392,3 +401,77 @@ IN_PROC_BROWSER_TEST_F(RestartTest, PostWithPassword) { |
// The form data contained passwords, so it's removed completely. |
CheckFormRestored(false, false); |
} |
+ |
+// These tests ensure that the Better Session Restore features are not triggered |
+// when they shouldn't be. |
+class NoSessionRestoreTest : public BetterSessionRestoreTest { |
+ public: |
+ virtual void SetUpOnMainThread() OVERRIDE { |
+ SessionStartupPref::SetStartupPref( |
+ browser()->profile(), SessionStartupPref(SessionStartupPref::DEFAULT)); |
+ } |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_SessionCookies) { |
+ StoreDataWithPage("session_cookies.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, SessionCookies) { |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ // When we navigate to the page again, it doens't see the data previously |
+ // stored. |
+ StoreDataWithPage("session_cookies.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_SessionStorage) { |
+ StoreDataWithPage("session_storage.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, SessionStorage) { |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ StoreDataWithPage("session_storage.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, |
+ PRE_PRE_LocalStorageClearedOnExit) { |
+ StoreDataWithPage("local_storage.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_LocalStorageClearedOnExit) { |
+ // Normally localStorage is persisted. |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ NavigateAndCheckStoredData("local_storage.html"); |
+ // ... but not if it's set to clear on exit. |
+ CookieSettings::Factory::GetForProfile(browser()->profile())-> |
+ SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); |
+} |
+ |
+// See flakiness comment above. |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, MAYBE_LocalStorageClearedOnExit) { |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ StoreDataWithPage("local_storage.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_PRE_CookiesClearedOnExit) { |
+ StoreDataWithPage("cookies.html"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_CookiesClearedOnExit) { |
+ // Normally cookies are restored. |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ NavigateAndCheckStoredData("cookies.html"); |
+ // ... but not if the content setting is set to clear on exit. |
+ CookieSettings::Factory::GetForProfile(browser()->profile())-> |
+ SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, CookiesClearedOnExit) { |
+ content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
+ EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec()); |
+ StoreDataWithPage("local_storage.html"); |
+} |