Index: third_party/WebKit/Source/web/WebLocalFrameImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp |
index 4b1eee0cf97db208f08a736174f0fb57443a3028..47eab6108e313787d9f77b4f44e237ae3a64e0cb 100644 |
--- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp |
@@ -1689,10 +1689,9 @@ LocalFrame* WebLocalFrameImpl::createChildFrame( |
FrameLoadRequest newRequest = request; |
FrameLoadType loadType = FrameLoadTypeStandard; |
if (childItem) { |
- newRequest = FrameLoadRequest( |
- request.originDocument(), |
- FrameLoader::resourceRequestFromHistoryItem( |
- childItem, WebCachePolicy::UseProtocolCachePolicy)); |
+ newRequest = FrameLoadRequest(request.originDocument(), |
+ childItem->generateResourceRequest( |
+ WebCachePolicy::UseProtocolCachePolicy)); |
loadType = FrameLoadTypeInitialHistoryLoad; |
} |
webframeChild->frame()->loader().load(newRequest, loadType, childItem); |
@@ -2006,9 +2005,8 @@ WebURLRequest WebLocalFrameImpl::requestFromHistoryItem( |
const WebHistoryItem& item, |
WebCachePolicy cachePolicy) const { |
HistoryItem* historyItem = item; |
- ResourceRequest request = |
- FrameLoader::resourceRequestFromHistoryItem(historyItem, cachePolicy); |
- return WrappedResourceRequest(request); |
+ return WrappedResourceRequest( |
+ historyItem->generateResourceRequest(cachePolicy)); |
} |
WebURLRequest WebLocalFrameImpl::requestForReload( |
@@ -2063,9 +2061,16 @@ void WebLocalFrameImpl::loadData(const WebData& data, |
// unreachableURL informs FrameLoader::reload to load unreachableURL |
// instead of the currently loaded URL. |
ResourceRequest request; |
- if (replace && !unreachableURL.isEmpty() && |
- frame()->loader().provisionalDocumentLoader()) |
- request = frame()->loader().provisionalDocumentLoader()->originalRequest(); |
+ HistoryItem* historyItem = item; |
+ DocumentLoader* provisionalDocumentLoader = |
+ frame()->loader().provisionalDocumentLoader(); |
+ if (replace && !unreachableURL.isEmpty() && provisionalDocumentLoader) { |
+ request = provisionalDocumentLoader->originalRequest(); |
+ if (provisionalDocumentLoader->loadType() == FrameLoadTypeBackForward) { |
+ historyItem = provisionalDocumentLoader->historyItem(); |
+ webFrameLoadType = WebFrameLoadType::BackForward; |
+ } |
+ } |
request.setURL(baseURL); |
request.setCheckForBrowserSideNavigation(false); |
@@ -2076,7 +2081,6 @@ void WebLocalFrameImpl::loadData(const WebData& data, |
if (isClientRedirect) |
frameRequest.setClientRedirect(ClientRedirectPolicy::ClientRedirect); |
- HistoryItem* historyItem = item; |
frame()->loader().load( |
frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem, |
static_cast<HistoryLoadType>(webHistoryLoadType)); |
@@ -2089,9 +2093,8 @@ bool WebLocalFrameImpl::maybeRenderFallbackContent( |
if (!frame()->owner() || !frame()->owner()->canRenderFallbackContent()) |
return false; |
- FrameLoader& frameloader = frame()->loader(); |
- DCHECK(frameloader.provisionalDocumentLoader()); |
- frameloader.loadFailed(frameloader.provisionalDocumentLoader(), error); |
+ DCHECK(frame()->loader().provisionalDocumentLoader()); |
+ frame()->loader().provisionalDocumentLoader()->loadFailed(error); |
return true; |
} |