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

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

Issue 11728003: Change ExecuteJavaScript* helper functions in browser_test_utils.{h,cc} (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding files for gpu_tests and NaCl browser tests. 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::wstring WrapForJavascriptAndExtract( 33 std::string WrapForJavascriptAndExtract(const char* javascript_expression) {
34 const wchar_t* javascript_expression) { 34 return std::string("window.domAutomationController.send(") +
35 return std::wstring(L"window.domAutomationController.send(") + 35 javascript_expression + ")";
36 javascript_expression + L")";
37 } 36 }
38 37
39 class IsolatedAppTest : public ExtensionBrowserTest { 38 class IsolatedAppTest : public ExtensionBrowserTest {
40 public: 39 public:
41 // Returns whether the given tab's current URL has the given cookie. 40 // Returns whether the given tab's current URL has the given cookie.
42 bool WARN_UNUSED_RESULT HasCookie(WebContents* contents, std::string cookie) { 41 bool WARN_UNUSED_RESULT HasCookie(WebContents* contents, std::string cookie) {
43 int value_size; 42 int value_size;
44 std::string actual_cookie; 43 std::string actual_cookie;
45 automation_util::GetCookies(contents->GetURL(), contents, &value_size, 44 automation_util::GetCookies(contents->GetURL(), contents, &value_size,
46 &actual_cookie); 45 &actual_cookie);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 119
121 // Using JavaScript to navigate to app2 page, 120 // Using JavaScript to navigate to app2 page,
122 // after the non_app page has finished loading. 121 // after the non_app page has finished loading.
123 content::WindowedNotificationObserver observer1( 122 content::WindowedNotificationObserver observer1(
124 content::NOTIFICATION_LOAD_STOP, 123 content::NOTIFICATION_LOAD_STOP,
125 content::Source<NavigationController>( 124 content::Source<NavigationController>(
126 &chrome::GetActiveWebContents(browser())->GetController())); 125 &chrome::GetActiveWebContents(browser())->GetController()));
127 std::string script = base::StringPrintf( 126 std::string script = base::StringPrintf(
128 "document.location.href=\"%s\";", 127 "document.location.href=\"%s\";",
129 base_url.Resolve("app2/main.html").spec().c_str()); 128 base_url.Resolve("app2/main.html").spec().c_str());
130 EXPECT_TRUE(ExecuteJavaScript(rvh, L"", ASCIIToWide(script))); 129 EXPECT_TRUE(ExecuteJavaScript(rvh, "", script));
131 observer1.Wait(); 130 observer1.Wait();
132 131
133 // This kind of navigation should not replace previous navigation entry. 132 // This kind of navigation should not replace previous navigation entry.
134 EXPECT_TRUE(chrome::CanGoBack(browser())); 133 EXPECT_TRUE(chrome::CanGoBack(browser()));
135 chrome::GoBack(browser(), CURRENT_TAB); 134 chrome::GoBack(browser(), CURRENT_TAB);
136 EXPECT_FALSE(chrome::CanGoBack(browser())); 135 EXPECT_FALSE(chrome::CanGoBack(browser()));
137 } 136 }
138 137
139 // Tests that cookies set within an isolated app are not visible to normal 138 // Tests that cookies set within an isolated app are not visible to normal
140 // pages or other apps. 139 // pages or other apps.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 ASSERT_TRUE(GetInstalledApp(tab0)); 175 ASSERT_TRUE(GetInstalledApp(tab0));
177 ASSERT_TRUE(GetInstalledApp(tab1)); 176 ASSERT_TRUE(GetInstalledApp(tab1));
178 ASSERT_TRUE(!GetInstalledApp(tab2)); 177 ASSERT_TRUE(!GetInstalledApp(tab2));
179 178
180 // Check that tabs see cannot each other's localStorage even though they are 179 // Check that tabs see cannot each other's localStorage even though they are
181 // in the same origin. 180 // in the same origin.
182 RenderViewHost* app1_rvh = tab0->GetRenderViewHost(); 181 RenderViewHost* app1_rvh = tab0->GetRenderViewHost();
183 RenderViewHost* app2_rvh = tab1->GetRenderViewHost(); 182 RenderViewHost* app2_rvh = tab1->GetRenderViewHost();
184 RenderViewHost* non_app_rvh = tab2->GetRenderViewHost(); 183 RenderViewHost* non_app_rvh = tab2->GetRenderViewHost();
185 ASSERT_TRUE(ExecuteJavaScript( 184 ASSERT_TRUE(ExecuteJavaScript(
186 app1_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app1');")); 185 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');"));
187 ASSERT_TRUE(ExecuteJavaScript( 186 ASSERT_TRUE(ExecuteJavaScript(
188 app2_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app2');")); 187 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');"));
189 ASSERT_TRUE(ExecuteJavaScript( 188 ASSERT_TRUE(ExecuteJavaScript(
190 non_app_rvh, L"", 189 non_app_rvh,
191 L"window.localStorage.setItem('testdata', 'ls_normal');")); 190 "",
191 "window.localStorage.setItem('testdata', 'ls_normal');"));
192 192
193 const std::wstring& kRetrieveLocalStorage = 193 const std::string& kRetrieveLocalStorage =
194 WrapForJavascriptAndExtract( 194 WrapForJavascriptAndExtract(
195 L"window.localStorage.getItem('testdata') || 'badval'"); 195 "window.localStorage.getItem('testdata') || 'badval'");
196 std::string result; 196 std::string result;
197 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 197 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
198 app1_rvh, L"", kRetrieveLocalStorage.c_str(), &result)); 198 app1_rvh, "", 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, L"", kRetrieveLocalStorage.c_str(), &result)); 201 app2_rvh, "", 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, L"", kRetrieveLocalStorage.c_str(), &result)); 204 non_app_rvh, "", 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, L"", L"window.localStorage.setItem('testdata', 'ls_app1');")); 291 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');"));
292 ASSERT_TRUE(ExecuteJavaScript( 292 ASSERT_TRUE(ExecuteJavaScript(
293 app2_rvh, L"", L"window.localStorage.setItem('testdata', 'ls_app2');")); 293 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');"));
294 ASSERT_TRUE(ExecuteJavaScript( 294 ASSERT_TRUE(ExecuteJavaScript(
295 non_app_rvh, L"", 295 non_app_rvh,
296 L"window.localStorage.setItem('testdata', 'ls_normal');")); 296 "",
297 "window.localStorage.setItem('testdata', 'ls_normal');"));
297 298
298 const std::wstring& kRetrieveLocalStorage = 299 const std::string& kRetrieveLocalStorage =
299 WrapForJavascriptAndExtract(L"window.localStorage.getItem('testdata')"); 300 WrapForJavascriptAndExtract("window.localStorage.getItem('testdata')");
300 std::string result; 301 std::string result;
301 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 302 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
302 app1_rvh, L"", kRetrieveLocalStorage.c_str(), &result)); 303 app1_rvh, "", kRetrieveLocalStorage.c_str(), &result));
303 EXPECT_EQ("ls_normal", result); 304 EXPECT_EQ("ls_normal", result);
304 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 305 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
305 app2_rvh, L"", kRetrieveLocalStorage.c_str(), &result)); 306 app2_rvh, "", kRetrieveLocalStorage.c_str(), &result));
306 EXPECT_EQ("ls_normal", result); 307 EXPECT_EQ("ls_normal", result);
307 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 308 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
308 non_app_rvh, L"", kRetrieveLocalStorage.c_str(), &result)); 309 non_app_rvh, "", kRetrieveLocalStorage.c_str(), &result));
309 EXPECT_EQ("ls_normal", result); 310 EXPECT_EQ("ls_normal", result);
310 } 311 }
311 312
312 // Tests that subresource and media requests use the app's cookie store. 313 // Tests that subresource and media requests use the app's cookie store.
313 // See http://crbug.com/141172. 314 // See http://crbug.com/141172.
314 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) { 315 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) {
315 host_resolver()->AddRule("*", "127.0.0.1"); 316 host_resolver()->AddRule("*", "127.0.0.1");
316 ASSERT_TRUE(test_server()->Start()); 317 ASSERT_TRUE(test_server()->Start());
317 318
318 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1"))); 319 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1")));
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 replace_host.SetHostStr(host_str); 449 replace_host.SetHostStr(host_str);
449 base_url = base_url.ReplaceComponents(replace_host); 450 base_url = base_url.ReplaceComponents(replace_host);
450 451
451 // Enter some state into sessionStorage three times on the same origin, but 452 // Enter some state into sessionStorage three times on the same origin, but
452 // for three URLs that correspond to app1, app2, and a non-isolated site. 453 // for three URLs that correspond to app1, app2, and a non-isolated site.
453 ui_test_utils::NavigateToURLWithDisposition( 454 ui_test_utils::NavigateToURLWithDisposition(
454 browser(), base_url.Resolve("app1/main.html"), 455 browser(), base_url.Resolve("app1/main.html"),
455 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 456 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
456 ASSERT_TRUE(ExecuteJavaScript( 457 ASSERT_TRUE(ExecuteJavaScript(
457 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 458 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
458 L"", 459 "",
459 L"window.sessionStorage.setItem('testdata', 'ss_app1');")); 460 "window.sessionStorage.setItem('testdata', 'ss_app1');"));
460 461
461 ui_test_utils::NavigateToURLWithDisposition( 462 ui_test_utils::NavigateToURLWithDisposition(
462 browser(), base_url.Resolve("app2/main.html"), 463 browser(), base_url.Resolve("app2/main.html"),
463 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 464 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
464 ASSERT_TRUE(ExecuteJavaScript( 465 ASSERT_TRUE(ExecuteJavaScript(
465 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 466 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
466 L"", 467 "",
467 L"window.sessionStorage.setItem('testdata', 'ss_app2');")); 468 "window.sessionStorage.setItem('testdata', 'ss_app2');"));
468 469
469 ui_test_utils::NavigateToURLWithDisposition( 470 ui_test_utils::NavigateToURLWithDisposition(
470 browser(), base_url.Resolve("non_app/main.html"), 471 browser(), base_url.Resolve("non_app/main.html"),
471 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 472 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
472 ASSERT_TRUE(ExecuteJavaScript( 473 ASSERT_TRUE(ExecuteJavaScript(
473 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 474 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
474 L"", 475 "",
475 L"window.sessionStorage.setItem('testdata', 'ss_normal');")); 476 "window.sessionStorage.setItem('testdata', 'ss_normal');"));
476 477
477 // Now, ensure that the sessionStorage is correctly partitioned, and persists 478 // Now, ensure that the sessionStorage is correctly partitioned, and persists
478 // when we navigate around all over the dang place. 479 // when we navigate around all over the dang place.
479 const std::wstring& kRetrieveSessionStorage = 480 const std::string& kRetrieveSessionStorage =
480 WrapForJavascriptAndExtract( 481 WrapForJavascriptAndExtract(
481 L"window.sessionStorage.getItem('testdata') || 'badval'"); 482 "window.sessionStorage.getItem('testdata') || 'badval'");
482 std::string result; 483 std::string result;
483 ui_test_utils::NavigateToURLWithDisposition( 484 ui_test_utils::NavigateToURLWithDisposition(
484 browser(), base_url.Resolve("app1/main.html"), 485 browser(), base_url.Resolve("app1/main.html"),
485 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 486 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
486 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 487 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
487 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 488 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
488 L"", kRetrieveSessionStorage.c_str(), &result)); 489 "", kRetrieveSessionStorage.c_str(), &result));
489 EXPECT_EQ("ss_app1", result); 490 EXPECT_EQ("ss_app1", result);
490 491
491 ui_test_utils::NavigateToURLWithDisposition( 492 ui_test_utils::NavigateToURLWithDisposition(
492 browser(), base_url.Resolve("app2/main.html"), 493 browser(), base_url.Resolve("app2/main.html"),
493 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 494 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
494 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 495 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
495 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 496 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
496 L"", kRetrieveSessionStorage.c_str(), &result)); 497 "", kRetrieveSessionStorage.c_str(), &result));
497 EXPECT_EQ("ss_app2", result); 498 EXPECT_EQ("ss_app2", result);
498 499
499 ui_test_utils::NavigateToURLWithDisposition( 500 ui_test_utils::NavigateToURLWithDisposition(
500 browser(), base_url.Resolve("non_app/main.html"), 501 browser(), base_url.Resolve("non_app/main.html"),
501 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 502 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
502 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 503 ASSERT_TRUE(ExecuteJavaScriptAndExtractString(
503 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 504 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(),
504 L"", kRetrieveSessionStorage.c_str(), &result)); 505 "", kRetrieveSessionStorage.c_str(), &result));
505 EXPECT_EQ("ss_normal", result); 506 EXPECT_EQ("ss_normal", result);
506 } 507 }
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