OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |