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

Side by Side Diff: Source/core/loader/cache/CachedResourceLoader.cpp

Issue 15856002: First step of HTMLImports (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 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) 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
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
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
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
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
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
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 }
OLDNEW
« Source/core/html/LinkResource.h ('K') | « Source/core/loader/cache/CachedResourceLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698