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());