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

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: 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 unified diff | Download patch
« no previous file with comments | « Source/web/WebLocalFrameImpl.h ('k') | Source/web/WebViewImpl.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 return result; 937 return result;
938 } 938 }
939 939
940 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const 940 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const
941 { 941 {
942 return toV8Context(frame(), DOMWrapperWorld::mainWorld()); 942 return toV8Context(frame(), DOMWrapperWorld::mainWorld());
943 } 943 }
944 944
945 void WebLocalFrameImpl::reload(bool ignoreCache) 945 void WebLocalFrameImpl::reload(bool ignoreCache)
946 { 946 {
947 ASSERT(frame()); 947 // TODO(clamy): Remove this function once RenderFrame calls load for all
948 frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload); 948 // requests.
949 reloadWithOverrideURL(KURL(), ignoreCache);
949 } 950 }
950 951
951 void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ig noreCache) 952 void WebLocalFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ig noreCache)
952 { 953 {
954 // TODO(clamy): Remove this function once RenderFrame calls load for all
955 // requests.
953 ASSERT(frame()); 956 ASSERT(frame());
954 frame()->loader().reload(ignoreCache ? EndToEndReload : NormalReload, overri deUrl); 957 WebFrameLoadType loadType = ignoreCache ?
958 WebFrameLoadType::ReloadFromOrigin : WebFrameLoadType::Reload;
959 WebURLRequest request = requestForReload(loadType, overrideUrl);
960 if (request.isNull())
961 return;
962 load(request, loadType, WebHistoryItem(), WebHistoryDifferentDocumentLoad);
955 } 963 }
956 964
957 void WebLocalFrameImpl::reloadImage(const WebNode& webNode) 965 void WebLocalFrameImpl::reloadImage(const WebNode& webNode)
958 { 966 {
959 const Node* node = webNode.constUnwrap<Node>(); 967 const Node* node = webNode.constUnwrap<Node>();
960 if (isHTMLImageElement(*node)) { 968 if (isHTMLImageElement(*node)) {
961 const HTMLImageElement& imageElement = toHTMLImageElement(*node); 969 const HTMLImageElement& imageElement = toHTMLImageElement(*node);
962 imageElement.forceReload(); 970 imageElement.forceReload();
963 } 971 }
964 } 972 }
965 973
966 void WebLocalFrameImpl::loadRequest(const WebURLRequest& request) 974 void WebLocalFrameImpl::loadRequest(const WebURLRequest& request)
967 { 975 {
968 ASSERT(frame()); 976 // TODO(clamy): Remove this function once RenderFrame calls load for all
969 ASSERT(!request.isNull()); 977 // requests.
970 const ResourceRequest& resourceRequest = request.toResourceRequest(); 978 load(request, WebFrameLoadType::Standard, WebHistoryItem(), WebHistoryDiffer entDocumentLoad);
971
972 if (resourceRequest.url().protocolIs("javascript")) {
973 loadJavaScriptURL(resourceRequest.url());
974 return;
975 }
976
977 frame()->loader().load(FrameLoadRequest(0, resourceRequest));
978 } 979 }
979 980
980 void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLo adType loadType, WebURLRequest::CachePolicy cachePolicy) 981 void WebLocalFrameImpl::loadHistoryItem(const WebHistoryItem& item, WebHistoryLo adType loadType,
982 WebURLRequest::CachePolicy cachePolicy)
981 { 983 {
982 ASSERT(frame()); 984 // TODO(clamy): Remove this function once RenderFrame calls load for all
983 RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<History Item>(item); 985 // requests.
984 ASSERT(historyItem); 986 WebURLRequest request = requestFromHistoryItem(item, cachePolicy);
985 frame()->loader().loadHistoryItem(historyItem.get(), FrameLoadTypeBackForwar d, 987 load(request, WebFrameLoadType::BackForward, item, loadType);
986 static_cast<HistoryLoadType>(loadType), static_cast<ResourceRequestCache Policy>(cachePolicy));
987 } 988 }
988 989
989 void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachable URL, bool replace) 990 void WebLocalFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachable URL, bool replace)
990 { 991 {
991 ASSERT(frame()); 992 ASSERT(frame());
992 993
993 // If we are loading substitute data to replace an existing load, then 994 // If we are loading substitute data to replace an existing load, then
994 // inherit all of the properties of that original request. This way, 995 // inherit all of the properties of that original request. This way,
995 // reload will re-attempt the original request. It is essential that 996 // reload will re-attempt the original request. It is essential that
996 // we only do this when there is an unreachableURL since a non-empty 997 // 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
1727 // it may dispatch a load event in the parent. 1728 // it may dispatch a load event in the parent.
1728 if (!child->tree().parent()) 1729 if (!child->tree().parent())
1729 return nullptr; 1730 return nullptr;
1730 1731
1731 // If we're moving in the back/forward list, we might want to replace the co ntent 1732 // If we're moving in the back/forward list, we might want to replace the co ntent
1732 // of this child frame with whatever was there at that point. 1733 // of this child frame with whatever was there at that point.
1733 RefPtrWillBeRawPtr<HistoryItem> childItem = nullptr; 1734 RefPtrWillBeRawPtr<HistoryItem> childItem = nullptr;
1734 if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->documen t()->loadEventFinished()) 1735 if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->documen t()->loadEventFinished())
1735 childItem = PassRefPtrWillBeRawPtr<HistoryItem>(webframeChild->client()- >historyItemForNewChildFrame(webframeChild)); 1736 childItem = PassRefPtrWillBeRawPtr<HistoryItem>(webframeChild->client()- >historyItemForNewChildFrame(webframeChild));
1736 1737
1737 if (childItem) 1738 FrameLoadRequest newRequest = request;
1738 child->loader().loadHistoryItem(childItem.get(), FrameLoadTypeInitialHis toryLoad); 1739 FrameLoadType loadType = FrameLoadTypeStandard;
1739 else 1740 if (childItem) {
1740 child->loader().load(request); 1741 newRequest = FrameLoadRequest(request.originDocument(),
1742 FrameLoader::resourceRequestFromHistoryItem(childItem.get(), UseProt ocolCachePolicy));
1743 loadType = FrameLoadTypeInitialHistoryLoad;
1744 }
1745 child->loader().load(newRequest, loadType, childItem.get());
1741 1746
1742 // Note a synchronous navigation (about:blank) would have already processed 1747 // Note a synchronous navigation (about:blank) would have already processed
1743 // onload, so it is possible for the child frame to have already been 1748 // onload, so it is possible for the child frame to have already been
1744 // detached by script in the page. 1749 // detached by script in the page.
1745 if (!child->tree().parent()) 1750 if (!child->tree().parent())
1746 return nullptr; 1751 return nullptr;
1747 return child; 1752 return child;
1748 } 1753 }
1749 1754
1750 void WebLocalFrameImpl::didChangeContentsSize(const IntSize& size) 1755 void WebLocalFrameImpl::didChangeContentsSize(const IntSize& size)
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
2008 } 2013 }
2009 2014
2010 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina tionURL) 2015 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina tionURL)
2011 { 2016 {
2012 ASSERT(frame()); 2017 ASSERT(frame());
2013 const Node* node = linkNode.constUnwrap<Node>(); 2018 const Node* node = linkNode.constUnwrap<Node>();
2014 if (isHTMLAnchorElement(node)) 2019 if (isHTMLAnchorElement(node))
2015 toHTMLAnchorElement(node)->sendPings(destinationURL); 2020 toHTMLAnchorElement(node)->sendPings(destinationURL);
2016 } 2021 }
2017 2022
2023 WebURLRequest WebLocalFrameImpl::requestFromHistoryItem(const WebHistoryItem& it em,
2024 WebURLRequest::CachePolicy cachePolicy) const
2025 {
2026 RefPtrWillBeRawPtr<HistoryItem> historyItem = PassRefPtrWillBeRawPtr<History Item>(item);
2027 ResourceRequest request = FrameLoader::resourceRequestFromHistoryItem(
2028 historyItem.get(), static_cast<ResourceRequestCachePolicy>(cachePolicy)) ;
2029 return WrappedResourceRequest(request);
2030 }
2031
2032 WebURLRequest WebLocalFrameImpl::requestForReload(WebFrameLoadType loadType,
2033 const WebURL& overrideUrl) const
2034 {
2035 ASSERT(frame());
2036 ResourceRequest request = frame()->loader().resourceRequestForReload(
2037 static_cast<FrameLoadType>(loadType), overrideUrl);
2038 return WrappedResourceRequest(request);
2039 }
2040
2041 void WebLocalFrameImpl::load(const WebURLRequest& request, WebFrameLoadType webF rameLoadType,
2042 const WebHistoryItem& item, WebHistoryLoadType webHistoryLoadType)
2043 {
2044 ASSERT(frame());
2045 ASSERT(!request.isNull());
2046 ASSERT(webFrameLoadType != WebFrameLoadType::RedirectWithLockedBackForwardLi st);
2047 const ResourceRequest& resourceRequest = request.toResourceRequest();
2048
2049 if (resourceRequest.url().protocolIs("javascript")
2050 && webFrameLoadType == WebFrameLoadType::Standard) {
2051 loadJavaScriptURL(resourceRequest.url());
2052 return;
2053 }
2054
2055 FrameLoadRequest frameRequest = FrameLoadRequest(nullptr, resourceRequest);
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
2018 bool WebLocalFrameImpl::isLoading() const 2062 bool WebLocalFrameImpl::isLoading() const
2019 { 2063 {
2020 if (!frame() || !frame()->document()) 2064 if (!frame() || !frame()->document())
2021 return false; 2065 return false;
2022 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();
2023 } 2067 }
2024 2068
2025 bool WebLocalFrameImpl::isResourceLoadInProgress() const 2069 bool WebLocalFrameImpl::isResourceLoadInProgress() const
2026 { 2070 {
2027 if (!frame() || !frame()->document()) 2071 if (!frame() || !frame()->document())
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2112 { 2156 {
2113 m_frameWidget = frameWidget; 2157 m_frameWidget = frameWidget;
2114 } 2158 }
2115 2159
2116 WebFrameWidgetImpl* WebLocalFrameImpl::frameWidget() const 2160 WebFrameWidgetImpl* WebLocalFrameImpl::frameWidget() const
2117 { 2161 {
2118 return m_frameWidget; 2162 return m_frameWidget;
2119 } 2163 }
2120 2164
2121 } // namespace blink 2165 } // namespace blink
OLDNEW
« 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