OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. |
6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
7 | 7 |
8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 | 69 |
70 static CachedResource* createResource(CachedResource::Type type, ResourceRequest
& request, const String& charset) | 70 static CachedResource* createResource(CachedResource::Type type, ResourceRequest
& request, const String& charset) |
71 { | 71 { |
72 switch (type) { | 72 switch (type) { |
73 case CachedResource::ImageResource: | 73 case CachedResource::ImageResource: |
74 return new CachedImage(request); | 74 return new CachedImage(request); |
75 case CachedResource::CSSStyleSheet: | 75 case CachedResource::CSSStyleSheet: |
76 return new CachedCSSStyleSheet(request, charset); | 76 return new CachedCSSStyleSheet(request, charset); |
77 case CachedResource::Script: | 77 case CachedResource::Script: |
78 return new CachedScript(request, charset); | 78 return new CachedScript(request, charset); |
| 79 case CachedResource::HTMLDocumentResource: |
| 80 return new CachedDocument(request, CachedResource::HTMLDocumentResource)
; |
79 case CachedResource::SVGDocumentResource: | 81 case CachedResource::SVGDocumentResource: |
80 return new CachedDocument(request, CachedResource::SVGDocumentResource); | 82 return new CachedDocument(request, CachedResource::SVGDocumentResource); |
81 case CachedResource::FontResource: | 83 case CachedResource::FontResource: |
82 return new CachedFont(request); | 84 return new CachedFont(request); |
83 case CachedResource::RawResource: | 85 case CachedResource::RawResource: |
84 case CachedResource::MainResource: | 86 case CachedResource::MainResource: |
85 return new CachedRawResource(request, type); | 87 return new CachedRawResource(request, type); |
86 case CachedResource::XSLStyleSheet: | 88 case CachedResource::XSLStyleSheet: |
87 return new CachedXSLStyleSheet(request); | 89 return new CachedXSLStyleSheet(request); |
88 case CachedResource::LinkPrefetch: | 90 case CachedResource::LinkPrefetch: |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleS
heet(CachedResourceRequest& request) | 195 CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleS
heet(CachedResourceRequest& request) |
194 { | 196 { |
195 return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSL
StyleSheet, request).get()); | 197 return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSL
StyleSheet, request).get()); |
196 } | 198 } |
197 | 199 |
198 CachedResourceHandle<CachedDocument> CachedResourceLoader::requestSVGDocument(Ca
chedResourceRequest& request) | 200 CachedResourceHandle<CachedDocument> CachedResourceLoader::requestSVGDocument(Ca
chedResourceRequest& request) |
199 { | 201 { |
200 return static_cast<CachedDocument*>(requestResource(CachedResource::SVGDocum
entResource, request).get()); | 202 return static_cast<CachedDocument*>(requestResource(CachedResource::SVGDocum
entResource, request).get()); |
201 } | 203 } |
202 | 204 |
| 205 CachedResourceHandle<CachedDocument> CachedResourceLoader::requestHTMLDocument(C
achedResourceRequest& request) |
| 206 { |
| 207 return static_cast<CachedDocument*>(requestResource(CachedResource::HTMLDocu
mentResource, request).get()); |
| 208 } |
| 209 |
203 CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(C
achedResource::Type type, CachedResourceRequest& request) | 210 CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(C
achedResource::Type type, CachedResourceRequest& request) |
204 { | 211 { |
205 ASSERT(frame()); | 212 ASSERT(frame()); |
206 ASSERT(type == CachedResource::LinkPrefetch || type == CachedResource::LinkS
ubresource); | 213 ASSERT(type == CachedResource::LinkPrefetch || type == CachedResource::LinkS
ubresource); |
207 return requestResource(type, request); | 214 return requestResource(type, request); |
208 } | 215 } |
209 | 216 |
210 CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestRawResource
(CachedResourceRequest& request) | 217 CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestRawResource
(CachedResourceRequest& request) |
211 { | 218 { |
212 return static_cast<CachedRawResource*>(requestResource(CachedResource::RawRe
source, request).get()); | 219 return static_cast<CachedRawResource*>(requestResource(CachedResource::RawRe
source, request).get()); |
213 } | 220 } |
214 | 221 |
215 CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestMainResourc
e(CachedResourceRequest& request) | 222 CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestMainResourc
e(CachedResourceRequest& request) |
216 { | 223 { |
217 return static_cast<CachedRawResource*>(requestResource(CachedResource::MainR
esource, request).get()); | 224 return static_cast<CachedRawResource*>(requestResource(CachedResource::MainR
esource, request).get()); |
218 } | 225 } |
219 | 226 |
220 bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const
KURL& url) const | 227 bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const
KURL& url) const |
221 { | 228 { |
222 switch (type) { | 229 switch (type) { |
223 case CachedResource::Script: | 230 case CachedResource::Script: |
224 case CachedResource::XSLStyleSheet: | 231 case CachedResource::XSLStyleSheet: |
225 case CachedResource::SVGDocumentResource: | 232 case CachedResource::SVGDocumentResource: |
| 233 case CachedResource::HTMLDocumentResource: |
226 case CachedResource::CSSStyleSheet: | 234 case CachedResource::CSSStyleSheet: |
227 // These resource can inject script into the current document (Script, | 235 // These resource can inject script into the current document (Script, |
228 // XSL) or exfiltrate the content of the current document (CSS). | 236 // XSL) or exfiltrate the content of the current document (CSS). |
229 if (Frame* f = frame()) | 237 if (Frame* f = frame()) |
230 if (!f->loader()->mixedContentChecker()->canRunInsecureContent(m_doc
ument->securityOrigin(), url)) | 238 if (!f->loader()->mixedContentChecker()->canRunInsecureContent(m_doc
ument->securityOrigin(), url)) |
231 return false; | 239 return false; |
232 break; | 240 break; |
233 case CachedResource::TextTrackResource: | 241 case CachedResource::TextTrackResource: |
234 case CachedResource::ShaderResource: | 242 case CachedResource::ShaderResource: |
235 case CachedResource::RawResource: | 243 case CachedResource::RawResource: |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 case CachedResource::FontResource: | 283 case CachedResource::FontResource: |
276 case CachedResource::RawResource: | 284 case CachedResource::RawResource: |
277 case CachedResource::LinkPrefetch: | 285 case CachedResource::LinkPrefetch: |
278 case CachedResource::LinkSubresource: | 286 case CachedResource::LinkSubresource: |
279 case CachedResource::TextTrackResource: | 287 case CachedResource::TextTrackResource: |
280 case CachedResource::ShaderResource: | 288 case CachedResource::ShaderResource: |
281 // These types of resources can be loaded from any origin. | 289 // These types of resources can be loaded from any origin. |
282 // FIXME: Are we sure about CachedResource::FontResource? | 290 // FIXME: Are we sure about CachedResource::FontResource? |
283 break; | 291 break; |
284 case CachedResource::SVGDocumentResource: | 292 case CachedResource::SVGDocumentResource: |
| 293 case CachedResource::HTMLDocumentResource: |
285 case CachedResource::XSLStyleSheet: | 294 case CachedResource::XSLStyleSheet: |
286 if (!m_document->securityOrigin()->canRequest(url)) { | 295 if (!m_document->securityOrigin()->canRequest(url)) { |
287 printAccessDeniedMessage(url); | 296 printAccessDeniedMessage(url); |
288 return false; | 297 return false; |
289 } | 298 } |
290 break; | 299 break; |
291 } | 300 } |
292 | 301 |
293 switch (type) { | 302 switch (type) { |
294 case CachedResource::XSLStyleSheet: | 303 case CachedResource::XSLStyleSheet: |
(...skipping 11 matching lines...) Expand all Loading... |
306 return false; | 315 return false; |
307 } | 316 } |
308 } | 317 } |
309 break; | 318 break; |
310 case CachedResource::ShaderResource: | 319 case CachedResource::ShaderResource: |
311 // Since shaders are referenced from CSS Styles use the same rules here. | 320 // Since shaders are referenced from CSS Styles use the same rules here. |
312 case CachedResource::CSSStyleSheet: | 321 case CachedResource::CSSStyleSheet: |
313 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowStyleFromSource(url)) | 322 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowStyleFromSource(url)) |
314 return false; | 323 return false; |
315 break; | 324 break; |
| 325 case CachedResource::HTMLDocumentResource: |
| 326 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowScriptFromSource(url)) |
| 327 return false; |
| 328 break; |
316 case CachedResource::SVGDocumentResource: | 329 case CachedResource::SVGDocumentResource: |
317 case CachedResource::ImageResource: | 330 case CachedResource::ImageResource: |
318 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowImageFromSource(url)) | 331 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowImageFromSource(url)) |
319 return false; | 332 return false; |
320 break; | 333 break; |
321 case CachedResource::FontResource: { | 334 case CachedResource::FontResource: { |
322 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) | 335 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) |
323 return false; | 336 return false; |
324 break; | 337 break; |
325 } | 338 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 break; | 470 break; |
458 case CachedResource::LinkPrefetch: | 471 case CachedResource::LinkPrefetch: |
459 targetType = ResourceRequest::TargetIsPrefetch; | 472 targetType = ResourceRequest::TargetIsPrefetch; |
460 break; | 473 break; |
461 case CachedResource::LinkSubresource: | 474 case CachedResource::LinkSubresource: |
462 targetType = ResourceRequest::TargetIsSubresource; | 475 targetType = ResourceRequest::TargetIsSubresource; |
463 break; | 476 break; |
464 case CachedResource::TextTrackResource: | 477 case CachedResource::TextTrackResource: |
465 targetType = ResourceRequest::TargetIsTextTrack; | 478 targetType = ResourceRequest::TargetIsTextTrack; |
466 break; | 479 break; |
| 480 case CachedResource::HTMLDocumentResource: |
| 481 targetType = ResourceRequest::TargetIsSubresource; |
| 482 break; |
467 case CachedResource::SVGDocumentResource: | 483 case CachedResource::SVGDocumentResource: |
468 targetType = ResourceRequest::TargetIsImage; | 484 targetType = ResourceRequest::TargetIsImage; |
469 break; | 485 break; |
470 default: | 486 default: |
471 ASSERT_NOT_REACHED(); | 487 ASSERT_NOT_REACHED(); |
472 targetType = ResourceRequest::TargetIsSubresource; | 488 targetType = ResourceRequest::TargetIsSubresource; |
473 break; | 489 break; |
474 } | 490 } |
475 request.setTargetType(targetType); | 491 request.setTargetType(targetType); |
476 } | 492 } |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 info.addMember(m_garbageCollectDocumentResourcesTimer, "garbageCollectDocume
ntResourcesTimer"); | 991 info.addMember(m_garbageCollectDocumentResourcesTimer, "garbageCollectDocume
ntResourcesTimer"); |
976 } | 992 } |
977 | 993 |
978 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) | 994 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) |
979 { | 995 { |
980 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData
, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCre
dentials, DoSecurityCheck, CheckContentSecurityPolicy); | 996 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData
, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCre
dentials, DoSecurityCheck, CheckContentSecurityPolicy); |
981 return options; | 997 return options; |
982 } | 998 } |
983 | 999 |
984 } | 1000 } |
OLD | NEW |