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

Side by Side Diff: Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp

Issue 14264012: Create errors (especially cancellation errors) internally to WebCore, rather (Closed) Base URL: svn://svn.chromium.org/blink/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 15 matching lines...) Expand all
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 #include "config.h" 32 #include "config.h"
33 #include "FrameLoaderClientImpl.h" 33 #include "FrameLoaderClientImpl.h"
34 34
35 #include "BackForwardListChromium.h" 35 #include "BackForwardListChromium.h"
36 #include "CancelledResourceError.h"
36 #include "Chrome.h" 37 #include "Chrome.h"
37 #include "Document.h" 38 #include "Document.h"
38 #include "DocumentLoader.h" 39 #include "DocumentLoader.h"
39 #include "FormState.h" 40 #include "FormState.h"
40 #include "FrameLoadRequest.h" 41 #include "FrameLoadRequest.h"
41 #include "FrameLoader.h" 42 #include "FrameLoader.h"
42 #include "FrameNetworkingContextImpl.h" 43 #include "FrameNetworkingContextImpl.h"
43 #include "FrameView.h" 44 #include "FrameView.h"
44 #include "HTMLAppletElement.h" 45 #include "HTMLAppletElement.h"
45 #include "HTMLFormElement.h" // needed by FormState.h 46 #include "HTMLFormElement.h" // needed by FormState.h
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad( 750 void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad(
750 const ResourceError& error) 751 const ResourceError& error)
751 { 752 {
752 753
753 // If a policy change occured, then we do not want to inform the plugin 754 // If a policy change occured, then we do not want to inform the plugin
754 // delegate. See http://b/907789 for details. FIXME: This means the 755 // delegate. See http://b/907789 for details. FIXME: This means the
755 // plugin won't receive NPP_URLNotify, which seems like it could result in 756 // plugin won't receive NPP_URLNotify, which seems like it could result in
756 // a memory leak in the plugin!! 757 // a memory leak in the plugin!!
757 if (error.domain() == internalErrorDomain 758 if (error.domain() == internalErrorDomain
758 && error.errorCode() == PolicyChangeError) { 759 && error.errorCode() == PolicyChangeError) {
759 m_webFrame->didFail(cancelledError(error.failingURL()), true); 760 m_webFrame->didFail(CancelledResourceError(error.failingURL()), true);
760 return; 761 return;
761 } 762 }
762 763
763 OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver(); 764 OwnPtr<WebPluginLoadObserver> observer = pluginLoadObserver();
764 m_webFrame->didFail(error, true); 765 m_webFrame->didFail(error, true);
765 if (observer) 766 if (observer)
766 observer->didFailLoading(error); 767 observer->didFailLoading(error);
767 } 768 }
768 769
769 void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error) 770 void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error)
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 WrappedResourceRequest webreq(request); 952 WrappedResourceRequest webreq(request);
952 m_webFrame->client()->loadURLExternally(m_webFrame, webreq, navi gationPolicy); 953 m_webFrame->client()->loadURLExternally(m_webFrame, webreq, navi gationPolicy);
953 } 954 }
954 policyAction = PolicyIgnore; 955 policyAction = PolicyIgnore;
955 } 956 }
956 } 957 }
957 958
958 (m_webFrame->frame()->loader()->policyChecker()->*function)(policyAction); 959 (m_webFrame->frame()->loader()->policyChecker()->*function)(policyAction);
959 } 960 }
960 961
961 void FrameLoaderClientImpl::dispatchUnableToImplementPolicy(const ResourceError& error)
962 {
963 m_webFrame->client()->unableToImplementPolicyWithError(m_webFrame, error);
964 }
965
966 void FrameLoaderClientImpl::dispatchWillRequestResource(CachedResourceRequest* r equest) 962 void FrameLoaderClientImpl::dispatchWillRequestResource(CachedResourceRequest* r equest)
967 { 963 {
968 if (m_webFrame->client()) { 964 if (m_webFrame->client()) {
969 WebCachedURLRequest urlRequest(request); 965 WebCachedURLRequest urlRequest(request);
970 m_webFrame->client()->willRequestResource(m_webFrame, urlRequest); 966 m_webFrame->client()->willRequestResource(m_webFrame, urlRequest);
971 } 967 }
972 } 968 }
973 969
974 void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(PassRefPtr<FormState> pr pFormState) 970 void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(PassRefPtr<FormState> pr pFormState)
975 { 971 {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 bool preventDefault = false; 1037 bool preventDefault = false;
1042 m_webFrame->client()->didReceiveDocumentData(m_webFrame, data, lengt h, preventDefault); 1038 m_webFrame->client()->didReceiveDocumentData(m_webFrame, data, lengt h, preventDefault);
1043 if (!preventDefault) 1039 if (!preventDefault)
1044 m_webFrame->commitDocumentData(data, length); 1040 m_webFrame->commitDocumentData(data, length);
1045 } 1041 }
1046 } 1042 }
1047 1043
1048 // If we are sending data to MediaDocument, we should stop here 1044 // If we are sending data to MediaDocument, we should stop here
1049 // and cancel the request. 1045 // and cancel the request.
1050 if (m_webFrame->frame()->document()->isMediaDocument()) 1046 if (m_webFrame->frame()->document()->isMediaDocument())
1051 loader->cancelMainResourceLoad(pluginWillHandleLoadError(loader->respons e())); 1047 loader->cancelMainResourceLoad(CancelledResourceError(loader->response() .url()));
1052 1048
1053 // The plugin widget could have been created in the m_webFrame->DidReceiveDa ta 1049 // The plugin widget could have been created in the m_webFrame->DidReceiveDa ta
1054 // function. 1050 // function.
1055 if (m_pluginWidget) { 1051 if (m_pluginWidget) {
1056 if (!m_sentInitialResponseToPlugin) { 1052 if (!m_sentInitialResponseToPlugin) {
1057 m_sentInitialResponseToPlugin = true; 1053 m_sentInitialResponseToPlugin = true;
1058 m_pluginWidget->didReceiveResponse( 1054 m_pluginWidget->didReceiveResponse(
1059 m_webFrame->frame()->loader()->activeDocumentLoader()->response( )); 1055 m_webFrame->frame()->loader()->activeDocumentLoader()->response( ));
1060 } 1056 }
1061 1057
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 if (m_webFrame->client()) 1126 if (m_webFrame->client())
1131 m_webFrame->client()->didRunInsecureContent(m_webFrame, WebSecurityOrigi n(origin), insecureURL); 1127 m_webFrame->client()->didRunInsecureContent(m_webFrame, WebSecurityOrigi n(origin), insecureURL);
1132 } 1128 }
1133 1129
1134 void FrameLoaderClientImpl::didDetectXSS(const KURL& insecureURL, bool didBlockE ntirePage) 1130 void FrameLoaderClientImpl::didDetectXSS(const KURL& insecureURL, bool didBlockE ntirePage)
1135 { 1131 {
1136 if (m_webFrame->client()) 1132 if (m_webFrame->client())
1137 m_webFrame->client()->didDetectXSS(m_webFrame, insecureURL, didBlockEnti rePage); 1133 m_webFrame->client()->didDetectXSS(m_webFrame, insecureURL, didBlockEnti rePage);
1138 } 1134 }
1139 1135
1140 ResourceError FrameLoaderClientImpl::cancelledError(const ResourceRequest& reque st)
1141 {
1142 if (!m_webFrame->client())
1143 return ResourceError();
1144
1145 return m_webFrame->client()->cancelledError(
1146 m_webFrame, WrappedResourceRequest(request));
1147 }
1148
1149 ResourceError FrameLoaderClientImpl::cannotShowURLError(const ResourceRequest& r equest)
1150 {
1151 if (!m_webFrame->client())
1152 return ResourceError();
1153
1154 return m_webFrame->client()->cannotHandleRequestError(
1155 m_webFrame, WrappedResourceRequest(request));
1156 }
1157
1158 ResourceError FrameLoaderClientImpl::interruptedForPolicyChangeError( 1136 ResourceError FrameLoaderClientImpl::interruptedForPolicyChangeError(
1159 const ResourceRequest& request) 1137 const ResourceRequest& request)
1160 { 1138 {
1161 return ResourceError(internalErrorDomain, PolicyChangeError, 1139 return ResourceError(internalErrorDomain, PolicyChangeError,
1162 request.url().string(), String()); 1140 request.url().string(), String());
1163 } 1141 }
1164 1142
1165 ResourceError FrameLoaderClientImpl::cannotShowMIMETypeError(const ResourceRespo nse&)
1166 {
1167 // FIXME
1168 return ResourceError();
1169 }
1170
1171 ResourceError FrameLoaderClientImpl::fileDoesNotExistError(const ResourceRespons e&)
1172 {
1173 // FIXME
1174 return ResourceError();
1175 }
1176
1177 ResourceError FrameLoaderClientImpl::pluginWillHandleLoadError(const ResourceRes ponse&)
1178 {
1179 // FIXME
1180 return ResourceError();
1181 }
1182
1183 bool FrameLoaderClientImpl::shouldFallBack(const ResourceError& error)
1184 {
1185 // This method is called when we fail to load the URL for an <object> tag
1186 // that has fallback content (child elements) and is being loaded as a frame .
1187 // The error parameter indicates the reason for the load failure.
1188 // We should let the fallback content load only if this wasn't a cancelled
1189 // request.
1190 // Note: The mac version also has a case for "WebKitErrorPluginWillHandleLoa d"
1191 ResourceError c = cancelledError(ResourceRequest());
1192 return error.errorCode() != c.errorCode() || error.domain() != c.domain();
1193 }
1194
1195 bool FrameLoaderClientImpl::canHandleRequest(const ResourceRequest& request) con st
1196 {
1197 return m_webFrame->client()->canHandleRequest(
1198 m_webFrame, WrappedResourceRequest(request));
1199 }
1200
1201 bool FrameLoaderClientImpl::canShowMIMEType(const String& mimeType) const 1143 bool FrameLoaderClientImpl::canShowMIMEType(const String& mimeType) const
1202 { 1144 {
1203 // This method is called to determine if the media type can be shown 1145 // This method is called to determine if the media type can be shown
1204 // "internally" (i.e. inside the browser) regardless of whether or not the 1146 // "internally" (i.e. inside the browser) regardless of whether or not the
1205 // browser or a plugin is doing the rendering. 1147 // browser or a plugin is doing the rendering.
1206 1148
1207 // mimeType strings are supposed to be ASCII, but if they are not for some 1149 // mimeType strings are supposed to be ASCII, but if they are not for some
1208 // reason, then it just means that the mime type will fail all of these "is 1150 // reason, then it just means that the mime type will fail all of these "is
1209 // supported" checks and go down the path of an unhandled mime type. 1151 // supported" checks and go down the path of an unhandled mime type.
1210 if (WebKit::Platform::current()->mimeRegistry()->supportsMIMEType(mimeType) == WebMimeRegistry::IsSupported) 1152 if (WebKit::Platform::current()->mimeRegistry()->supportsMIMEType(mimeType) == WebMimeRegistry::IsSupported)
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 m_webFrame->client()->didLoseWebGLContext(m_webFrame, arbRobustnessConte xtLostReason); 1417 m_webFrame->client()->didLoseWebGLContext(m_webFrame, arbRobustnessConte xtLostReason);
1476 } 1418 }
1477 1419
1478 void FrameLoaderClientImpl::dispatchWillInsertBody() 1420 void FrameLoaderClientImpl::dispatchWillInsertBody()
1479 { 1421 {
1480 if (m_webFrame->client()) 1422 if (m_webFrame->client())
1481 m_webFrame->client()->willInsertBody(m_webFrame); 1423 m_webFrame->client()->willInsertBody(m_webFrame);
1482 } 1424 }
1483 1425
1484 } // namespace WebKit 1426 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698