| Index: content/test/test_web_contents.cc | 
| diff --git a/content/test/test_web_contents.cc b/content/test/test_web_contents.cc | 
| index 7807ffaa804cd54659f481ace694e51416a16efd..1cdc64149cd626b1db52af6279479417c1e16a18 100644 | 
| --- a/content/test/test_web_contents.cc | 
| +++ b/content/test/test_web_contents.cc | 
| @@ -22,6 +22,7 @@ | 
| #include "content/public/browser/notification_types.h" | 
| #include "content/public/common/browser_side_navigation_policy.h" | 
| #include "content/public/common/page_state.h" | 
| +#include "content/public/test/browser_side_navigation_test_utils.h" | 
| #include "content/public/test/mock_render_process_host.h" | 
| #include "content/test/test_render_view_host.h" | 
| #include "ui/base/page_transition_types.h" | 
| @@ -217,31 +218,25 @@ void TestWebContents::CommitPendingNavigation() { | 
| const NavigationEntry* entry = GetController().GetPendingEntry(); | 
| DCHECK(entry); | 
|  | 
| -  // If we are doing a cross-site navigation, this simulates the current RFH | 
| -  // notifying that it has unloaded so the pending RFH is resumed and can | 
| -  // navigate. | 
| -  // PlzNavigate: the pending RFH is not created before the navigation commit, | 
| -  // so it is necessary to simulate the IO thread response here to commit in the | 
| -  // proper renderer. It is necessary to call PrepareForCommit before getting | 
| -  // the main and the pending frame because when we are trying to navigate to a | 
| -  // webui from a new tab, a RenderFrameHost is created to display it that is | 
| -  // committed immediately (since it is a new tab). Therefore the main frame is | 
| -  // replaced without a pending frame being created, and we don't get the right | 
| -  // values for the RFH to navigate: we try to use the old one that has been | 
| -  // deleted in the meantime. | 
| -  // Note that for some synchronous navigations (about:blank, javascript | 
| -  // urls, etc.) there will be no NavigationRequest, and no simulation of the | 
| -  // network stack is required. | 
| -  bool browser_side_navigation = IsBrowserSideNavigationEnabled(); | 
| -  if (!browser_side_navigation || | 
| -      GetMainFrame()->frame_tree_node()->navigation_request()) { | 
| -    GetMainFrame()->PrepareForCommit(); | 
| -  } | 
| - | 
| TestRenderFrameHost* old_rfh = GetMainFrame(); | 
| + | 
| +  // PlzNavigate: the pending RenderFrameHost is not created before the | 
| +  // navigation commit, so it is necessary to simulate the IO thread response | 
| +  // here to commit in the proper renderer. It is necessary to call | 
| +  // PrepareForCommit before getting the main and the pending frame because when | 
| +  // we are trying to navigate to a webui from a new tab, a RenderFrameHost is | 
| +  // created to display it that is committed immediately (since it is a new | 
| +  // tab). Therefore the main frame is replaced without a pending frame being | 
| +  // created, and we don't get the right values for the RenderFrameHost to | 
| +  // navigate: we try to use the old one that has been deleted in the meantime. | 
| +  // Note that for some synchronous navigations (about:blank, javascript urls, | 
| +  // etc.), no simulation of the network stack is required. | 
| +  old_rfh->PrepareForCommitIfNecessary(); | 
| + | 
| TestRenderFrameHost* rfh = GetPendingMainFrame(); | 
| if (!rfh) | 
| rfh = old_rfh; | 
| +  const bool browser_side_navigation = IsBrowserSideNavigationEnabled(); | 
| CHECK(!browser_side_navigation || rfh->is_loading()); | 
| CHECK(!browser_side_navigation || | 
| !rfh->frame_tree_node()->navigation_request()); | 
|  |