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

Side by Side Diff: chrome/browser/sessions/better_session_restore_browsertest.cc

Issue 11474055: Automate Better Session Restore tests: cases where it shouldn't be triggered. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: chromeos fix Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/file_path.h" 6 #include "base/file_path.h"
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/content_settings/cookie_settings.h" 12 #include "chrome/browser/content_settings/cookie_settings.h"
13 #include "chrome/browser/prefs/pref_service.h" 13 #include "chrome/browser/prefs/pref_service.h"
14 #include "chrome/browser/prefs/session_startup_pref.h" 14 #include "chrome/browser/prefs/session_startup_pref.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/ui/browser.h" 16 #include "chrome/browser/ui/browser.h"
17 #include "chrome/browser/ui/browser_list.h" 17 #include "chrome/browser/ui/browser_list.h"
18 #include "chrome/browser/ui/browser_tabstrip.h" 18 #include "chrome/browser/ui/browser_tabstrip.h"
19 #include "chrome/common/chrome_switches.h" 19 #include "chrome/common/chrome_switches.h"
20 #include "chrome/common/content_settings.h" 20 #include "chrome/common/content_settings.h"
21 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
22 #include "chrome/test/base/in_process_browser_test.h" 22 #include "chrome/test/base/in_process_browser_test.h"
23 #include "chrome/test/base/ui_test_utils.h" 23 #include "chrome/test/base/ui_test_utils.h"
24 #include "content/public/browser/web_contents.h" 24 #include "content/public/browser/web_contents.h"
25 #include "content/public/common/url_constants.h"
25 #include "content/public/test/browser_test_utils.h" 26 #include "content/public/test/browser_test_utils.h"
26 #include "net/base/net_util.h" 27 #include "net/base/net_util.h"
27 #include "net/base/upload_bytes_element_reader.h" 28 #include "net/base/upload_bytes_element_reader.h"
28 #include "net/base/upload_data_stream.h" 29 #include "net/base/upload_data_stream.h"
29 #include "net/url_request/url_request.h" 30 #include "net/url_request/url_request.h"
30 #include "net/url_request/url_request_filter.h" 31 #include "net/url_request/url_request_filter.h"
31 #include "net/url_request/url_request_test_job.h" 32 #include "net/url_request/url_request_test_job.h"
32 33
33 namespace { 34 namespace {
34 35
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 content::TitleWatcher title_watcher(web_contents, title_storing_); 125 content::TitleWatcher title_watcher(web_contents, title_storing_);
125 title_watcher.AlsoWaitForTitle(title_pass_); 126 title_watcher.AlsoWaitForTitle(title_pass_);
126 title_watcher.AlsoWaitForTitle(title_error_write_failed_); 127 title_watcher.AlsoWaitForTitle(title_error_write_failed_);
127 title_watcher.AlsoWaitForTitle(title_error_empty_); 128 title_watcher.AlsoWaitForTitle(title_error_empty_);
128 ui_test_utils::NavigateToURL( 129 ui_test_utils::NavigateToURL(
129 browser(), GURL(fake_server_address_ + test_path_ + filename)); 130 browser(), GURL(fake_server_address_ + test_path_ + filename));
130 string16 final_title = title_watcher.WaitAndGetTitle(); 131 string16 final_title = title_watcher.WaitAndGetTitle();
131 EXPECT_EQ(title_storing_, final_title); 132 EXPECT_EQ(title_storing_, final_title);
132 } 133 }
133 134
135 void NavigateAndCheckStoredData(const std::string& filename) {
136 // Navigate to a page which has previously stored data; check that the
137 // stored data can be accessed.
138 content::WebContents* web_contents =
139 chrome::GetActiveWebContents(browser());
140 content::TitleWatcher title_watcher(web_contents, title_pass_);
141 title_watcher.AlsoWaitForTitle(title_storing_);
142 title_watcher.AlsoWaitForTitle(title_error_write_failed_);
143 title_watcher.AlsoWaitForTitle(title_error_empty_);
144 ui_test_utils::NavigateToURL(
145 browser(), GURL(fake_server_address_ + test_path_ + filename));
146 string16 final_title = title_watcher.WaitAndGetTitle();
147 EXPECT_EQ(title_pass_, final_title);
148 }
149
134 void CheckReloadedPageRestored() { 150 void CheckReloadedPageRestored() {
135 CheckTitle(title_pass_); 151 CheckTitle(title_pass_);
136 } 152 }
137 153
138 void CheckReloadedPageNotRestored() { 154 void CheckReloadedPageNotRestored() {
139 CheckTitle(title_storing_); 155 CheckTitle(title_storing_);
140 } 156 }
141 157
142 void CheckTitle(const string16& expected_title) { 158 void CheckTitle(const string16& expected_title) {
143 content::WebContents* web_contents = chrome::GetWebContentsAt(browser(), 0); 159 content::WebContents* web_contents = chrome::GetWebContentsAt(browser(), 0);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 std::string test_path_; 227 std::string test_path_;
212 string16 title_pass_; 228 string16 title_pass_;
213 string16 title_storing_; 229 string16 title_storing_;
214 string16 title_error_write_failed_; 230 string16 title_error_write_failed_;
215 string16 title_error_empty_; 231 string16 title_error_empty_;
216 232
217 DISALLOW_COPY_AND_ASSIGN(BetterSessionRestoreTest); 233 DISALLOW_COPY_AND_ASSIGN(BetterSessionRestoreTest);
218 }; 234 };
219 235
220 class ContinueWhereILeftOffTest : public BetterSessionRestoreTest { 236 class ContinueWhereILeftOffTest : public BetterSessionRestoreTest {
237 public:
238 virtual void SetUpOnMainThread() OVERRIDE {
239 SessionStartupPref::SetStartupPref(
240 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
241 }
221 }; 242 };
222 243
223 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionCookies) { 244 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionCookies) {
224 // Set the startup preference to "continue where I left off" and visit a page 245 // Set the startup preference to "continue where I left off" and visit a page
225 // which stores a session cookie. 246 // which stores a session cookie.
226 SessionStartupPref::SetStartupPref(
227 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
228 StoreDataWithPage("session_cookies.html"); 247 StoreDataWithPage("session_cookies.html");
229 } 248 }
230 249
231 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionCookies) { 250 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionCookies) {
232 // The browsing session will be continued; just wait for the page to reload 251 // The browsing session will be continued; just wait for the page to reload
233 // and check the stored data. 252 // and check the stored data.
234 CheckReloadedPageRestored(); 253 CheckReloadedPageRestored();
235 } 254 }
236 255
237 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionStorage) { 256 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_SessionStorage) {
238 SessionStartupPref::SetStartupPref(
239 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
240 StoreDataWithPage("session_storage.html"); 257 StoreDataWithPage("session_storage.html");
241 } 258 }
242 259
243 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionStorage) { 260 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, SessionStorage) {
244 CheckReloadedPageRestored(); 261 CheckReloadedPageRestored();
245 } 262 }
246 263
247 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, 264 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest,
248 PRE_PRE_LocalStorageClearedOnExit) { 265 PRE_PRE_LocalStorageClearedOnExit) {
249 SessionStartupPref::SetStartupPref(
250 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
251 StoreDataWithPage("local_storage.html"); 266 StoreDataWithPage("local_storage.html");
252 } 267 }
253 268
254 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, 269 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest,
255 PRE_LocalStorageClearedOnExit) { 270 PRE_LocalStorageClearedOnExit) {
256 // Normally localStorage is restored. 271 // Normally localStorage is restored.
257 CheckReloadedPageRestored(); 272 CheckReloadedPageRestored();
258 // ... but not if it's set to clear on exit. 273 // ... but not if it's set to clear on exit.
259 CookieSettings::Factory::GetForProfile(browser()->profile())-> 274 CookieSettings::Factory::GetForProfile(browser()->profile())->
260 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); 275 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY);
261 } 276 }
262 277
263 // Flaky on Linux: http://crbug.com/163096 278 // Flaky on Linux: http://crbug.com/163096
264 #if defined(OS_LINUX) 279 #if defined(OS_LINUX)
265 #define MAYBE_LocalStorageClearedOnExit DISABLED_LocalStorageClearedOnExit 280 #define MAYBE_LocalStorageClearedOnExit DISABLED_LocalStorageClearedOnExit
266 #else 281 #else
267 #define MAYBE_LocalStorageClearedOnExit LocalStorageClearedOnExit 282 #define MAYBE_LocalStorageClearedOnExit LocalStorageClearedOnExit
268 #endif 283 #endif
269 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, 284 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest,
270 MAYBE_LocalStorageClearedOnExit) { 285 MAYBE_LocalStorageClearedOnExit) {
271 CheckReloadedPageNotRestored(); 286 CheckReloadedPageNotRestored();
272 } 287 }
273 288
274 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, 289 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest,
275 PRE_PRE_CookiesClearedOnExit) { 290 PRE_PRE_CookiesClearedOnExit) {
276 SessionStartupPref::SetStartupPref(
277 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
278 StoreDataWithPage("cookies.html"); 291 StoreDataWithPage("cookies.html");
279 } 292 }
280 293
281 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_CookiesClearedOnExit) { 294 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_CookiesClearedOnExit) {
282 // Normally cookies are restored. 295 // Normally cookies are restored.
283 CheckReloadedPageRestored(); 296 CheckReloadedPageRestored();
284 // ... but not if the content setting is set to clear on exit. 297 // ... but not if the content setting is set to clear on exit.
285 CookieSettings::Factory::GetForProfile(browser()->profile())-> 298 CookieSettings::Factory::GetForProfile(browser()->profile())->
286 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY); 299 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY);
287 } 300 }
288 301
289 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, CookiesClearedOnExit) { 302 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, CookiesClearedOnExit) {
290 CheckReloadedPageNotRestored(); 303 CheckReloadedPageNotRestored();
291 } 304 }
292 305
293 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_Post) { 306 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_Post) {
294 SessionStartupPref::SetStartupPref(
295 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
296 PostFormWithPage("post.html", false); 307 PostFormWithPage("post.html", false);
297 } 308 }
298 309
299 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, Post) { 310 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, Post) {
300 CheckFormRestored(true, false); 311 CheckFormRestored(true, false);
301 } 312 }
302 313
303 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_PostWithPassword) { 314 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PRE_PostWithPassword) {
304 SessionStartupPref::SetStartupPref(
305 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
306 PostFormWithPage("post_with_password.html", true); 315 PostFormWithPage("post_with_password.html", true);
307 } 316 }
308 317
309 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PostWithPassword) { 318 IN_PROC_BROWSER_TEST_F(ContinueWhereILeftOffTest, PostWithPassword) {
310 CheckReloadedPageRestored(); 319 CheckReloadedPageRestored();
311 // The form data contained passwords, so it's removed completely. 320 // The form data contained passwords, so it's removed completely.
312 CheckFormRestored(false, false); 321 CheckFormRestored(false, false);
313 } 322 }
314 323
315 class RestartTest : public BetterSessionRestoreTest { 324 class RestartTest : public BetterSessionRestoreTest {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 394
386 IN_PROC_BROWSER_TEST_F(RestartTest, PRE_PostWithPassword) { 395 IN_PROC_BROWSER_TEST_F(RestartTest, PRE_PostWithPassword) {
387 PostFormWithPage("post_with_password.html", true); 396 PostFormWithPage("post_with_password.html", true);
388 Restart(); 397 Restart();
389 } 398 }
390 399
391 IN_PROC_BROWSER_TEST_F(RestartTest, PostWithPassword) { 400 IN_PROC_BROWSER_TEST_F(RestartTest, PostWithPassword) {
392 // The form data contained passwords, so it's removed completely. 401 // The form data contained passwords, so it's removed completely.
393 CheckFormRestored(false, false); 402 CheckFormRestored(false, false);
394 } 403 }
404
405 // These tests ensure that the Better Session Restore features are not triggered
406 // when they shouldn't be.
407 class NoSessionRestoreTest : public BetterSessionRestoreTest {
408 public:
409 virtual void SetUpOnMainThread() OVERRIDE {
410 SessionStartupPref::SetStartupPref(
411 browser()->profile(), SessionStartupPref(SessionStartupPref::DEFAULT));
412 }
413 };
414
415 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_SessionCookies) {
416 StoreDataWithPage("session_cookies.html");
417 }
418
419 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, SessionCookies) {
420 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
421 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
422 // When we navigate to the page again, it doens't see the data previously
423 // stored.
424 StoreDataWithPage("session_cookies.html");
425 }
426
427 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_SessionStorage) {
428 StoreDataWithPage("session_storage.html");
429 }
430
431 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, SessionStorage) {
432 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
433 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
434 StoreDataWithPage("session_storage.html");
435 }
436
437 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest,
438 PRE_PRE_LocalStorageClearedOnExit) {
439 StoreDataWithPage("local_storage.html");
440 }
441
442 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_LocalStorageClearedOnExit) {
443 // Normally localStorage is persisted.
444 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
445 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
446 NavigateAndCheckStoredData("local_storage.html");
447 // ... but not if it's set to clear on exit.
448 CookieSettings::Factory::GetForProfile(browser()->profile())->
449 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY);
450 }
451
452 // See flakiness comment above.
453 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, MAYBE_LocalStorageClearedOnExit) {
454 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
455 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
456 StoreDataWithPage("local_storage.html");
457 }
458
459 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_PRE_CookiesClearedOnExit) {
460 StoreDataWithPage("cookies.html");
461 }
462
463 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, PRE_CookiesClearedOnExit) {
464 // Normally cookies are restored.
465 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
466 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
467 NavigateAndCheckStoredData("cookies.html");
468 // ... but not if the content setting is set to clear on exit.
469 CookieSettings::Factory::GetForProfile(browser()->profile())->
470 SetDefaultCookieSetting(CONTENT_SETTING_SESSION_ONLY);
471 }
472
473 IN_PROC_BROWSER_TEST_F(NoSessionRestoreTest, CookiesClearedOnExit) {
474 content::WebContents* web_contents = chrome::GetActiveWebContents(browser());
475 EXPECT_EQ(std::string(chrome::kAboutBlankURL), web_contents->GetURL().spec());
476 StoreDataWithPage("local_storage.html");
477 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698