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

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

Issue 11753009: Simplify ExecuteJavaScript* functions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update prerender_browsertest.cc. 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"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_commands.h" 13 #include "chrome/browser/ui/browser_commands.h"
14 #include "chrome/browser/ui/browser_tabstrip.h" 14 #include "chrome/browser/ui/browser_tabstrip.h"
15 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/url_constants.h" 16 #include "chrome/common/url_constants.h"
17 #include "chrome/test/base/ui_test_utils.h" 17 #include "chrome/test/base/ui_test_utils.h"
18 #include "content/public/browser/render_process_host.h" 18 #include "content/public/browser/render_process_host.h"
19 #include "content/public/browser/render_view_host.h" 19 #include "content/public/browser/render_view_host.h"
20 #include "content/public/browser/site_instance.h" 20 #include "content/public/browser/site_instance.h"
21 #include "content/public/browser/web_contents.h" 21 #include "content/public/browser/web_contents.h"
22 #include "content/public/test/browser_test_utils.h" 22 #include "content/public/test/browser_test_utils.h"
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::ExecuteScript;
26 using content::ExecuteJavaScriptAndExtractString; 26 using content::ExecuteScriptAndExtractString;
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::string WrapForJavascriptAndExtract(const char* javascript_expression) {
34 return std::string("window.domAutomationController.send(") + 34 return std::string("window.domAutomationController.send(") +
35 javascript_expression + ")"; 35 javascript_expression + ")";
36 } 36 }
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 108
109 // We also need to test script-initialized navigation (document.location.href) 109 // We also need to test script-initialized navigation (document.location.href)
110 // happened after page finishes loading. This one will also triggered the 110 // happened after page finishes loading. This one will also triggered the
111 // willPerformClientRedirect hook in RenderViewImpl but should not replace 111 // willPerformClientRedirect hook in RenderViewImpl but should not replace
112 // the previous history entry. 112 // the previous history entry.
113 ui_test_utils::NavigateToURLWithDisposition( 113 ui_test_utils::NavigateToURLWithDisposition(
114 browser(), base_url.Resolve("non_app/main.html"), 114 browser(), base_url.Resolve("non_app/main.html"),
115 NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 115 NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
116 116
117 WebContents* tab0 = chrome::GetWebContentsAt(browser(), 1); 117 WebContents* tab0 = chrome::GetWebContentsAt(browser(), 1);
118 RenderViewHost* rvh = tab0->GetRenderViewHost();
119 118
120 // Using JavaScript to navigate to app2 page, 119 // Using JavaScript to navigate to app2 page,
121 // after the non_app page has finished loading. 120 // after the non_app page has finished loading.
122 content::WindowedNotificationObserver observer1( 121 content::WindowedNotificationObserver observer1(
123 content::NOTIFICATION_LOAD_STOP, 122 content::NOTIFICATION_LOAD_STOP,
124 content::Source<NavigationController>( 123 content::Source<NavigationController>(
125 &chrome::GetActiveWebContents(browser())->GetController())); 124 &chrome::GetActiveWebContents(browser())->GetController()));
126 std::string script = base::StringPrintf( 125 std::string script = base::StringPrintf(
127 "document.location.href=\"%s\";", 126 "document.location.href=\"%s\";",
128 base_url.Resolve("app2/main.html").spec().c_str()); 127 base_url.Resolve("app2/main.html").spec().c_str());
129 EXPECT_TRUE(ExecuteJavaScript(rvh, "", script)); 128 EXPECT_TRUE(ExecuteScript(tab0, script));
130 observer1.Wait(); 129 observer1.Wait();
131 130
132 // This kind of navigation should not replace previous navigation entry. 131 // This kind of navigation should not replace previous navigation entry.
133 EXPECT_TRUE(chrome::CanGoBack(browser())); 132 EXPECT_TRUE(chrome::CanGoBack(browser()));
134 chrome::GoBack(browser(), CURRENT_TAB); 133 chrome::GoBack(browser(), CURRENT_TAB);
135 EXPECT_FALSE(chrome::CanGoBack(browser())); 134 EXPECT_FALSE(chrome::CanGoBack(browser()));
136 } 135 }
137 136
138 // Tests that cookies set within an isolated app are not visible to normal 137 // Tests that cookies set within an isolated app are not visible to normal
139 // pages or other apps. 138 // pages or other apps.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 // Ensure first two tabs have installed apps. 170 // Ensure first two tabs have installed apps.
172 WebContents* tab0 = chrome::GetWebContentsAt(browser(), 0); 171 WebContents* tab0 = chrome::GetWebContentsAt(browser(), 0);
173 WebContents* tab1 = chrome::GetWebContentsAt(browser(), 1); 172 WebContents* tab1 = chrome::GetWebContentsAt(browser(), 1);
174 WebContents* tab2 = chrome::GetWebContentsAt(browser(), 2); 173 WebContents* tab2 = chrome::GetWebContentsAt(browser(), 2);
175 ASSERT_TRUE(GetInstalledApp(tab0)); 174 ASSERT_TRUE(GetInstalledApp(tab0));
176 ASSERT_TRUE(GetInstalledApp(tab1)); 175 ASSERT_TRUE(GetInstalledApp(tab1));
177 ASSERT_TRUE(!GetInstalledApp(tab2)); 176 ASSERT_TRUE(!GetInstalledApp(tab2));
178 177
179 // Check that tabs see cannot each other's localStorage even though they are 178 // Check that tabs see cannot each other's localStorage even though they are
180 // in the same origin. 179 // in the same origin.
181 RenderViewHost* app1_rvh = tab0->GetRenderViewHost(); 180 ASSERT_TRUE(ExecuteScript(
182 RenderViewHost* app2_rvh = tab1->GetRenderViewHost(); 181 tab0, "window.localStorage.setItem('testdata', 'ls_app1');"));
183 RenderViewHost* non_app_rvh = tab2->GetRenderViewHost(); 182 ASSERT_TRUE(ExecuteScript(
184 ASSERT_TRUE(ExecuteJavaScript( 183 tab1, "window.localStorage.setItem('testdata', 'ls_app2');"));
185 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');")); 184 ASSERT_TRUE(ExecuteScript(
186 ASSERT_TRUE(ExecuteJavaScript( 185 tab2, "window.localStorage.setItem('testdata', 'ls_normal');"));
187 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');"));
188 ASSERT_TRUE(ExecuteJavaScript(
189 non_app_rvh,
190 "",
191 "window.localStorage.setItem('testdata', 'ls_normal');"));
192 186
193 const std::string& kRetrieveLocalStorage = 187 const std::string& kRetrieveLocalStorage =
194 WrapForJavascriptAndExtract( 188 WrapForJavascriptAndExtract(
195 "window.localStorage.getItem('testdata') || 'badval'"); 189 "window.localStorage.getItem('testdata') || 'badval'");
196 std::string result; 190 std::string result;
197 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 191 ASSERT_TRUE(ExecuteScriptAndExtractString(
198 app1_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 192 tab0, kRetrieveLocalStorage.c_str(), &result));
199 EXPECT_EQ("ls_app1", result); 193 EXPECT_EQ("ls_app1", result);
200 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 194 ASSERT_TRUE(ExecuteScriptAndExtractString(
201 app2_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 195 tab1, kRetrieveLocalStorage.c_str(), &result));
202 EXPECT_EQ("ls_app2", result); 196 EXPECT_EQ("ls_app2", result);
203 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 197 ASSERT_TRUE(ExecuteScriptAndExtractString(
204 non_app_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 198 tab2, kRetrieveLocalStorage.c_str(), &result));
205 EXPECT_EQ("ls_normal", result); 199 EXPECT_EQ("ls_normal", result);
206 200
207 // Check that each tab sees its own cookie. 201 // Check that each tab sees its own cookie.
208 EXPECT_TRUE(HasCookie(tab0, "app1=3")); 202 EXPECT_TRUE(HasCookie(tab0, "app1=3"));
209 EXPECT_TRUE(HasCookie(tab1, "app2=4")); 203 EXPECT_TRUE(HasCookie(tab1, "app2=4"));
210 EXPECT_TRUE(HasCookie(tab2, "normalPage=5")); 204 EXPECT_TRUE(HasCookie(tab2, "normalPage=5"));
211 205
212 // Check that app1 tab cannot see the other cookies. 206 // Check that app1 tab cannot see the other cookies.
213 EXPECT_FALSE(HasCookie(tab0, "app2")); 207 EXPECT_FALSE(HasCookie(tab0, "app2"));
214 EXPECT_FALSE(HasCookie(tab0, "normalPage")); 208 EXPECT_FALSE(HasCookie(tab0, "normalPage"));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 0), "nonAppFrame=6") ); 268 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 0), "nonAppFrame=6") );
275 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "app1=3")); 269 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "app1=3"));
276 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "normalPage=5")) ; 270 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "normalPage=5")) ;
277 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "nonAppFrame=6") ); 271 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 1), "nonAppFrame=6") );
278 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "app1=3")); 272 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "app1=3"));
279 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "app2=4")); 273 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "app2=4"));
280 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "nonAppFrame=6") ); 274 EXPECT_TRUE(HasCookie(chrome::GetWebContentsAt(browser(), 2), "nonAppFrame=6") );
281 275
282 // Check that all tabs share the same localStorage if they have the same 276 // Check that all tabs share the same localStorage if they have the same
283 // origin. 277 // origin.
284 RenderViewHost* app1_rvh = 278 WebContents* app1_wc = chrome::GetWebContentsAt(browser(), 0);
285 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(); 279 WebContents* app2_wc = chrome::GetWebContentsAt(browser(), 1);
286 RenderViewHost* app2_rvh = 280 WebContents* non_app_wc = chrome::GetWebContentsAt(browser(), 2);
287 chrome::GetWebContentsAt(browser(), 1)->GetRenderViewHost(); 281 ASSERT_TRUE(ExecuteScript(
288 RenderViewHost* non_app_rvh = 282 app1_wc, "window.localStorage.setItem('testdata', 'ls_app1');"));
289 chrome::GetWebContentsAt(browser(), 2)->GetRenderViewHost(); 283 ASSERT_TRUE(ExecuteScript(
290 ASSERT_TRUE(ExecuteJavaScript( 284 app2_wc, "window.localStorage.setItem('testdata', 'ls_app2');"));
291 app1_rvh, "", "window.localStorage.setItem('testdata', 'ls_app1');")); 285 ASSERT_TRUE(ExecuteScript(
292 ASSERT_TRUE(ExecuteJavaScript( 286 non_app_wc, "window.localStorage.setItem('testdata', 'ls_normal');"));
293 app2_rvh, "", "window.localStorage.setItem('testdata', 'ls_app2');"));
294 ASSERT_TRUE(ExecuteJavaScript(
295 non_app_rvh,
296 "",
297 "window.localStorage.setItem('testdata', 'ls_normal');"));
298 287
299 const std::string& kRetrieveLocalStorage = 288 const std::string& kRetrieveLocalStorage =
300 WrapForJavascriptAndExtract("window.localStorage.getItem('testdata')"); 289 WrapForJavascriptAndExtract("window.localStorage.getItem('testdata')");
301 std::string result; 290 std::string result;
302 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 291 ASSERT_TRUE(ExecuteScriptAndExtractString(
303 app1_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 292 app1_wc, kRetrieveLocalStorage.c_str(), &result));
304 EXPECT_EQ("ls_normal", result); 293 EXPECT_EQ("ls_normal", result);
305 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 294 ASSERT_TRUE(ExecuteScriptAndExtractString(
306 app2_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 295 app2_wc, kRetrieveLocalStorage.c_str(), &result));
307 EXPECT_EQ("ls_normal", result); 296 EXPECT_EQ("ls_normal", result);
308 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 297 ASSERT_TRUE(ExecuteScriptAndExtractString(
309 non_app_rvh, "", kRetrieveLocalStorage.c_str(), &result)); 298 non_app_wc, kRetrieveLocalStorage.c_str(), &result));
310 EXPECT_EQ("ls_normal", result); 299 EXPECT_EQ("ls_normal", result);
311 } 300 }
312 301
313 // Tests that subresource and media requests use the app's cookie store. 302 // Tests that subresource and media requests use the app's cookie store.
314 // See http://crbug.com/141172. 303 // See http://crbug.com/141172.
315 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) { 304 IN_PROC_BROWSER_TEST_F(IsolatedAppTest, SubresourceCookieIsolation) {
316 host_resolver()->AddRule("*", "127.0.0.1"); 305 host_resolver()->AddRule("*", "127.0.0.1");
317 ASSERT_TRUE(test_server()->Start()); 306 ASSERT_TRUE(test_server()->Start());
318 307
319 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1"))); 308 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("isolated_apps/app1")));
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 GURL::Replacements replace_host; 436 GURL::Replacements replace_host;
448 std::string host_str("localhost"); // Must stay in scope with replace_host. 437 std::string host_str("localhost"); // Must stay in scope with replace_host.
449 replace_host.SetHostStr(host_str); 438 replace_host.SetHostStr(host_str);
450 base_url = base_url.ReplaceComponents(replace_host); 439 base_url = base_url.ReplaceComponents(replace_host);
451 440
452 // Enter some state into sessionStorage three times on the same origin, but 441 // 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. 442 // for three URLs that correspond to app1, app2, and a non-isolated site.
454 ui_test_utils::NavigateToURLWithDisposition( 443 ui_test_utils::NavigateToURLWithDisposition(
455 browser(), base_url.Resolve("app1/main.html"), 444 browser(), base_url.Resolve("app1/main.html"),
456 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 445 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
457 ASSERT_TRUE(ExecuteJavaScript( 446 ASSERT_TRUE(ExecuteScript(
458 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 447 chrome::GetWebContentsAt(browser(), 0),
459 "",
460 "window.sessionStorage.setItem('testdata', 'ss_app1');")); 448 "window.sessionStorage.setItem('testdata', 'ss_app1');"));
461 449
462 ui_test_utils::NavigateToURLWithDisposition( 450 ui_test_utils::NavigateToURLWithDisposition(
463 browser(), base_url.Resolve("app2/main.html"), 451 browser(), base_url.Resolve("app2/main.html"),
464 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 452 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
465 ASSERT_TRUE(ExecuteJavaScript( 453 ASSERT_TRUE(ExecuteScript(
466 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 454 chrome::GetWebContentsAt(browser(), 0),
467 "",
468 "window.sessionStorage.setItem('testdata', 'ss_app2');")); 455 "window.sessionStorage.setItem('testdata', 'ss_app2');"));
469 456
470 ui_test_utils::NavigateToURLWithDisposition( 457 ui_test_utils::NavigateToURLWithDisposition(
471 browser(), base_url.Resolve("non_app/main.html"), 458 browser(), base_url.Resolve("non_app/main.html"),
472 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 459 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
473 ASSERT_TRUE(ExecuteJavaScript( 460 ASSERT_TRUE(ExecuteScript(
474 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 461 chrome::GetWebContentsAt(browser(), 0),
475 "",
476 "window.sessionStorage.setItem('testdata', 'ss_normal');")); 462 "window.sessionStorage.setItem('testdata', 'ss_normal');"));
477 463
478 // Now, ensure that the sessionStorage is correctly partitioned, and persists 464 // Now, ensure that the sessionStorage is correctly partitioned, and persists
479 // when we navigate around all over the dang place. 465 // when we navigate around all over the dang place.
480 const std::string& kRetrieveSessionStorage = 466 const std::string& kRetrieveSessionStorage =
481 WrapForJavascriptAndExtract( 467 WrapForJavascriptAndExtract(
482 "window.sessionStorage.getItem('testdata') || 'badval'"); 468 "window.sessionStorage.getItem('testdata') || 'badval'");
483 std::string result; 469 std::string result;
484 ui_test_utils::NavigateToURLWithDisposition( 470 ui_test_utils::NavigateToURLWithDisposition(
485 browser(), base_url.Resolve("app1/main.html"), 471 browser(), base_url.Resolve("app1/main.html"),
486 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 472 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
487 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 473 ASSERT_TRUE(ExecuteScriptAndExtractString(
488 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 474 chrome::GetWebContentsAt(browser(), 0),
489 "", kRetrieveSessionStorage.c_str(), &result)); 475 kRetrieveSessionStorage.c_str(), &result));
490 EXPECT_EQ("ss_app1", result); 476 EXPECT_EQ("ss_app1", result);
491 477
492 ui_test_utils::NavigateToURLWithDisposition( 478 ui_test_utils::NavigateToURLWithDisposition(
493 browser(), base_url.Resolve("app2/main.html"), 479 browser(), base_url.Resolve("app2/main.html"),
494 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 480 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
495 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 481 ASSERT_TRUE(ExecuteScriptAndExtractString(
496 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 482 chrome::GetWebContentsAt(browser(), 0),
497 "", kRetrieveSessionStorage.c_str(), &result)); 483 kRetrieveSessionStorage.c_str(), &result));
498 EXPECT_EQ("ss_app2", result); 484 EXPECT_EQ("ss_app2", result);
499 485
500 ui_test_utils::NavigateToURLWithDisposition( 486 ui_test_utils::NavigateToURLWithDisposition(
501 browser(), base_url.Resolve("non_app/main.html"), 487 browser(), base_url.Resolve("non_app/main.html"),
502 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 488 CURRENT_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
503 ASSERT_TRUE(ExecuteJavaScriptAndExtractString( 489 ASSERT_TRUE(ExecuteScriptAndExtractString(
504 chrome::GetWebContentsAt(browser(), 0)->GetRenderViewHost(), 490 chrome::GetWebContentsAt(browser(), 0),
505 "", kRetrieveSessionStorage.c_str(), &result)); 491 kRetrieveSessionStorage.c_str(), &result));
506 EXPECT_EQ("ss_normal", result); 492 EXPECT_EQ("ss_normal", result);
507 } 493 }
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