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

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: Rebase Created 5 years, 6 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
« no previous file with comments | « Source/web/WebLocalFrameImpl.h ('k') | Source/web/WebViewImpl.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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())
« no previous file with comments | « Source/web/WebLocalFrameImpl.h ('k') | Source/web/WebViewImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698