Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2407)

Unified Diff: Source/web/WebLocalFrameImpl.cpp

Issue 1156473002: Refactor FrameLoader loading interface (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressed comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/WebLocalFrameImpl.cpp
diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp
index d38c46be87265b9739e3e78615aaf734c4372266..08a563e22231331f48eabfe1a9dfb10fab2d3095 100644
--- a/Source/web/WebLocalFrameImpl.cpp
+++ b/Source/web/WebLocalFrameImpl.cpp
@@ -913,16 +913,41 @@ v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const
return toV8Context(frame(), DOMWrapperWorld::mainWorld());
}
-void WebLocalFrameImpl::reload(bool ignoreCache)
+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());
- frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload);
+ ResourceRequest request = frame()->loader().resourceRequestForReload(
+ *frame(), static_cast<FrameLoadType>(loadType), overrideUrl);
+ return WrappedResourceRequest(request);
+}
+
+void WebLocalFrameImpl::reload(bool ignoreCache)
+{
+ // TODO(clamy): Remove this function once RenderFrame calls loadRequest for
+ // all requests.
+ reloadWithOverrideURL(KURL(), ignoreCache);
}
void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ignoreCache)
{
+ // TODO(clamy): Remove this function once RenderFrame calls loadRequest for
+ // all requests.
ASSERT(frame());
- frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload, overrideUrl);
+ WebFrameLoadType loadType = ignoreCache ? ReloadFromOrigin : Reload;
+ WebURLRequest request = requestForReload(loadType, overrideUrl);
+ if (request.isNull())
+ return;
+ loadRequest(request, loadType, WebHistoryItem(), WebHistoryDifferentDocumentLoad);
}
void WebLocalFrameImpl::reloadImage(const WebNode& webNode)
@@ -934,27 +959,35 @@ void WebLocalFrameImpl::reloadImage(const WebNode& webNode)
}
}
-void WebLocalFrameImpl::loadRequest(const WebURLRequest& request)
+void WebLocalFrameImpl::loadRequest(const WebURLRequest& request, WebFrameLoadType webFrameLoadType,
+ const WebHistoryItem& item, WebHistoryLoadType webHistoryLoadType)
{
ASSERT(frame());
ASSERT(!request.isNull());
const ResourceRequest& resourceRequest = request.toResourceRequest();
- if (resourceRequest.url().protocolIs("javascript")) {
+ if (resourceRequest.url().protocolIs("javascript") && webFrameLoadType == Standard) {
Nate Chapin 2015/06/02 17:19:35 Are there any situations where this will get calle
clamy 2015/06/03 14:39:14 I don't think so. Added an ASSERT to check that it
loadJavaScriptURL(resourceRequest.url());
return;
}
- frame()->loader().load(FrameLoadRequest(0, resourceRequest));
+ FrameLoadRequest frameRequest = FrameLoadRequest(nullptr, resourceRequest);
+ if (webFrameLoadType == Reload || webFrameLoadType == ReloadFromOrigin)
+ frameRequest = FrameLoader::frameRequestForReload(resourceRequest);
+
+ RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<HistoryItem>(item);
+ frame()->loader().load(
+ frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem.get(),
+ static_cast<HistoryLoadType>(webHistoryLoadType));
}
-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 loadRequest for
+ // all requests.
+ WebURLRequest request = requestFromHistoryItem(item, cachePolicy);
+ loadRequest(request, BackForward, item, loadType);
}
void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachableURL, bool replace)
@@ -1709,10 +1742,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

Powered by Google App Engine
This is Rietveld 408576698