Chromium Code Reviews| Index: content/browser/site_per_process_browsertest.cc |
| diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc |
| index ca329520745dd2e6e75fcee9ddfa7d987544aa61..3f6c993a90a44c7938d1ebb4bcd98870c50841a3 100644 |
| --- a/content/browser/site_per_process_browsertest.cc |
| +++ b/content/browser/site_per_process_browsertest.cc |
| @@ -2312,4 +2312,38 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, RFPHDestruction) { |
| DepictFrameTree(root)); |
| } |
| +IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, |
|
nasko
2015/05/06 22:57:44
nit: It will be useful to add a description of wha
dcheng
2015/05/07 22:30:13
Done.
|
| + OpenCrossSiteWindowWithFrames) { |
| + ASSERT_EQ(1u, Shell::windows().size()); |
| + Shell* main_window = Shell::windows()[0]; |
| + |
| + // Navigate the main window. |
| + GURL main_url(embedded_test_server()->GetURL("/site_per_process_main.html")); |
| + NavigateToURL(main_window, main_url); |
| + EXPECT_EQ(main_window->web_contents()->GetLastCommittedURL(), main_url); |
| + |
| + // Load a cross-site page into a new window. |
| + GURL cross_url = |
| + embedded_test_server()->GetURL("foo.com", "/site_per_process_main.html"); |
| + std::string script = "window.open('" + cross_url.spec() + "')"; |
| + EXPECT_TRUE(ExecuteScript(main_window->web_contents(), script)); |
| + ASSERT_EQ(2u, Shell::windows().size()); |
| + Shell* cross_window = Shell::windows()[1]; |
| + WaitForLoadStop(cross_window->web_contents()); |
| + EXPECT_EQ(cross_window->web_contents()->GetLastCommittedURL(), cross_url); |
| + |
| + // Make sure the main window is still live. To create a synchronization point |
| + // and ensure that the renderer has processed all the messages for updating |
| + // the frame tree, execute a simple bit of JS first. |
| + EXPECT_TRUE(ExecuteScript(main_window->web_contents(), "true")); |
| + EXPECT_TRUE(static_cast<WebContentsImpl*>(main_window->web_contents()) |
| + ->GetMainFrame() |
| + ->IsRenderFrameLive()); |
| + // And check the cross-site window too. |
| + EXPECT_TRUE(ExecuteScript(cross_window->web_contents(), "true")); |
| + EXPECT_TRUE(static_cast<WebContentsImpl*>(cross_window->web_contents()) |
| + ->GetMainFrame() |
| + ->IsRenderFrameLive()); |
| +} |
| + |
| } // namespace content |