Index: chrome/browser/task_manager/task_manager_browsertest.cc |
diff --git a/chrome/browser/task_manager/task_manager_browsertest.cc b/chrome/browser/task_manager/task_manager_browsertest.cc |
index 2cd1796a4e096271e3f6b03c9d813e0b1f15656e..79288d5c809f710eac4cb66c5dc61d1c1dcb65f4 100644 |
--- a/chrome/browser/task_manager/task_manager_browsertest.cc |
+++ b/chrome/browser/task_manager/task_manager_browsertest.cc |
@@ -1094,3 +1094,53 @@ IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, |
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("aac"))); |
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); |
} |
+ |
+// Tests what happens when a tab does a same-site navigation away from a page |
+// with cross-site iframes. |
+IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, |
+ LeavePageWithCrossSiteIframes) { |
+ ShowTaskManager(); |
+ |
+ host_resolver()->AddRule("*", "127.0.0.1"); |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ content::SetupCrossSiteRedirector(embedded_test_server()); |
+ |
+ // Navigate the tab to a page on a.com with cross-process subframes. |
+ GURL a_dotcom_with_iframes(embedded_test_server()->GetURL( |
+ "/cross-site/a.com/iframe_cross_site.html")); |
+ browser()->OpenURL(content::OpenURLParams(a_dotcom_with_iframes, |
+ content::Referrer(), CURRENT_TAB, |
+ ui::PAGE_TRANSITION_TYPED, false)); |
+ |
+ ASSERT_NO_FATAL_FAILURE( |
+ WaitForTaskManagerRows(1, MatchTab("cross-site iframe test"))); |
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); |
+ |
+ if (!ShouldExpectSubframes()) { |
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); |
+ } else { |
+ ASSERT_NO_FATAL_FAILURE( |
+ WaitForTaskManagerRows(1, MatchSubframe("http://b.com/"))); |
+ ASSERT_NO_FATAL_FAILURE( |
+ WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); |
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnySubframe())); |
+ } |
+ |
+ // Navigate the tab to a page on a.com without cross-process subframes, and |
+ // the subframe processes should disappear. |
+ GURL a_dotcom_simple( |
+ embedded_test_server()->GetURL("/cross-site/a.com/title2.html")); |
+ browser()->OpenURL(content::OpenURLParams(a_dotcom_simple, |
+ content::Referrer(), CURRENT_TAB, |
+ ui::PAGE_TRANSITION_TYPED, false)); |
+ ASSERT_NO_FATAL_FAILURE( |
+ WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); |
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); |
+ |
+ HideTaskManager(); |
+ ShowTaskManager(); |
+ |
+ ASSERT_NO_FATAL_FAILURE( |
+ WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); |
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); |
+} |