Index: Source/web/WebLocalFrameImpl.cpp |
diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp |
index 76c424b3ccf27816788ef0cf95214db729bc4933..2f160a3d68ce39cf0934641528f70197b4a91857 100644 |
--- a/Source/web/WebLocalFrameImpl.cpp |
+++ b/Source/web/WebLocalFrameImpl.cpp |
@@ -944,14 +944,22 @@ v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const |
void WebLocalFrameImpl::reload(bool ignoreCache) |
{ |
- ASSERT(frame()); |
- frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload); |
+ // TODO(clamy): Remove this function once RenderFrame calls load for all |
+ // requests. |
+ reloadWithOverrideURL(KURL(), ignoreCache); |
} |
void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ignoreCache) |
{ |
+ // TODO(clamy): Remove this function once RenderFrame calls load for all |
+ // requests. |
ASSERT(frame()); |
- frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload, overrideUrl); |
+ WebFrameLoadType loadType = ignoreCache ? |
+ WebFrameLoadType::ReloadFromOrigin : WebFrameLoadType::Reload; |
+ WebURLRequest request = requestForReload(loadType, overrideUrl); |
+ if (request.isNull()) |
+ return; |
+ load(request, loadType, WebHistoryItem(), WebHistoryDifferentDocumentLoad); |
} |
void WebLocalFrameImpl::reloadImage(const WebNode& webNode) |
@@ -965,25 +973,18 @@ void WebLocalFrameImpl::reloadImage(const WebNode& webNode) |
void WebLocalFrameImpl::loadRequest(const WebURLRequest& request) |
{ |
- ASSERT(frame()); |
- ASSERT(!request.isNull()); |
- const ResourceRequest& resourceRequest = request.toResourceRequest(); |
- |
- if (resourceRequest.url().protocolIs("javascript")) { |
- loadJavaScriptURL(resourceRequest.url()); |
- return; |
- } |
- |
- frame()->loader().load(FrameLoadRequest(0, resourceRequest)); |
+ // TODO(clamy): Remove this function once RenderFrame calls load for all |
+ // requests. |
+ load(request, WebFrameLoadType::Standard, WebHistoryItem(), WebHistoryDifferentDocumentLoad); |
} |
-void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLoadType loadType, WebURLRequest::CachePolicy cachePolicy) |
+void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLoadType loadType, |
+ WebURLRequest::CachePolicy cachePolicy) |
{ |
- ASSERT(frame()); |
- RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<HistoryItem>(item); |
- ASSERT(historyItem); |
- frame()->loader().loadHistoryItem(historyItem.get(), FrameLoadTypeBackForward, |
- static_cast<HistoryLoadType>(loadType), static_cast<ResourceRequestCachePolicy>(cachePolicy)); |
+ // TODO(clamy): Remove this function once RenderFrame calls load for all |
+ // requests. |
+ WebURLRequest request = requestFromHistoryItem(item, cachePolicy); |
+ load(request, WebFrameLoadType::BackForward, item, loadType); |
} |
void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachableURL, bool replace) |
@@ -1734,10 +1735,14 @@ PassRefPtrWillBeRawPtr<LocalFrame> WebLocalFrameImpl::createChildFrame(const Fra |
if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->document()->loadEventFinished()) |
childItem = PassRefPtrWillBeRawPtr<HistoryItem>(webframeChild->client()->historyItemForNewChildFrame(webframeChild)); |
- if (childItem) |
- child->loader().loadHistoryItem(childItem.get(), FrameLoadTypeInitialHistoryLoad); |
- else |
- child->loader().load(request); |
+ FrameLoadRequest newRequest = request; |
+ FrameLoadType loadType = FrameLoadTypeStandard; |
+ if (childItem) { |
+ newRequest = FrameLoadRequest(request.originDocument(), |
+ FrameLoader::resourceRequestFromHistoryItem(childItem.get(), UseProtocolCachePolicy)); |
+ loadType = FrameLoadTypeInitialHistoryLoad; |
+ } |
+ child->loader().load(newRequest, loadType, childItem.get()); |
// Note a synchronous navigation (about:blank) would have already processed |
// onload, so it is possible for the child frame to have already been |
@@ -2015,6 +2020,45 @@ void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina |
toHTMLAnchorElement(node)->sendPings(destinationURL); |
} |
+WebURLRequest WebLocalFrameImpl::requestFromHistoryItem(const WebHistoryItem& item, |
+ WebURLRequest::CachePolicy cachePolicy) const |
+{ |
+ RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<HistoryItem>(item); |
+ ResourceRequest request = FrameLoader::resourceRequestFromHistoryItem( |
+ historyItem.get(), static_cast<ResourceRequestCachePolicy>(cachePolicy)); |
+ return WrappedResourceRequest(request); |
+} |
+ |
+WebURLRequest WebLocalFrameImpl::requestForReload(WebFrameLoadType loadType, |
+ const WebURL& overrideUrl) const |
+{ |
+ ASSERT(frame()); |
+ ResourceRequest request = frame()->loader().resourceRequestForReload( |
+ static_cast<FrameLoadType>(loadType), overrideUrl); |
+ return WrappedResourceRequest(request); |
+} |
+ |
+void WebLocalFrameImpl::load(const WebURLRequest& request, WebFrameLoadType webFrameLoadType, |
+ const WebHistoryItem& item, WebHistoryLoadType webHistoryLoadType) |
+{ |
+ ASSERT(frame()); |
+ ASSERT(!request.isNull()); |
+ ASSERT(webFrameLoadType != WebFrameLoadType::RedirectWithLockedBackForwardList); |
+ const ResourceRequest& resourceRequest = request.toResourceRequest(); |
+ |
+ if (resourceRequest.url().protocolIs("javascript") |
+ && webFrameLoadType == WebFrameLoadType::Standard) { |
+ loadJavaScriptURL(resourceRequest.url()); |
+ return; |
+ } |
+ |
+ FrameLoadRequest frameRequest = FrameLoadRequest(nullptr, resourceRequest); |
+ RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<HistoryItem>(item); |
+ frame()->loader().load( |
+ frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem.get(), |
+ static_cast<HistoryLoadType>(webHistoryLoadType)); |
+} |
+ |
bool WebLocalFrameImpl::isLoading() const |
{ |
if (!frame() || !frame()->document()) |