Index: chrome/browser/extensions/isolated_app_browsertest.cc |
diff --git a/chrome/browser/extensions/isolated_app_browsertest.cc b/chrome/browser/extensions/isolated_app_browsertest.cc |
index 1b4f3eb66949c4c5a235918a01465a7e4f5afb30..690618dd7a084bb170829fe1ef1df7885524a414 100644 |
--- a/chrome/browser/extensions/isolated_app_browsertest.cc |
+++ b/chrome/browser/extensions/isolated_app_browsertest.cc |
@@ -299,7 +299,7 @@ IN_PROC_BROWSER_TEST_F(IsolatedAppTest, IsolatedAppProcessModel) { |
chrome::GetWebContentsAt(browser(), 1)->GetRenderProcessHost()->GetID()); |
} |
-IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SessionStorage) { |
+IN_PROC_BROWSER_TEST_F(IsolatedAppTest, PRE_SessionStorage) { |
host_resolver()->AddRule("*", "127.0.0.1"); |
ASSERT_TRUE(test_server()->Start()); |
@@ -345,7 +345,54 @@ IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SessionStorage) { |
// when we navigate around all over the dang place. |
const std::wstring& kRetrieveSessionStorage = |
WrapForJavascriptAndExtract( |
- L"window.sessionStorage.getItem('testdata')"); |
+ L"window.sessionStorage.getItem('testdata') || bad_value"); |
+ std::string result; |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser(), base_url.Resolve("app1/main.html"), |
+ CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ ASSERT_TRUE(ExecuteJavaScriptAndExtractString( |
+ chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), |
+ L"", kRetrieveSessionStorage.c_str(), &result)); |
+ EXPECT_EQ("ss_app1", result); |
+ |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser(), base_url.Resolve("app2/main.html"), |
+ CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ ASSERT_TRUE(ExecuteJavaScriptAndExtractString( |
+ chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), |
+ L"", kRetrieveSessionStorage.c_str(), &result)); |
+ EXPECT_EQ("ss_app2", result); |
+ |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser(), base_url.Resolve("non_app/main.html"), |
+ CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ ASSERT_TRUE(ExecuteJavaScriptAndExtractString( |
+ chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), |
+ L"", kRetrieveSessionStorage.c_str(), &result)); |
+ EXPECT_EQ("ss_normal", result); |
+} |
+ |
+// Okay, let's whack the brwoser, restore it, and see if we keep our |
+// sessionStorage. |
+IN_PROC_BROWSER_TEST_F(IsolatedAppTest, DISABLED_SessionStorage) { |
+ host_resolver()->AddRule("*", "127.0.0.1"); |
+ ASSERT_TRUE(test_server()->Start()); |
+ |
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1"))); |
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app2"))); |
+ |
+ // The app under test acts on URLs whose host is "localhost", |
+ // so the URLs we navigate to must have host "localhost". |
+ GURL base_url = test_server()->GetURL( |
+ "files/extensions/isolated_apps/"); |
+ GURL::Replacements replace_host; |
+ std::string host_str("localhost"); // Must stay in scope with replace_host. |
+ replace_host.SetHostStr(host_str); |
+ base_url = base_url.ReplaceComponents(replace_host); |
+ |
+ const std::wstring& kRetrieveSessionStorage = |
+ WrapForJavascriptAndExtract( |
+ L"window.sessionStorage.getItem('testdata') || 'bad_value'"); |
std::string result; |
ui_test_utils::NavigateToURLWithDisposition( |
browser(), base_url.Resolve("app1/main.html"), |