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

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

Issue 11734018: Revert 174880 due to compilation error in pdf_browsertest.cc (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1374/src/
Patch Set: Created 7 years, 11 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/stringprintf.h" 5 #include "base/stringprintf.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/automation/automation_util.h" 7 #include "chrome/browser/automation/automation_util.h"
8 #include "chrome/browser/extensions/extension_apitest.h" 8 #include "chrome/browser/extensions/extension_apitest.h"
9 #include "chrome/browser/extensions/extension_host.h" 9 #include "chrome/browser/extensions/extension_host.h"
10 #include "chrome/browser/extensions/extension_service.h" 10 #include "chrome/browser/extensions/extension_service.h"
(...skipping 12 matching lines...) Expand all
23 #include "net/base/mock_host_resolver.h" 23 #include "net/base/mock_host_resolver.h"
24 24
25 using content::ExecuteJavaScript; 25 using content::ExecuteJavaScript;
26 using content::ExecuteJavaScriptAndExtractString; 26 using content::ExecuteJavaScriptAndExtractString;
27 using content::NavigationController; 27 using content::NavigationController;
28 using content::WebContents; 28 using content::WebContents;
29 using content::RenderViewHost; 29 using content::RenderViewHost;
30 30
31 namespace { 31 namespace {
32 32
33 std::string WrapForJavascriptAndExtract(const char* javascript_expression) { 33 std::wstring WrapForJavascriptAndExtract(
34 return std::string("window.domAutomationController.send(") + 34 const wchar_t* javascript_expression) {
35 javascript_expression + ")"; 35 return std::wstring(L"window.domAutomationController.send(") +
36 javascript_expression + L")";
36 } 37 }
37 38
38 class IsolatedAppTest : public ExtensionBrowserTest { 39 class IsolatedAppTest : public ExtensionBrowserTest {
39 public: 40 public:
40 // Returns whether the given tab's current URL has the given cookie. 41 // Returns whether the given tab's current URL has the given cookie.
41 bool WARN_UNUSED_RESULT HasCookie(WebContents* contents, std::string cookie) { 42 bool WARN_UNUSED_RESULT HasCookie(WebContents* contents, std::string cookie) {
42 int value_size; 43 int value_size;
43 std::string actual_cookie; 44 std::string actual_cookie;
44 automation_util::GetCookies(contents->GetURL(), contents, &value_size, 45 automation_util::GetCookies(contents->GetURL(), contents, &value_size,
45 &actual_cookie); 46 &actual_cookie);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 120
120 // Using JavaScript to navigate to app2 page, 121 // Using JavaScript to navigate to app2 page,
121 // after the non_app page has finished loading. 122 // after the non_app page has finished loading.
122 content::WindowedNotificationObserver observer1( 123 content::WindowedNotificationObserver observer1(
123 content::NOTIFICATION_LOAD_STOP, 124 content::NOTIFICATION_LOAD_STOP,
124 content::Source<NavigationController>( 125 content::Source<NavigationController>(
125 &chrome::GetActiveWebContents(browser())->GetController())); 126 &chrome::GetActiveWebContents(browser())->GetController()));
126 std::string script = base::StringPrintf( 127 std::string script = base::StringPrintf(
127 "document.location.href=\"%s\";", 128 "document.location.href=\"%s\";",
128 base_url.Resolve("app2/main.html").spec().c_str()); 129 base_url.Resolve("app2/main.html").spec().c_str());
129 EXPECT_TRUE(ExecuteJavaScript(rvh, "", script)); 130 EXPECT_TRUE(ExecuteJavaScript(rvh, L"", ASCIIToWide(script)));
130 observer1.Wait(); 131 observer1.Wait();
131 132
132 // This kind of navigation should not replace previous navigation entry. 133 // This kind of navigation should not replace previous navigation entry.
133 EXPECT_TRUE(chrome::CanGoBack(browser())); 134 EXPECT_TRUE(chrome::CanGoBack(browser()));
134 chrome::GoBack(browser(), CURRENT_TAB); 135 chrome::GoBack(browser(), CURRENT_TAB);
135 EXPECT_FALSE(chrome::CanGoBack(browser())); 136 EXPECT_FALSE(chrome::CanGoBack(browser()));
136 } 137 }
137 138
138 // Tests that cookies set within an isolated app are not visible to normal 139 // Tests that cookies set within an isolated app are not visible to normal
139 // pages or other apps. 140 // pages or other apps.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 ASSERT_TRUE(GetInstalledApp(tab0)); 176 ASSERT_TRUE(GetInstalledApp(tab0));
176 ASSERT_TRUE(GetInstalledApp(tab1)); 177 ASSERT_TRUE(GetInstalledApp(tab1));
177 ASSERT_TRUE(!GetInstalledApp(tab2)); 178 ASSERT_TRUE(!GetInstalledApp(tab2));
178 179
179 // Check that tabs see cannot each other's localStorage even though they are 180 // Check that tabs see cannot each other's localStorage even though they are
180 // in the same origin. 181 // in the same origin.
181 RenderViewHost* app1_rvh = tab0->GetRenderViewHost(); 182 RenderViewHost* app1_rvh = tab0->GetRenderViewHost();
182 RenderViewHost* app2_rvh = tab1->GetRenderViewHost(); 183 RenderViewHost* app2_rvh = tab1->GetRenderViewHost();
183 RenderViewHost* non_app_rvh = tab2->GetRenderViewHost(); 184 RenderViewHost* non_app_rvh = tab2->GetRenderViewHost();
184 ASSERT_TRUE(ExecuteJavaScript( 185 ASSERT_TRUE(ExecuteJavaScript(
185 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');")); 186 app1_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app1');"));
186 ASSERT_TRUE(ExecuteJavaScript( 187 ASSERT_TRUE(ExecuteJavaScript(
187 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');")); 188 app2_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app2');"));
188 ASSERT_TRUE(ExecuteJavaScript( 189 ASSERT_TRUE(ExecuteJavaScript(
189 non_app_rvh, 190 non_app_rvh, L"",
190 "", 191 L"window.localStorage.setItem('testdata', 'ls_normal');"));
191 "window.localStorage.setItem('testdata', 'ls_normal');"));
192 192
193 const std::string& kRetrieveLocalStorage = 193 const std::wstring& kRetrieveLocalStorage =
194 WrapForJavascriptAndExtract( 194 WrapForJavascriptAndExtract(
195 "window.localStorage.getItem('testdata') || 'badval'"); 195 L"window.localStorage.getItem('testdata') || 'badval'");
196 std::string result; 196 std::string result;
197 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 197 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
198 app1_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 198 app1_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
199 EXPECT_EQ("ls_app1", result); 199 EXPECT_EQ("ls_app1", result);
200 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 200 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
201 app2_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 201 app2_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
202 EXPECT_EQ("ls_app2", result); 202 EXPECT_EQ("ls_app2", result);
203 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 203 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
204 non_app_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 204 non_app_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
205 EXPECT_EQ("ls_normal", result); 205 EXPECT_EQ("ls_normal", result);
206 206
207 // Check that each tab sees its own cookie. 207 // Check that each tab sees its own cookie.
208 EXPECT_TRUE(HasCookie(tab0, "app1=3")); 208 EXPECT_TRUE(HasCookie(tab0, "app1=3"));
209 EXPECT_TRUE(HasCookie(tab1, "app2=4")); 209 EXPECT_TRUE(HasCookie(tab1, "app2=4"));
210 EXPECT_TRUE(HasCookie(tab2, "normalPage=5")); 210 EXPECT_TRUE(HasCookie(tab2, "normalPage=5"));
211 211
212 // Check that app1 tab cannot see the other cookies. 212 // Check that app1 tab cannot see the other cookies.
213 EXPECT_FALSE(HasCookie(tab0, "app2")); 213 EXPECT_FALSE(HasCookie(tab0, "app2"));
214 EXPECT_FALSE(HasCookie(tab0, "normalPage")); 214 EXPECT_FALSE(HasCookie(tab0, "normalPage"));
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 281
282 // Check that all tabs share the same localStorage if they have the same 282 // Check that all tabs share the same localStorage if they have the same
283 // origin. 283 // origin.
284 RenderViewHost* app1_rvh = 284 RenderViewHost* app1_rvh =
285 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(); 285 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost();
286 RenderViewHost* app2_rvh = 286 RenderViewHost* app2_rvh =
287 chrome::GetWebContentsAt(browser(), 1)->GetRenderViewHost(); 287 chrome::GetWebContentsAt(browser(), 1)->GetRenderViewHost();
288 RenderViewHost* non_app_rvh = 288 RenderViewHost* non_app_rvh =
289 chrome::GetWebContentsAt(browser(), 2)->GetRenderViewHost(); 289 chrome::GetWebContentsAt(browser(), 2)->GetRenderViewHost();
290 ASSERT_TRUE(ExecuteJavaScript( 290 ASSERT_TRUE(ExecuteJavaScript(
291 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');")); 291 app1_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app1');"));
292 ASSERT_TRUE(ExecuteJavaScript( 292 ASSERT_TRUE(ExecuteJavaScript(
293 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');")); 293 app2_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app2');"));
294 ASSERT_TRUE(ExecuteJavaScript( 294 ASSERT_TRUE(ExecuteJavaScript(
295 non_app_rvh, 295 non_app_rvh, L"",
296 "", 296 L"window.localStorage.setItem('testdata', 'ls_normal');"));
297 "window.localStorage.setItem('testdata', 'ls_normal');"));
298 297
299 const std::string& kRetrieveLocalStorage = 298 const std::wstring& kRetrieveLocalStorage =
300 WrapForJavascriptAndExtract("window.localStorage.getItem('testdata')"); 299 WrapForJavascriptAndExtract(L"window.localStorage.getItem('testdata')");
301 std::string result; 300 std::string result;
302 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 301 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
303 app1_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 302 app1_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
304 EXPECT_EQ("ls_normal", result); 303 EXPECT_EQ("ls_normal", result);
305 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 304 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
306 app2_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 305 app2_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
307 EXPECT_EQ("ls_normal", result); 306 EXPECT_EQ("ls_normal", result);
308 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 307 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
309 non_app_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 308 non_app_rvh, L"", kRetrieveLocalStorage.c_str(), &result));
310 EXPECT_EQ("ls_normal", result); 309 EXPECT_EQ("ls_normal", result);
311 } 310 }
312 311
313 // Tests that subresource and media requests use the app's cookie store. 312 // Tests that subresource and media requests use the app's cookie store.
314 // See http://crbug.com/141172. 313 // See http://crbug.com/141172.
315 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) { 314 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) {
316 host_resolver()->AddRule("*", "127.0.0.1"); 315 host_resolver()->AddRule("*", "127.0.0.1");
317 ASSERT_TRUE(test_server()->Start()); 316 ASSERT_TRUE(test_server()->Start());
318 317
319 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1"))); 318 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1")));
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 replace_host.SetHostStr(host_str); 448 replace_host.SetHostStr(host_str);
450 base_url = base_url.ReplaceComponents(replace_host); 449 base_url = base_url.ReplaceComponents(replace_host);
451 450
452 // Enter some state into sessionStorage three times on the same origin, but 451 // Enter some state into sessionStorage three times on the same origin, but
453 // for three URLs that correspond to app1, app2, and a non-isolated site. 452 // for three URLs that correspond to app1, app2, and a non-isolated site.
454 ui_test_utils::NavigateToURLWithDisposition( 453 ui_test_utils::NavigateToURLWithDisposition(
455 browser(), base_url.Resolve("app1/main.html"), 454 browser(), base_url.Resolve("app1/main.html"),
456 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 455 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
457 ASSERT_TRUE(ExecuteJavaScript( 456 ASSERT_TRUE(ExecuteJavaScript(
458 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 457 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
459 "", 458 L"",
460 "window.sessionStorage.setItem('testdata', 'ss_app1');")); 459 L"window.sessionStorage.setItem('testdata', 'ss_app1');"));
461 460
462 ui_test_utils::NavigateToURLWithDisposition( 461 ui_test_utils::NavigateToURLWithDisposition(
463 browser(), base_url.Resolve("app2/main.html"), 462 browser(), base_url.Resolve("app2/main.html"),
464 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 463 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
465 ASSERT_TRUE(ExecuteJavaScript( 464 ASSERT_TRUE(ExecuteJavaScript(
466 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 465 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
467 "", 466 L"",
468 "window.sessionStorage.setItem('testdata', 'ss_app2');")); 467 L"window.sessionStorage.setItem('testdata', 'ss_app2');"));
469 468
470 ui_test_utils::NavigateToURLWithDisposition( 469 ui_test_utils::NavigateToURLWithDisposition(
471 browser(), base_url.Resolve("non_app/main.html"), 470 browser(), base_url.Resolve("non_app/main.html"),
472 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 471 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
473 ASSERT_TRUE(ExecuteJavaScript( 472 ASSERT_TRUE(ExecuteJavaScript(
474 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 473 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
475 "", 474 L"",
476 "window.sessionStorage.setItem('testdata', 'ss_normal');")); 475 L"window.sessionStorage.setItem('testdata', 'ss_normal');"));
477 476
478 // Now, ensure that the sessionStorage is correctly partitioned, and persists 477 // Now, ensure that the sessionStorage is correctly partitioned, and persists
479 // when we navigate around all over the dang place. 478 // when we navigate around all over the dang place.
480 const std::string& kRetrieveSessionStorage = 479 const std::wstring& kRetrieveSessionStorage =
481 WrapForJavascriptAndExtract( 480 WrapForJavascriptAndExtract(
482 "window.sessionStorage.getItem('testdata') || 'badval'"); 481 L"window.sessionStorage.getItem('testdata') || 'badval'");
483 std::string result; 482 std::string result;
484 ui_test_utils::NavigateToURLWithDisposition( 483 ui_test_utils::NavigateToURLWithDisposition(
485 browser(), base_url.Resolve("app1/main.html"), 484 browser(), base_url.Resolve("app1/main.html"),
486 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 485 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
487 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 486 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
488 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 487 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
489 "", kRetrieveSessionStorage.c_str(), &result)); 488 L"", kRetrieveSessionStorage.c_str(), &result));
490 EXPECT_EQ("ss_app1", result); 489 EXPECT_EQ("ss_app1", result);
491 490
492 ui_test_utils::NavigateToURLWithDisposition( 491 ui_test_utils::NavigateToURLWithDisposition(
493 browser(), base_url.Resolve("app2/main.html"), 492 browser(), base_url.Resolve("app2/main.html"),
494 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 493 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
495 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 494 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
496 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 495 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
497 "", kRetrieveSessionStorage.c_str(), &result)); 496 L"", kRetrieveSessionStorage.c_str(), &result));
498 EXPECT_EQ("ss_app2", result); 497 EXPECT_EQ("ss_app2", result);
499 498
500 ui_test_utils::NavigateToURLWithDisposition( 499 ui_test_utils::NavigateToURLWithDisposition(
501 browser(), base_url.Resolve("non_app/main.html"), 500 browser(), base_url.Resolve("non_app/main.html"),
502 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 501 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
503 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 502 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
504 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 503 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
505 "", kRetrieveSessionStorage.c_str(), &result)); 504 L"", kRetrieveSessionStorage.c_str(), &result));
506 EXPECT_EQ("ss_normal", result); 505 EXPECT_EQ("ss_normal", result);
507 } 506 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_startup_browsertest.cc ('k') | chrome/browser/extensions/lazy_background_page_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698