| Index: chrome/browser/prerender/prerender_manager.cc
|
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
|
| index 2baad068ee68482e8097d2dc3e7f8091ccac2da5..bcdde9a739c1533ec7a3d8d8a4451556c30b4dfa 100644
|
| --- a/chrome/browser/prerender/prerender_manager.cc
|
| +++ b/chrome/browser/prerender/prerender_manager.cc
|
| @@ -55,6 +55,7 @@
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/render_view_host.h"
|
| +#include "content/public/browser/resource_request_details.h"
|
| #include "content/public/browser/session_storage_namespace.h"
|
| #include "content/public/browser/site_instance.h"
|
| #include "content/public/browser/storage_partition.h"
|
| @@ -1096,14 +1097,19 @@ void PrerenderManager::PendingSwap::AboutToNavigateRenderView(
|
| target_route_id_, url_);
|
| }
|
|
|
| -void PrerenderManager::PendingSwap::ProvisionalChangeToMainFrameUrl(
|
| - const GURL& url,
|
| - content::RenderFrameHost* render_frame_host) {
|
| - // We must only cancel the pending swap if the |url| navigated to is not
|
| +void PrerenderManager::PendingSwap::DidStartProvisionalLoadForFrame(
|
| + content::RenderFrameHost* render_frame_host,
|
| + const GURL& validated_url,
|
| + bool is_error_page,
|
| + bool is_iframe_srcdoc) {
|
| + if (render_frame_host->GetParent())
|
| + return;
|
| +
|
| + // We must only cancel the pending swap if the url navigated to is not
|
| // the URL being attempted to be swapped in. That's because in the normal
|
| // flow, a ProvisionalChangeToMainFrameUrl will happen for the URL attempted
|
| // to be swapped in immediately after the pending swap has issued its merge.
|
| - if (url != url_)
|
| + if (validated_url != url_)
|
| prerender_data_->ClearPendingSwap();
|
| }
|
|
|
|
|