Fix test flake in ProcessManagerBrowserTest.NestedURLNavigationsViaProxyBlocked
Cause of flake was confirmed by adding a slow unload handler to |popup|. This
fixes it.
Bug: 821596, 822635
Change-Id: I602c98a0fb37f9951cc85fb9d886616bb22e8b42
Reviewed-on: https://chromium-review.googlesource.com/967352
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Nick Carter <nick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543870}diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index acf90c0..36ae340 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -1081,9 +1081,8 @@
// Test that a web frame can't navigate a proxy for an extension frame to a
// blob/filesystem extension URL. See https://crbug.com/656752.
-// Disabled due to flake, see http://crbug.com/822635.
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
- DISABLED_NestedURLNavigationsViaProxyBlocked) {
+ NestedURLNavigationsViaProxyBlocked) {
// Create a simple extension without a background page.
const Extension* extension = CreateExtension("Extension", false);
embedded_test_server()->ServeFilesFromDirectory(extension->path());
@@ -1107,6 +1106,8 @@
// Setup the test by navigating popup to an extension page. This is allowed
// because it's web accessible.
content::WebContents* popup = OpenPopup(main_frame, extension_url);
+ content::RenderFrameDeletedObserver popup_unload_observer(
+ popup->GetMainFrame());
// This frame should now be in an extension process.
EXPECT_EQ(1u, pm->GetAllFrames().size());
@@ -1120,6 +1121,7 @@
EXPECT_TRUE(ExecuteScript(
tab, "window.popup.location.href = '" + nested_url.spec() + "';"));
WaitForLoadStop(popup);
+ popup_unload_observer.WaitUntilDeleted();
// Because the navigation was blocked, it should be an empty page.
EXPECT_NE(nested_url, popup->GetLastCommittedURL());