Index: chrome/browser/extensions/process_management_browsertest.cc |
diff --git a/chrome/browser/extensions/process_management_browsertest.cc b/chrome/browser/extensions/process_management_browsertest.cc |
index c446d02a0310698067466a7ec1888924299f3a70..02d9f40bc1d5ba0fc134875680a5c02f68fe3450 100644 |
--- a/chrome/browser/extensions/process_management_browsertest.cc |
+++ b/chrome/browser/extensions/process_management_browsertest.cc |
@@ -29,6 +29,7 @@ |
#include "extensions/browser/extension_host.h" |
#include "extensions/browser/process_manager.h" |
#include "extensions/browser/process_map.h" |
+#include "extensions/common/extension_urls.h" |
#include "extensions/common/switches.h" |
#include "net/dns/mock_host_resolver.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
@@ -458,3 +459,33 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, |
EXPECT_EQ(new_site_instance->GetProcess(), |
web_contents->GetSiteInstance()->GetProcess()); |
} |
+ |
+// This problem is similar to https://crbug.com/622385. It happens when an |
+// iframe error page with the Chrome Web Store URL is displayed and the iframe |
+// and its parent reside in the same process. In this case, the renderer |
+// process is killed with the RFH_CAN_COMMIT_URL_BLOCKED error code. This test |
+// asserts that the renderer is still alive after the navigation. |
+IN_PROC_BROWSER_TEST_F(ChromeWebStoreProcessTest, |
+ ChromeWebStoreBlockedByFrameSrc) { |
+ GURL url = |
+ embedded_test_server()->GetURL("/extensions/iframe-child-src-none.html"); |
+ ui_test_utils::NavigateToURL(browser(), url); |
+ |
+ WebContents* web_contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ |
+ // Make the iframe navigate to the Chrome Web Store and wait for the 'load' |
+ // event. This is also a check that the renderer is still alive after the |
+ // navigation. |
+ std::string message; |
+ EXPECT_TRUE(ExecuteScriptAndExtractString( |
+ web_contents, |
+ "var iframe = document.getElementById('test');" |
+ "iframe.onload = function() {" |
+ " domAutomationController.send('iframe loaded');" |
+ "};" |
+ "iframe.src = '" + |
+ std::string(extension_urls::kChromeWebstoreBaseURL) + "';", |
+ &message)); |
+ EXPECT_EQ("iframe loaded", message); |
+} |