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

Side by Side Diff: chrome/browser/extensions/isolated_app_browsertest.cc

Issue 10850010: Make session restore understand that tabs have multiple SessionStorageNamespaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased, with test robustified. Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
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/utf_string_conversions.h" 5 #include "base/utf_string_conversions.h"
6 #include "chrome/browser/automation/automation_util.h" 6 #include "chrome/browser/automation/automation_util.h"
7 #include "chrome/browser/extensions/extension_apitest.h" 7 #include "chrome/browser/extensions/extension_apitest.h"
8 #include "chrome/browser/extensions/extension_host.h" 8 #include "chrome/browser/extensions/extension_host.h"
9 #include "chrome/browser/extensions/extension_service.h" 9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 EXPECT_NE(process_id_0, 292 EXPECT_NE(process_id_0,
293 chrome::GetWebContentsAt(browser(), 3)->GetRenderProcessHost()->GetI D()); 293 chrome::GetWebContentsAt(browser(), 3)->GetRenderProcessHost()->GetI D());
294 294
295 // Navigating the second tab out of the app should cause a process swap. 295 // Navigating the second tab out of the app should cause a process swap.
296 const GURL& non_app_url(base_url.Resolve("non_app/main.html")); 296 const GURL& non_app_url(base_url.Resolve("non_app/main.html"));
297 NavigateInRenderer(chrome::GetWebContentsAt(browser(), 1), non_app_url); 297 NavigateInRenderer(chrome::GetWebContentsAt(browser(), 1), non_app_url);
298 EXPECT_NE(process_id_1, 298 EXPECT_NE(process_id_1,
299 chrome::GetWebContentsAt(browser(), 1)->GetRenderProcessHost()->GetI D()); 299 chrome::GetWebContentsAt(browser(), 1)->GetRenderProcessHost()->GetI D());
300 } 300 }
301 301
302 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SessionStorage) { 302 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, PRE_SessionStorage) {
303 host_resolver()->AddRule("*", "127.0.0.1"); 303 host_resolver()->AddRule("*", "127.0.0.1");
304 ASSERT_TRUE(test_server()->Start()); 304 ASSERT_TRUE(test_server()->Start());
305 305
306 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1"))); 306 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1")));
307 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app2"))); 307 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app2")));
308 308
309 // The app under test acts on URLs whose host is "localhost", 309 // The app under test acts on URLs whose host is "localhost",
310 // so the URLs we navigate to must have host "localhost". 310 // so the URLs we navigate to must have host "localhost".
311 GURL base_url = test_server()->GetURL( 311 GURL base_url = test_server()->GetURL(
312 "files/extensions/isolated_apps/"); 312 "files/extensions/isolated_apps/");
(...skipping 25 matching lines...) Expand all
338 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 338 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
339 ASSERT_TRUE(ExecuteJavaScript( 339 ASSERT_TRUE(ExecuteJavaScript(
340 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 340 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
341 L"", 341 L"",
342 L"window.sessionStorage.setItem('testdata', 'ss_normal');")); 342 L"window.sessionStorage.setItem('testdata', 'ss_normal');"));
343 343
344 // Now, ensure that the sessionStorage is correctly partitioned, and persists 344 // Now, ensure that the sessionStorage is correctly partitioned, and persists
345 // when we navigate around all over the dang place. 345 // when we navigate around all over the dang place.
346 const std::wstring& kRetrieveSessionStorage = 346 const std::wstring& kRetrieveSessionStorage =
347 WrapForJavascriptAndExtract( 347 WrapForJavascriptAndExtract(
348 L"window.sessionStorage.getItem('testdata')"); 348 L"window.sessionStorage.getItem('testdata') || bad_value");
349 std::string result; 349 std::string result;
350 ui_test_utils::NavigateToURLWithDisposition( 350 ui_test_utils::NavigateToURLWithDisposition(
351 browser(), base_url.Resolve("app1/main.html"), 351 browser(), base_url.Resolve("app1/main.html"),
352 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
353 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
354 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
355 L"", kRetrieveSessionStorage.c_str(), &result));
356 EXPECT_EQ("ss_app1", result);
357
358 ui_test_utils::NavigateToURLWithDisposition(
359 browser(), base_url.Resolve("app2/main.html"),
360 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
361 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
362 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
363 L"", kRetrieveSessionStorage.c_str(), &result));
364 EXPECT_EQ("ss_app2", result);
365
366 ui_test_utils::NavigateToURLWithDisposition(
367 browser(), base_url.Resolve("non_app/main.html"),
368 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
369 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
370 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
371 L"", kRetrieveSessionStorage.c_str(), &result));
372 EXPECT_EQ("ss_normal", result);
373 }
374
375 // Okay, let's whack the brwoser, restore it, and see if we keep our
376 // sessionStorage.
377 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, DISABLED_SessionStorage) {
378 host_resolver()->AddRule("*", "127.0.0.1");
379 ASSERT_TRUE(test_server()->Start());
380
381 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1")));
382 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app2")));
383
384 // The app under test acts on URLs whose host is "localhost",
385 // so the URLs we navigate to must have host "localhost".
386 GURL base_url = test_server()->GetURL(
387 "files/extensions/isolated_apps/");
388 GURL::Replacements replace_host;
389 std::string host_str("localhost"); // Must stay in scope with replace_host.
390 replace_host.SetHostStr(host_str);
391 base_url = base_url.ReplaceComponents(replace_host);
392
393 const std::wstring& kRetrieveSessionStorage =
394 WrapForJavascriptAndExtract(
395 L"window.sessionStorage.getItem('testdata') || 'bad_value'");
396 std::string result;
397 ui_test_utils::NavigateToURLWithDisposition(
398 browser(), base_url.Resolve("app1/main.html"),
352 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 399 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
353 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 400 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
354 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 401 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
355 L"", kRetrieveSessionStorage.c_str(), &result)); 402 L"", kRetrieveSessionStorage.c_str(), &result));
356 EXPECT_EQ("ss_app1", result); 403 EXPECT_EQ("ss_app1", result);
357 404
358 ui_test_utils::NavigateToURLWithDisposition( 405 ui_test_utils::NavigateToURLWithDisposition(
359 browser(), base_url.Resolve("app2/main.html"), 406 browser(), base_url.Resolve("app2/main.html"),
360 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 407 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
361 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 408 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
362 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 409 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
363 L"", kRetrieveSessionStorage.c_str(), &result)); 410 L"", kRetrieveSessionStorage.c_str(), &result));
364 EXPECT_EQ("ss_app2", result); 411 EXPECT_EQ("ss_app2", result);
365 412
366 ui_test_utils::NavigateToURLWithDisposition( 413 ui_test_utils::NavigateToURLWithDisposition(
367 browser(), base_url.Resolve("non_app/main.html"), 414 browser(), base_url.Resolve("non_app/main.html"),
368 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 415 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
369 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 416 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
370 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 417 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
371 L"", kRetrieveSessionStorage.c_str(), &result)); 418 L"", kRetrieveSessionStorage.c_str(), &result));
372 EXPECT_EQ("ss_normal", result); 419 EXPECT_EQ("ss_normal", result);
373 } 420 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/sessions/session_restore.cc » ('j') | chrome/browser/sessions/session_service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698