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

Side by Side 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, 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 922 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 return result; 933 return result;
934 } 934 }
935 935
936 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const 936 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const
937 { 937 {
938 return toV8Context(frame(), DOMWrapperWorld::mainWorld()); 938 return toV8Context(frame(), DOMWrapperWorld::mainWorld());
939 } 939 }
940 940
941 void WebLocalFrameImpl::reload(bool ignoreCache) 941 void WebLocalFrameImpl::reload(bool ignoreCache)
942 { 942 {
943 ASSERT(frame()); 943 // TODO(clamy): Remove this function once RenderFrame calls load for all
944 frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload); 944 // requests.
945 reloadWithOverrideURL(KURL(), ignoreCache);
945 } 946 }
946 947
947 void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ig noreCache) 948 void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ig noreCache)
948 { 949 {
950 // TODO(clamy): Remove this function once RenderFrame calls load for all
951 // requests.
949 ASSERT(frame()); 952 ASSERT(frame());
950 frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload, overri deUrl); 953 WebFrameLoadType loadType = ignoreCache ?
954 WebFrameLoadType::ReloadFromOrigin : WebFrameLoadType::Reload;
955 WebURLRequest request = requestForReload(loadType, overrideUrl);
956 if (request.isNull())
957 return;
958 load(request, loadType, WebHistoryItem(), WebHistoryDifferentDocumentLoad);
951 } 959 }
952 960
953 void WebLocalFrameImpl::reloadImage(const WebNode& webNode) 961 void WebLocalFrameImpl::reloadImage(const WebNode& webNode)
954 { 962 {
955 const Node* node = webNode.constUnwrap<Node>(); 963 const Node* node = webNode.constUnwrap<Node>();
956 if (isHTMLImageElement(*node)) { 964 if (isHTMLImageElement(*node)) {
957 const HTMLImageElement& imageElement = toHTMLImageElement(*node); 965 const HTMLImageElement& imageElement = toHTMLImageElement(*node);
958 imageElement.forceReload(); 966 imageElement.forceReload();
959 } 967 }
960 } 968 }
961 969
962 void WebLocalFrameImpl::loadRequest(const WebURLRequest& request) 970 void WebLocalFrameImpl::loadRequest(const WebURLRequest& request)
963 { 971 {
964 ASSERT(frame()); 972 // TODO(clamy): Remove this function once RenderFrame calls load for all
965 ASSERT(!request.isNull()); 973 // requests.
966 const ResourceRequest& resourceRequest = request.toResourceRequest(); 974 load(request, WebFrameLoadType::Standard, WebHistoryItem(), WebHistoryDiffer entDocumentLoad);
967
968 if (resourceRequest.url().protocolIs("javascript")) {
969 loadJavaScriptURL(resourceRequest.url());
970 return;
971 }
972
973 frame()->loader().load(FrameLoadRequest(0, resourceRequest));
974 } 975 }
975 976
976 void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLo adType loadType, WebURLRequest::CachePolicy cachePolicy) 977 void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLo adType loadType,
978 WebURLRequest::CachePolicy cachePolicy)
977 { 979 {
978 ASSERT(frame()); 980 // TODO(clamy): Remove this function once RenderFrame calls load for all
979 RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<History Item>(item); 981 // requests.
980 ASSERT(historyItem); 982 WebURLRequest request = requestFromHistoryItem(item, cachePolicy);
981 frame()->loader().loadHistoryItem(historyItem.get(), FrameLoadTypeBackForwar d, 983 load(request, WebFrameLoadType::BackForward, item, loadType);
982 static_cast<HistoryLoadType>(loadType), static_cast<ResourceRequestCache Policy>(cachePolicy));
983 } 984 }
984 985
985 void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachable URL, bool replace) 986 void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachable URL, bool replace)
986 { 987 {
987 ASSERT(frame()); 988 ASSERT(frame());
988 989
989 // If we are loading substitute data to replace an existing load, then 990 // If we are loading substitute data to replace an existing load, then
990 // inherit all of the properties of that original request. This way, 991 // inherit all of the properties of that original request. This way,
991 // reload will re-attempt the original request. It is essential that 992 // reload will re-attempt the original request. It is essential that
992 // we only do this when there is an unreachableURL since a non-empty 993 // we only do this when there is an unreachableURL since a non-empty
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 // it may dispatch a load event in the parent. 1724 // it may dispatch a load event in the parent.
1724 if (!child->tree().parent()) 1725 if (!child->tree().parent())
1725 return nullptr; 1726 return nullptr;
1726 1727
1727 // If we're moving in the back/forward list, we might want to replace the co ntent 1728 // If we're moving in the back/forward list, we might want to replace the co ntent
1728 // of this child frame with whatever was there at that point. 1729 // of this child frame with whatever was there at that point.
1729 RefPtrWillBeRawPtr<HistoryItem> childItem = nullptr; 1730 RefPtrWillBeRawPtr<HistoryItem> childItem = nullptr;
1730 if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->documen t()->loadEventFinished()) 1731 if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->documen t()->loadEventFinished())
1731 childItem = PassRefPtrWillBeRawPtr<HistoryItem>(webframeChild->client()- >historyItemForNewChildFrame(webframeChild)); 1732 childItem = PassRefPtrWillBeRawPtr<HistoryItem>(webframeChild->client()- >historyItemForNewChildFrame(webframeChild));
1732 1733
1733 if (childItem) 1734 FrameLoadRequest newRequest = request;
1734 child->loader().loadHistoryItem(childItem.get(), FrameLoadTypeInitialHis toryLoad); 1735 FrameLoadType loadType = FrameLoadTypeStandard;
1735 else 1736 if (childItem) {
1736 child->loader().load(request); 1737 newRequest = FrameLoadRequest(request.originDocument(),
1738 FrameLoader::resourceRequestFromHistoryItem(childItem.get(), UseProt ocolCachePolicy));
1739 loadType = FrameLoadTypeInitialHistoryLoad;
1740 }
1741 child->loader().load(newRequest, loadType, childItem.get());
1737 1742
1738 // Note a synchronous navigation (about:blank) would have already processed 1743 // Note a synchronous navigation (about:blank) would have already processed
1739 // onload, so it is possible for the child frame to have already been 1744 // onload, so it is possible for the child frame to have already been
1740 // detached by script in the page. 1745 // detached by script in the page.
1741 if (!child->tree().parent()) 1746 if (!child->tree().parent())
1742 return nullptr; 1747 return nullptr;
1743 return child; 1748 return child;
1744 } 1749 }
1745 1750
1746 void WebLocalFrameImpl::didChangeContentsSize(const IntSize& size) 1751 void WebLocalFrameImpl::didChangeContentsSize(const IntSize& size)
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
2004 } 2009 }
2005 2010
2006 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina tionURL) 2011 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina tionURL)
2007 { 2012 {
2008 ASSERT(frame()); 2013 ASSERT(frame());
2009 const Node* node = linkNode.constUnwrap<Node>(); 2014 const Node* node = linkNode.constUnwrap<Node>();
2010 if (isHTMLAnchorElement(node)) 2015 if (isHTMLAnchorElement(node))
2011 toHTMLAnchorElement(node)->sendPings(destinationURL); 2016 toHTMLAnchorElement(node)->sendPings(destinationURL);
2012 } 2017 }
2013 2018
2019 WebURLRequest WebLocalFrameImpl::requestFromHistoryItem(const WebHistoryItem& it em,
2020 WebURLRequest::CachePolicy cachePolicy) const
2021 {
2022 RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<History Item>(item);
2023 ResourceRequest request = FrameLoader::resourceRequestFromHistoryItem(
2024 historyItem.get(), static_cast<ResourceRequestCachePolicy>(cachePolicy)) ;
2025 return WrappedResourceRequest(request);
2026 }
2027
2028 WebURLRequest WebLocalFrameImpl::requestForReload(WebFrameLoadType loadType,
2029 const WebURL& overrideUrl) const
2030 {
2031 ASSERT(frame());
2032 ResourceRequest request = frame()->loader().resourceRequestForReload(
2033 static_cast<FrameLoadType>(loadType), overrideUrl);
2034 return WrappedResourceRequest(request);
2035 }
2036
2037 void WebLocalFrameImpl::load(const WebURLRequest& request, WebFrameLoadType webF rameLoadType,
2038 const WebHistoryItem& item, WebHistoryLoadType webHistoryLoadType)
2039 {
2040 ASSERT(frame());
2041 ASSERT(!request.isNull());
2042 ASSERT(webFrameLoadType != WebFrameLoadType::RedirectWithLockedBackForwardLi st);
2043 const ResourceRequest& resourceRequest = request.toResourceRequest();
2044
2045 if (resourceRequest.url().protocolIs("javascript")
2046 && webFrameLoadType == WebFrameLoadType::Standard) {
2047 loadJavaScriptURL(resourceRequest.url());
2048 return;
2049 }
2050
2051 FrameLoadRequest frameRequest = FrameLoadRequest(nullptr, resourceRequest);
2052 if (webFrameLoadType == WebFrameLoadType::Reload
2053 || webFrameLoadType == WebFrameLoadType::ReloadFromOrigin)
2054 frameRequest = FrameLoader::frameRequestForReload(resourceRequest);
2055
2056 RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<History Item>(item);
2057 frame()->loader().load(
2058 frameRequest, static_cast<FrameLoadType>(webFrameLoadType), historyItem. get(),
2059 static_cast<HistoryLoadType>(webHistoryLoadType));
2060 }
2061
2014 bool WebLocalFrameImpl::isLoading() const 2062 bool WebLocalFrameImpl::isLoading() const
2015 { 2063 {
2016 if (!frame() || !frame()->document()) 2064 if (!frame() || !frame()->document())
2017 return false; 2065 return false;
2018 return frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument() || frame()->loader().provisionalDocumentLoader() || !frame()->document()->loadEv entFinished(); 2066 return frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument() || frame()->loader().provisionalDocumentLoader() || !frame()->document()->loadEv entFinished();
2019 } 2067 }
2020 2068
2021 bool WebLocalFrameImpl::isResourceLoadInProgress() const 2069 bool WebLocalFrameImpl::isResourceLoadInProgress() const
2022 { 2070 {
2023 if (!frame() || !frame()->document()) 2071 if (!frame() || !frame()->document())
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2108 { 2156 {
2109 m_frameWidget = frameWidget; 2157 m_frameWidget = frameWidget;
2110 } 2158 }
2111 2159
2112 WebFrameWidgetImpl* WebLocalFrameImpl::frameWidget() const 2160 WebFrameWidgetImpl* WebLocalFrameImpl::frameWidget() const
2113 { 2161 {
2114 return m_frameWidget; 2162 return m_frameWidget;
2115 } 2163 }
2116 2164
2117 } // namespace blink 2165 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698