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

Unified Diff: content/browser/site_per_process_browsertest.cc

Issue 881413005: Fix flakyness in NavigateRemoteFrame browsertest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/renderer/render_frame_proxy.cc » ('j') | content/renderer/render_frame_proxy.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 61b8111386321b9fe06b10687d49fa32797a9ff4..e69d924954ceeae2ab247ce3d3f6731c9e61ec96 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -283,7 +283,7 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, CrossSiteIframe) {
// Disabled for flaky crashing: crbug.com/446575
IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest,
- DISABLED_NavigateRemoteFrame) {
+ NavigateRemoteFrame) {
GURL main_url(embedded_test_server()->GetURL("/site_per_process_main.html"));
NavigateToURL(shell(), main_url);
@@ -335,6 +335,48 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest,
EXPECT_TRUE(observer.last_navigation_succeeded());
EXPECT_EQ(shell()->web_contents()->GetSiteInstance(),
child->current_frame_host()->GetSiteInstance());
+
+ // Load cross-site page into iframe.
nasko 2015/02/11 14:44:06 Why do we need this here? These tests belongs logi
lfg 2015/02/11 18:23:52 The reason I did it is because they basically test
+ url = embedded_test_server()->GetURL("baz.com", "/title2.html");
+ NavigateFrameToURL(root->child_at(0), url);
+ EXPECT_TRUE(observer.last_navigation_succeeded());
+ EXPECT_EQ(url, observer.last_navigation_url());
+ ASSERT_EQ(2U, root->child_count());
+ EXPECT_NE(shell()->web_contents()->GetSiteInstance(),
+ root->child_at(0)->current_frame_host()->GetSiteInstance());
+
+ // Navigate iframe to a data URL. The navigation happens from a script in the
+ // parent frame, so the data URL should be committed in the same SiteInstance
+ // as the parent frame.
+ GURL data_url("data:text/html,dataurl");
+ NavigateIframeToURL(shell()->web_contents(), "test", data_url);
+ EXPECT_TRUE(observer.last_navigation_succeeded());
+ EXPECT_EQ(data_url, observer.last_navigation_url());
+
+ // Ensure that we have navigated using the top level process.
+ EXPECT_EQ(shell()->web_contents()->GetSiteInstance(),
+ root->child_at(0)->current_frame_host()->GetSiteInstance());
+
+ // Load cross-site page into iframe.
+ url = embedded_test_server()->GetURL("qux.com", "/title2.html");
+ NavigateFrameToURL(root->child_at(0), url);
+ EXPECT_TRUE(observer.last_navigation_succeeded());
+ EXPECT_EQ(url, observer.last_navigation_url());
+ ASSERT_EQ(2U, root->child_count());
+ EXPECT_NE(shell()->web_contents()->GetSiteInstance(),
+ root->child_at(0)->current_frame_host()->GetSiteInstance());
+
+ // Navigate iframe to about:blank. The navigation happens from a script in the
+ // parent frame, so it should be committed in the same SiteInstance as the
+ // parent frame.
+ GURL about_blank_url("about:blank");
+ NavigateIframeToURL(shell()->web_contents(), "test", about_blank_url);
+ EXPECT_TRUE(observer.last_navigation_succeeded());
+ EXPECT_EQ(about_blank_url, observer.last_navigation_url());
+
+ // Ensure that we have navigated using the top level process.
+ EXPECT_EQ(shell()->web_contents()->GetSiteInstance(),
+ root->child_at(0)->current_frame_host()->GetSiteInstance());
}
// In A-embed-B-embed-C scenario, verify that killing process B clears proxies
@@ -1047,105 +1089,6 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, WindowNameReplication) {
EXPECT_EQ(result, "3-1-name");
}
-// TODO(lfg): Merge the test below with NavigateRemoteFrame test.
-// TODO(lfg): Disabled because this triggers http://crbug.com/433012, and since
-// the renderer process crashes, it causes the title watcher to never return.
-// Alternatively, this could also be fixed if we could use NavigateIframeToURL
-// and classified the navigation as MANUAL_SUBFRAME (http://crbug.com/441863) or
-// if we waited for DidStopLoading (currently broken -- see comment in
-// NavigateIframeToURL).
-IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest,
- DISABLED_NavigateRemoteToDataURL) {
- GURL main_url(embedded_test_server()->GetURL("/site_per_process_main.html"));
- NavigateToURL(shell(), main_url);
-
- // It is safe to obtain the root frame tree node here, as it doesn't change.
- FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
- ->GetFrameTree()
- ->root();
-
- TestNavigationObserver observer(shell()->web_contents());
-
- // Load cross-site page into iframe.
- GURL url = embedded_test_server()->GetURL("foo.com", "/title1.html");
- NavigateFrameToURL(root->child_at(0), url);
- EXPECT_TRUE(observer.last_navigation_succeeded());
- EXPECT_EQ(url, observer.last_navigation_url());
-
- // Ensure that we have created a new process for the subframe.
- EXPECT_NE(shell()->web_contents()->GetSiteInstance(),
- root->child_at(0)->current_frame_host()->GetSiteInstance());
-
- // Navigate iframe to a data URL. The navigation happens from a script in the
- // parent frame, so the data URL should be committed in the same SiteInstance
- // as the parent frame.
- GURL data_url("data:text/html,dataurl");
- std::string script = base::StringPrintf(
- "setTimeout(function() {"
- "var iframe = document.getElementById('test');"
- "iframe.onload = function() { document.title = 'LOADED'; };"
- "iframe.src=\"%s\";"
- "},0);",
- data_url.spec().c_str());
- base::string16 passed_string(base::UTF8ToUTF16("LOADED"));
- TitleWatcher title_watcher(shell()->web_contents(), passed_string);
- EXPECT_TRUE(ExecuteScript(shell()->web_contents(), script));
- EXPECT_EQ(title_watcher.WaitAndGetTitle(), passed_string);
- EXPECT_TRUE(observer.last_navigation_succeeded());
- EXPECT_EQ(data_url, observer.last_navigation_url());
-
- // Ensure that we have navigated using the top level process.
- EXPECT_EQ(shell()->web_contents()->GetSiteInstance(),
- root->child_at(0)->current_frame_host()->GetSiteInstance());
-}
-
-// TODO(lfg): Merge the test below with NavigateRemoteFrame test.
-// Disabled due to the same reason as NavigateRemoteToDataURL.
-IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest,
- DISABLED_NavigateRemoteToBlankURL) {
- GURL main_url(embedded_test_server()->GetURL("/site_per_process_main.html"));
- NavigateToURL(shell(), main_url);
-
- // It is safe to obtain the root frame tree node here, as it doesn't change.
- FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
- ->GetFrameTree()
- ->root();
-
- TestNavigationObserver observer(shell()->web_contents());
-
- // Load cross-site page into iframe.
- GURL url = embedded_test_server()->GetURL("foo.com", "/title1.html");
- NavigateFrameToURL(root->child_at(0), url);
- EXPECT_TRUE(observer.last_navigation_succeeded());
- EXPECT_EQ(url, observer.last_navigation_url());
-
- // Ensure that we have created a new process for the subframe.
- EXPECT_NE(shell()->web_contents()->GetSiteInstance(),
- root->child_at(0)->current_frame_host()->GetSiteInstance());
-
- // Navigate iframe to about:blank. The navigation happens from a script in the
- // parent frame, so it should be committed in the same SiteInstance as the
- // parent frame.
- GURL about_blank_url("about:blank");
- std::string script = base::StringPrintf(
- "setTimeout(function() {"
- "var iframe = document.getElementById('test');"
- "iframe.onload = function() { document.title = 'LOADED'; };"
- "iframe.src=\"%s\";"
- "},0);",
- about_blank_url.spec().c_str());
- base::string16 passed_string(base::UTF8ToUTF16("LOADED"));
- TitleWatcher title_watcher(shell()->web_contents(), passed_string);
- EXPECT_TRUE(ExecuteScript(shell()->web_contents(), script));
- EXPECT_EQ(title_watcher.WaitAndGetTitle(), passed_string);
- EXPECT_TRUE(observer.last_navigation_succeeded());
- EXPECT_EQ(about_blank_url, observer.last_navigation_url());
-
- // Ensure that we have navigated using the top level process.
- EXPECT_EQ(shell()->web_contents()->GetSiteInstance(),
- root->child_at(0)->current_frame_host()->GetSiteInstance());
-}
-
// Ensure that navigating subframes in --site-per-process mode properly fires
// the DidStopLoading event on WebContentsObserver.
IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, CrossSiteDidStopLoading) {
« no previous file with comments | « no previous file | content/renderer/render_frame_proxy.cc » ('j') | content/renderer/render_frame_proxy.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698