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 55a2ab9ccfdf381c510fc51fe2d1ba762dbe1398..4adc89452ca9b58f72d8968b86cd2a85c5628387 100644 |
--- a/content/browser/site_per_process_browsertest.cc |
+++ b/content/browser/site_per_process_browsertest.cc |
@@ -626,24 +626,28 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessHighDPIBrowserTest, |
"a.com", "/cross_site_iframe_factory.html?a(b)")); |
NavigateToURL(shell(), main_url); |
- EXPECT_EQ(SitePerProcessHighDPIBrowserTest::kDeviceScaleFactor, |
- GetFrameDeviceScaleFactor(web_contents())); |
+ // On Android forcing device scale factor does not work for tests, therefore |
+ // we ensure that make frame and iframe have the same DIP scale there, but |
+ // not necessarily kDeviceScaleFactor. |
+ const double expected_dip_scale = |
+#if defined(OS_ANDROID) |
+ GetFrameDeviceScaleFactor(web_contents()); |
+#else |
+ SitePerProcessHighDPIBrowserTest::kDeviceScaleFactor; |
+#endif |
+ |
+ EXPECT_EQ(expected_dip_scale, GetFrameDeviceScaleFactor(web_contents())); |
FrameTreeNode* root = web_contents()->GetFrameTree()->root(); |
+ ASSERT_EQ(1U, root->child_count()); |
+ |
FrameTreeNode* child = root->child_at(0); |
- EXPECT_EQ(SitePerProcessHighDPIBrowserTest::kDeviceScaleFactor, |
- GetFrameDeviceScaleFactor(child)); |
+ EXPECT_EQ(expected_dip_scale, GetFrameDeviceScaleFactor(child)); |
} |
// Ensure that navigating subframes in --site-per-process mode works and the |
// correct documents are committed. |
-#if defined(OS_WIN) |
-// This test is flaky on Windows, see https://crbug.com/629419. |
-#define MAYBE_CrossSiteIframe DISABLED_CrossSiteIframe |
-#else |
-#define MAYBE_CrossSiteIframe CrossSiteIframe |
-#endif |
-IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_CrossSiteIframe) { |
+IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, CrossSiteIframe) { |
GURL main_url(embedded_test_server()->GetURL( |
"a.com", "/cross_site_iframe_factory.html?a(a,a(a,a(a)))")); |
NavigateToURL(shell(), main_url); |
@@ -679,7 +683,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_CrossSiteIframe) { |
// Load cross-site page into iframe. |
GURL url = embedded_test_server()->GetURL("foo.com", "/title2.html"); |
- NavigateFrameToURL(root->child_at(0), url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateFrameToURL(root->child_at(0), url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
// Verify that the navigation succeeded and the expected URL was loaded. |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
@@ -723,7 +731,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_CrossSiteIframe) { |
// Load another cross-site page into the same iframe. |
url = embedded_test_server()->GetURL("bar.com", "/title3.html"); |
- NavigateFrameToURL(root->child_at(0), url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateFrameToURL(root->child_at(0), url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
@@ -1717,13 +1729,7 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, RestrictFrameDetach) { |
DepictFrameTree(root)); |
} |
-#if defined(OS_WIN) |
-// This test is flaky on Windows, see https://crbug.com/629419. |
-#define MAYBE_NavigateRemoteFrame DISABLED_NavigateRemoteFrame |
-#else |
-#define MAYBE_NavigateRemoteFrame NavigateRemoteFrame |
-#endif |
-IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_NavigateRemoteFrame) { |
+IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, NavigateRemoteFrame) { |
GURL main_url(embedded_test_server()->GetURL( |
"a.com", "/cross_site_iframe_factory.html?a(a,a(a,a(a)))")); |
NavigateToURL(shell(), main_url); |
@@ -1742,7 +1748,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_NavigateRemoteFrame) { |
// Load cross-site page into iframe. |
GURL url = embedded_test_server()->GetURL("foo.com", "/title2.html"); |
- NavigateFrameToURL(root->child_at(0), url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateFrameToURL(root->child_at(0), url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
@@ -1763,7 +1773,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_NavigateRemoteFrame) { |
// Emulate the main frame changing the src of the iframe such that it |
// navigates cross-site. |
url = embedded_test_server()->GetURL("bar.com", "/title3.html"); |
- NavigateIframeToURL(shell()->web_contents(), "child-0", url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateIframeToURL(shell()->web_contents(), "child-0", url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
@@ -1782,7 +1796,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_NavigateRemoteFrame) { |
// Navigate back to the parent's origin and ensure we return to the |
// parent's process. |
- NavigateFrameToURL(child, http_url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateFrameToURL(child, http_url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_EQ(http_url, observer.last_navigation_url()); |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(shell()->web_contents()->GetSiteInstance(), |
@@ -4248,13 +4266,7 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, IndexedFrameAccess) { |
EXPECT_EQ(1, GetReceivedMessages(child2)); |
} |
-#if defined(OS_WIN) |
-// This test is flaky on Windows, see https://crbug.com/629419. |
-#define MAYBE_RFPHDestruction DISABLED_RFPHDestruction |
-#else |
-#define MAYBE_RFPHDestruction RFPHDestruction |
-#endif |
-IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_RFPHDestruction) { |
+IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, RFPHDestruction) { |
GURL main_url(embedded_test_server()->GetURL("/site_per_process_main.html")); |
NavigateToURL(shell(), main_url); |
@@ -4266,7 +4278,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_RFPHDestruction) { |
// Load cross-site page into iframe. |
FrameTreeNode* child = root->child_at(0); |
GURL url = embedded_test_server()->GetURL("foo.com", "/title2.html"); |
- NavigateFrameToURL(root->child_at(0), url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateFrameToURL(root->child_at(0), url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
EXPECT_EQ( |
@@ -4282,7 +4298,11 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_RFPHDestruction) { |
// Load another cross-site page. |
url = embedded_test_server()->GetURL("bar.com", "/title3.html"); |
- NavigateIframeToURL(shell()->web_contents(), "test", url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ NavigateIframeToURL(shell()->web_contents(), "test", url); |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
EXPECT_EQ(url, observer.last_navigation_url()); |
EXPECT_EQ( |
@@ -4297,14 +4317,16 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, MAYBE_RFPHDestruction) { |
DepictFrameTree(root)); |
// Navigate back to the parent's origin. |
- RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
- url = embedded_test_server()->GetURL("/title1.html"); |
- NavigateFrameToURL(child, url); |
+ { |
+ RenderFrameDeletedObserver deleted_observer(child->current_frame_host()); |
+ url = embedded_test_server()->GetURL("/title1.html"); |
+ NavigateFrameToURL(child, url); |
+ // Wait for the old process to exit, to verify that the proxies go away. |
+ deleted_observer.WaitUntilDeleted(); |
+ } |
EXPECT_EQ(url, observer.last_navigation_url()); |
EXPECT_TRUE(observer.last_navigation_succeeded()); |
- // Wait for the old process to exit, to verify that the proxies go away. |
- deleted_observer.WaitUntilDeleted(); |
EXPECT_EQ( |
" Site A\n" |
" |--Site A\n" |