| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 #include <wtf/MemoryInstrumentationHashSet.h> | 54 #include <wtf/MemoryInstrumentationHashSet.h> |
| 55 #include <wtf/MemoryInstrumentationListHashSet.h> | 55 #include <wtf/MemoryInstrumentationListHashSet.h> |
| 56 #include <wtf/UnusedParam.h> | 56 #include <wtf/UnusedParam.h> |
| 57 #include <wtf/text/CString.h> | 57 #include <wtf/text/CString.h> |
| 58 #include <wtf/text/WTFString.h> | 58 #include <wtf/text/WTFString.h> |
| 59 | 59 |
| 60 #if ENABLE(VIDEO_TRACK) | 60 #if ENABLE(VIDEO_TRACK) |
| 61 #include "CachedTextTrack.h" | 61 #include "CachedTextTrack.h" |
| 62 #endif | 62 #endif |
| 63 | 63 |
| 64 #if ENABLE(CSS_SHADERS) | |
| 65 #include "CachedShader.h" | 64 #include "CachedShader.h" |
| 66 #endif | |
| 67 | 65 |
| 68 #if ENABLE(RESOURCE_TIMING) | 66 #if ENABLE(RESOURCE_TIMING) |
| 69 #include "Performance.h" | 67 #include "Performance.h" |
| 70 #endif | 68 #endif |
| 71 | 69 |
| 72 #define PRELOAD_DEBUG 0 | 70 #define PRELOAD_DEBUG 0 |
| 73 | 71 |
| 74 namespace WebCore { | 72 namespace WebCore { |
| 75 | 73 |
| 76 static CachedResource* createResource(CachedResource::Type type, ResourceRequest
& request, const String& charset) | 74 static CachedResource* createResource(CachedResource::Type type, ResourceRequest
& request, const String& charset) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 98 #if ENABLE(LINK_PREFETCH) | 96 #if ENABLE(LINK_PREFETCH) |
| 99 case CachedResource::LinkPrefetch: | 97 case CachedResource::LinkPrefetch: |
| 100 return new CachedResource(request, CachedResource::LinkPrefetch); | 98 return new CachedResource(request, CachedResource::LinkPrefetch); |
| 101 case CachedResource::LinkSubresource: | 99 case CachedResource::LinkSubresource: |
| 102 return new CachedResource(request, CachedResource::LinkSubresource); | 100 return new CachedResource(request, CachedResource::LinkSubresource); |
| 103 #endif | 101 #endif |
| 104 #if ENABLE(VIDEO_TRACK) | 102 #if ENABLE(VIDEO_TRACK) |
| 105 case CachedResource::TextTrackResource: | 103 case CachedResource::TextTrackResource: |
| 106 return new CachedTextTrack(request); | 104 return new CachedTextTrack(request); |
| 107 #endif | 105 #endif |
| 108 #if ENABLE(CSS_SHADERS) | |
| 109 case CachedResource::ShaderResource: | 106 case CachedResource::ShaderResource: |
| 110 return new CachedShader(request); | 107 return new CachedShader(request); |
| 111 #endif | |
| 112 } | 108 } |
| 113 ASSERT_NOT_REACHED(); | 109 ASSERT_NOT_REACHED(); |
| 114 return 0; | 110 return 0; |
| 115 } | 111 } |
| 116 | 112 |
| 117 CachedResourceLoader::CachedResourceLoader(DocumentLoader* documentLoader) | 113 CachedResourceLoader::CachedResourceLoader(DocumentLoader* documentLoader) |
| 118 : m_document(0) | 114 : m_document(0) |
| 119 , m_documentLoader(documentLoader) | 115 , m_documentLoader(documentLoader) |
| 120 , m_requestCount(0) | 116 , m_requestCount(0) |
| 121 , m_garbageCollectDocumentResourcesTimer(this, &CachedResourceLoader::garbag
eCollectDocumentResourcesTimerFired) | 117 , m_garbageCollectDocumentResourcesTimer(this, &CachedResourceLoader::garbag
eCollectDocumentResourcesTimerFired) |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 return static_cast<CachedFont*>(requestResource(CachedResource::FontResource
, request).get()); | 171 return static_cast<CachedFont*>(requestResource(CachedResource::FontResource
, request).get()); |
| 176 } | 172 } |
| 177 | 173 |
| 178 #if ENABLE(VIDEO_TRACK) | 174 #if ENABLE(VIDEO_TRACK) |
| 179 CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(Cac
hedResourceRequest& request) | 175 CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(Cac
hedResourceRequest& request) |
| 180 { | 176 { |
| 181 return static_cast<CachedTextTrack*>(requestResource(CachedResource::TextTra
ckResource, request).get()); | 177 return static_cast<CachedTextTrack*>(requestResource(CachedResource::TextTra
ckResource, request).get()); |
| 182 } | 178 } |
| 183 #endif | 179 #endif |
| 184 | 180 |
| 185 #if ENABLE(CSS_SHADERS) | |
| 186 CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(CachedRes
ourceRequest& request) | 181 CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(CachedRes
ourceRequest& request) |
| 187 { | 182 { |
| 188 return static_cast<CachedShader*>(requestResource(CachedResource::ShaderReso
urce, request).get()); | 183 return static_cast<CachedShader*>(requestResource(CachedResource::ShaderReso
urce, request).get()); |
| 189 } | 184 } |
| 190 #endif | |
| 191 | 185 |
| 192 CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleS
heet(CachedResourceRequest& request) | 186 CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleS
heet(CachedResourceRequest& request) |
| 193 { | 187 { |
| 194 return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSS
StyleSheet, request).get()); | 188 return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSS
StyleSheet, request).get()); |
| 195 } | 189 } |
| 196 | 190 |
| 197 CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSSt
yleSheet(CachedResourceRequest& request) | 191 CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSSt
yleSheet(CachedResourceRequest& request) |
| 198 { | 192 { |
| 199 KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(request.resourceReq
uest().url()); | 193 KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(request.resourceReq
uest().url()); |
| 200 | 194 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 case CachedResource::CSSStyleSheet: | 261 case CachedResource::CSSStyleSheet: |
| 268 // These resource can inject script into the current document (Script, | 262 // These resource can inject script into the current document (Script, |
| 269 // XSL) or exfiltrate the content of the current document (CSS). | 263 // XSL) or exfiltrate the content of the current document (CSS). |
| 270 if (Frame* f = frame()) | 264 if (Frame* f = frame()) |
| 271 if (!f->loader()->mixedContentChecker()->canRunInsecureContent(m_doc
ument->securityOrigin(), url)) | 265 if (!f->loader()->mixedContentChecker()->canRunInsecureContent(m_doc
ument->securityOrigin(), url)) |
| 272 return false; | 266 return false; |
| 273 break; | 267 break; |
| 274 #if ENABLE(VIDEO_TRACK) | 268 #if ENABLE(VIDEO_TRACK) |
| 275 case CachedResource::TextTrackResource: | 269 case CachedResource::TextTrackResource: |
| 276 #endif | 270 #endif |
| 277 #if ENABLE(CSS_SHADERS) | |
| 278 case CachedResource::ShaderResource: | 271 case CachedResource::ShaderResource: |
| 279 #endif | |
| 280 case CachedResource::RawResource: | 272 case CachedResource::RawResource: |
| 281 case CachedResource::ImageResource: | 273 case CachedResource::ImageResource: |
| 282 case CachedResource::FontResource: { | 274 case CachedResource::FontResource: { |
| 283 // These resources can corrupt only the frame's pixels. | 275 // These resources can corrupt only the frame's pixels. |
| 284 if (Frame* f = frame()) { | 276 if (Frame* f = frame()) { |
| 285 Frame* top = f->tree()->top(); | 277 Frame* top = f->tree()->top(); |
| 286 if (!top->loader()->mixedContentChecker()->canDisplayInsecureContent
(top->document()->securityOrigin(), url)) | 278 if (!top->loader()->mixedContentChecker()->canDisplayInsecureContent
(top->document()->securityOrigin(), url)) |
| 287 return false; | 279 return false; |
| 288 } | 280 } |
| 289 break; | 281 break; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 case CachedResource::Script: | 313 case CachedResource::Script: |
| 322 case CachedResource::FontResource: | 314 case CachedResource::FontResource: |
| 323 case CachedResource::RawResource: | 315 case CachedResource::RawResource: |
| 324 #if ENABLE(LINK_PREFETCH) | 316 #if ENABLE(LINK_PREFETCH) |
| 325 case CachedResource::LinkPrefetch: | 317 case CachedResource::LinkPrefetch: |
| 326 case CachedResource::LinkSubresource: | 318 case CachedResource::LinkSubresource: |
| 327 #endif | 319 #endif |
| 328 #if ENABLE(VIDEO_TRACK) | 320 #if ENABLE(VIDEO_TRACK) |
| 329 case CachedResource::TextTrackResource: | 321 case CachedResource::TextTrackResource: |
| 330 #endif | 322 #endif |
| 331 #if ENABLE(CSS_SHADERS) | |
| 332 case CachedResource::ShaderResource: | 323 case CachedResource::ShaderResource: |
| 333 #endif | |
| 334 // These types of resources can be loaded from any origin. | 324 // These types of resources can be loaded from any origin. |
| 335 // FIXME: Are we sure about CachedResource::FontResource? | 325 // FIXME: Are we sure about CachedResource::FontResource? |
| 336 break; | 326 break; |
| 337 #if ENABLE(SVG) | 327 #if ENABLE(SVG) |
| 338 case CachedResource::SVGDocumentResource: | 328 case CachedResource::SVGDocumentResource: |
| 339 #endif | 329 #endif |
| 340 #if ENABLE(XSLT) | 330 #if ENABLE(XSLT) |
| 341 case CachedResource::XSLStyleSheet: | 331 case CachedResource::XSLStyleSheet: |
| 342 if (!m_document->securityOrigin()->canRequest(url)) { | 332 if (!m_document->securityOrigin()->canRequest(url)) { |
| 343 printAccessDeniedMessage(url); | 333 printAccessDeniedMessage(url); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 359 return false; | 349 return false; |
| 360 | 350 |
| 361 if (frame()) { | 351 if (frame()) { |
| 362 Settings* settings = frame()->settings(); | 352 Settings* settings = frame()->settings(); |
| 363 if (!frame()->loader()->client()->allowScriptFromSource(!settings ||
settings->isScriptEnabled(), url)) { | 353 if (!frame()->loader()->client()->allowScriptFromSource(!settings ||
settings->isScriptEnabled(), url)) { |
| 364 frame()->loader()->client()->didNotAllowScript(); | 354 frame()->loader()->client()->didNotAllowScript(); |
| 365 return false; | 355 return false; |
| 366 } | 356 } |
| 367 } | 357 } |
| 368 break; | 358 break; |
| 369 #if ENABLE(CSS_SHADERS) | |
| 370 case CachedResource::ShaderResource: | 359 case CachedResource::ShaderResource: |
| 371 // Since shaders are referenced from CSS Styles use the same rules here. | 360 // Since shaders are referenced from CSS Styles use the same rules here. |
| 372 #endif | |
| 373 case CachedResource::CSSStyleSheet: | 361 case CachedResource::CSSStyleSheet: |
| 374 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowStyleFromSource(url)) | 362 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowStyleFromSource(url)) |
| 375 return false; | 363 return false; |
| 376 break; | 364 break; |
| 377 #if ENABLE(SVG) | 365 #if ENABLE(SVG) |
| 378 case CachedResource::SVGDocumentResource: | 366 case CachedResource::SVGDocumentResource: |
| 379 #endif | 367 #endif |
| 380 case CachedResource::ImageResource: | 368 case CachedResource::ImageResource: |
| 381 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowImageFromSource(url)) | 369 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowImageFromSource(url)) |
| 382 return false; | 370 return false; |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 | 983 |
| 996 } | 984 } |
| 997 | 985 |
| 998 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) | 986 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions(
) |
| 999 { | 987 { |
| 1000 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData
, AllowStoredCredentials, AskClientForCrossOriginCredentials, DoSecurityCheck); | 988 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData
, AllowStoredCredentials, AskClientForCrossOriginCredentials, DoSecurityCheck); |
| 1001 return options; | 989 return options; |
| 1002 } | 990 } |
| 1003 | 991 |
| 1004 } | 992 } |
| OLD | NEW |