| Index: chrome/browser/chrome_site_per_process_browsertest.cc
|
| diff --git a/chrome/browser/chrome_site_per_process_browsertest.cc b/chrome/browser/chrome_site_per_process_browsertest.cc
|
| index ddc1cd23221f5b398baaad5d8712199b7c2ab789..e78bcac7a78152889033d4ec9c28ff746b35af2a 100644
|
| --- a/chrome/browser/chrome_site_per_process_browsertest.cc
|
| +++ b/chrome/browser/chrome_site_per_process_browsertest.cc
|
| @@ -249,3 +249,39 @@ IN_PROC_BROWSER_TEST_F(ChromeSitePerProcessTest, PopupWindowFocus) {
|
| // The popup should be focused now.
|
| EXPECT_EQ(popup, browser()->tab_strip_model()->GetActiveWebContents());
|
| }
|
| +
|
| +// Verify that ctrl-click of an anchor targeting a remote frame works (i.e. that
|
| +// it opens the link in a new tab). See also https://crbug.com/647772.
|
| +IN_PROC_BROWSER_TEST_F(ChromeSitePerProcessTest,
|
| + AnchorCtrlClickWhenTargetIsCrossSite) {
|
| + // Navigate to anchor_targeting_remote_frame.html.
|
| + GURL main_url(embedded_test_server()->GetURL(
|
| + "a.com", "/frame_tree/anchor_targeting_remote_frame.html"));
|
| + ui_test_utils::NavigateToURL(browser(), main_url);
|
| +
|
| + // Verify that there is only 1 active tab (with the right contents committed).
|
| + EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
|
| + content::WebContents* main_contents =
|
| + browser()->tab_strip_model()->GetWebContentsAt(0);
|
| + EXPECT_EQ(main_url, main_contents->GetLastCommittedURL());
|
| +
|
| + // Ctrl-click the anchor/link in the page.
|
| + content::WebContentsAddedObserver new_tab_observer;
|
| +#if defined(OS_MACOSX)
|
| + std::string new_tab_click_script = "simulateClick({ metaKey: true });";
|
| +#else
|
| + std::string new_tab_click_script = "simulateClick({ ctrlKey: true });";
|
| +#endif
|
| + EXPECT_TRUE(ExecuteScript(main_contents, new_tab_click_script));
|
| +
|
| + // Wait for a new tab to appear (the whole point of this test).
|
| + content::WebContents* new_contents = new_tab_observer.GetWebContents();
|
| +
|
| + // Verify that the new tab has the right contents and is in the right, new
|
| + // place in the tab strip.
|
| + EXPECT_TRUE(WaitForLoadStop(new_contents));
|
| + EXPECT_EQ(2, browser()->tab_strip_model()->count());
|
| + EXPECT_EQ(new_contents, browser()->tab_strip_model()->GetWebContentsAt(1));
|
| + GURL expected_url(embedded_test_server()->GetURL("c.com", "/title1.html"));
|
| + EXPECT_EQ(expected_url, new_contents->GetLastCommittedURL());
|
| +}
|
|
|