| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 case Resource::Script: | 83 case Resource::Script: |
| 84 return new ScriptResource(request, charset); | 84 return new ScriptResource(request, charset); |
| 85 case Resource::SVGDocument: | 85 case Resource::SVGDocument: |
| 86 return new DocumentResource(request, Resource::SVGDocument); | 86 return new DocumentResource(request, Resource::SVGDocument); |
| 87 case Resource::Font: | 87 case Resource::Font: |
| 88 return new FontResource(request); | 88 return new FontResource(request); |
| 89 case Resource::MainResource: | 89 case Resource::MainResource: |
| 90 case Resource::Raw: | 90 case Resource::Raw: |
| 91 case Resource::TextTrack: | 91 case Resource::TextTrack: |
| 92 case Resource::Media: | 92 case Resource::Media: |
| 93 case Resource::ImportResource: |
| 93 return new RawResource(request, type); | 94 return new RawResource(request, type); |
| 94 case Resource::XSLStyleSheet: | 95 case Resource::XSLStyleSheet: |
| 95 return new XSLStyleSheetResource(request); | 96 return new XSLStyleSheetResource(request); |
| 96 case Resource::LinkPrefetch: | 97 case Resource::LinkPrefetch: |
| 97 return new Resource(request, Resource::LinkPrefetch); | |
| 98 case Resource::LinkSubresource: | 98 case Resource::LinkSubresource: |
| 99 return new Resource(request, Resource::LinkSubresource); | 99 case Resource::Manifest: |
| 100 return new Resource(request, type); |
| 100 case Resource::Shader: | 101 case Resource::Shader: |
| 101 return new ShaderResource(request); | 102 return new ShaderResource(request); |
| 102 case Resource::ImportResource: | |
| 103 return new RawResource(request, type); | |
| 104 } | 103 } |
| 105 | 104 |
| 106 ASSERT_NOT_REACHED(); | 105 ASSERT_NOT_REACHED(); |
| 107 return 0; | 106 return 0; |
| 108 } | 107 } |
| 109 | 108 |
| 110 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) | 109 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) |
| 111 { | 110 { |
| 112 if (request.priority() != ResourceLoadPriorityUnresolved) | 111 if (request.priority() != ResourceLoadPriorityUnresolved) |
| 113 return request.priority(); | 112 return request.priority(); |
| 114 | 113 |
| 115 switch (type) { | 114 switch (type) { |
| 116 case Resource::MainResource: | 115 case Resource::MainResource: |
| 117 return ResourceLoadPriorityVeryHigh; | 116 return ResourceLoadPriorityVeryHigh; |
| 118 case Resource::CSSStyleSheet: | 117 case Resource::CSSStyleSheet: |
| 119 return ResourceLoadPriorityHigh; | 118 return ResourceLoadPriorityHigh; |
| 120 case Resource::Raw: | 119 case Resource::Raw: |
| 121 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 120 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| 122 case Resource::Script: | 121 case Resource::Script: |
| 123 case Resource::Font: | 122 case Resource::Font: |
| 124 case Resource::ImportResource: | 123 case Resource::ImportResource: |
| 124 case Resource::Manifest: |
| 125 return ResourceLoadPriorityMedium; | 125 return ResourceLoadPriorityMedium; |
| 126 case Resource::Image: | 126 case Resource::Image: |
| 127 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 127 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves |
| 128 // speed-index by ~5% on average, ~14% at the 99th percentile. | 128 // speed-index by ~5% on average, ~14% at the 99th percentile. |
| 129 return ResourceLoadPriorityVeryLow; | 129 return ResourceLoadPriorityVeryLow; |
| 130 case Resource::Media: | 130 case Resource::Media: |
| 131 return ResourceLoadPriorityLow; | 131 return ResourceLoadPriorityLow; |
| 132 case Resource::XSLStyleSheet: | 132 case Resource::XSLStyleSheet: |
| 133 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 133 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 134 return ResourceLoadPriorityHigh; | 134 return ResourceLoadPriorityHigh; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 return ResourceRequest::TargetIsStyleSheet; | 203 return ResourceRequest::TargetIsStyleSheet; |
| 204 case Resource::Script: | 204 case Resource::Script: |
| 205 return ResourceRequest::TargetIsScript; | 205 return ResourceRequest::TargetIsScript; |
| 206 case Resource::Font: | 206 case Resource::Font: |
| 207 return ResourceRequest::TargetIsFont; | 207 return ResourceRequest::TargetIsFont; |
| 208 case Resource::Image: | 208 case Resource::Image: |
| 209 return ResourceRequest::TargetIsImage; | 209 return ResourceRequest::TargetIsImage; |
| 210 case Resource::Shader: | 210 case Resource::Shader: |
| 211 case Resource::Raw: | 211 case Resource::Raw: |
| 212 case Resource::ImportResource: | 212 case Resource::ImportResource: |
| 213 case Resource::Manifest: |
| 213 return ResourceRequest::TargetIsSubresource; | 214 return ResourceRequest::TargetIsSubresource; |
| 214 case Resource::LinkPrefetch: | 215 case Resource::LinkPrefetch: |
| 215 return ResourceRequest::TargetIsPrefetch; | 216 return ResourceRequest::TargetIsPrefetch; |
| 216 case Resource::LinkSubresource: | 217 case Resource::LinkSubresource: |
| 217 return ResourceRequest::TargetIsSubresource; | 218 return ResourceRequest::TargetIsSubresource; |
| 218 case Resource::TextTrack: | 219 case Resource::TextTrack: |
| 219 return ResourceRequest::TargetIsTextTrack; | 220 return ResourceRequest::TargetIsTextTrack; |
| 220 case Resource::SVGDocument: | 221 case Resource::SVGDocument: |
| 221 return ResourceRequest::TargetIsImage; | 222 return ResourceRequest::TargetIsImage; |
| 222 case Resource::Media: | 223 case Resource::Media: |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) | 394 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) |
| 394 { | 395 { |
| 395 return toRawResource(requestResource(Resource::Media, request)); | 396 return toRawResource(requestResource(Resource::Media, request)); |
| 396 } | 397 } |
| 397 | 398 |
| 398 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) | 399 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 399 { | 400 { |
| 400 return toRawResource(requestResource(Resource::TextTrack, request)); | 401 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 401 } | 402 } |
| 402 | 403 |
| 404 ResourcePtr<Resource> ResourceFetcher::fetchManifest(FetchRequest& request) |
| 405 { |
| 406 return requestResource(Resource::Manifest, request); |
| 407 } |
| 408 |
| 403 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 409 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
| 404 { | 410 { |
| 405 const KURL& url = request.url(); | 411 const KURL& url = request.url(); |
| 406 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 412 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
| 407 memoryCache()->remove(oldResource); | 413 memoryCache()->remove(oldResource); |
| 408 | 414 |
| 409 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 415 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
| 410 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 416 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); |
| 411 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 417 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
| 412 resource->setOptions(request.options()); | 418 resource->setOptions(request.options()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 439 case Resource::Image: | 445 case Resource::Image: |
| 440 case Resource::Font: | 446 case Resource::Font: |
| 441 case Resource::Media: | 447 case Resource::Media: |
| 442 // These resources can corrupt only the frame's pixels. | 448 // These resources can corrupt only the frame's pixels. |
| 443 treatment = TreatAsPassiveContent; | 449 treatment = TreatAsPassiveContent; |
| 444 break; | 450 break; |
| 445 | 451 |
| 446 case Resource::MainResource: | 452 case Resource::MainResource: |
| 447 case Resource::LinkPrefetch: | 453 case Resource::LinkPrefetch: |
| 448 case Resource::LinkSubresource: | 454 case Resource::LinkSubresource: |
| 455 case Resource::Manifest: |
| 449 // These cannot affect the current document. | 456 // These cannot affect the current document. |
| 450 treatment = TreatAsAlwaysAllowedContent; | 457 treatment = TreatAsAlwaysAllowedContent; |
| 451 break; | 458 break; |
| 452 } | 459 } |
| 453 } | 460 } |
| 454 if (treatment == TreatAsActiveContent) { | 461 if (treatment == TreatAsActiveContent) { |
| 455 if (LocalFrame* f = frame()) { | 462 if (LocalFrame* f = frame()) { |
| 456 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) | 463 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) |
| 457 return false; | 464 return false; |
| 458 LocalFrame* top = f->tree().top(); | 465 LocalFrame* top = f->tree().top(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 case Resource::CSSStyleSheet: | 503 case Resource::CSSStyleSheet: |
| 497 case Resource::Script: | 504 case Resource::Script: |
| 498 case Resource::Font: | 505 case Resource::Font: |
| 499 case Resource::Raw: | 506 case Resource::Raw: |
| 500 case Resource::LinkPrefetch: | 507 case Resource::LinkPrefetch: |
| 501 case Resource::LinkSubresource: | 508 case Resource::LinkSubresource: |
| 502 case Resource::TextTrack: | 509 case Resource::TextTrack: |
| 503 case Resource::Shader: | 510 case Resource::Shader: |
| 504 case Resource::ImportResource: | 511 case Resource::ImportResource: |
| 505 case Resource::Media: | 512 case Resource::Media: |
| 513 case Resource::Manifest: |
| 506 // By default these types of resources can be loaded from any origin. | 514 // By default these types of resources can be loaded from any origin. |
| 507 // FIXME: Are we sure about Resource::Font? | 515 // FIXME: Are we sure about Resource::Font? |
| 508 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 516 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
| 509 printAccessDeniedMessage(url); | 517 printAccessDeniedMessage(url); |
| 510 return false; | 518 return false; |
| 511 } | 519 } |
| 512 break; | 520 break; |
| 513 case Resource::XSLStyleSheet: | 521 case Resource::XSLStyleSheet: |
| 514 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 522 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 515 case Resource::SVGDocument: | 523 case Resource::SVGDocument: |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 break; | 564 break; |
| 557 case Resource::Font: { | 565 case Resource::Font: { |
| 558 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url, cspReporting)) | 566 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url, cspReporting)) |
| 559 return false; | 567 return false; |
| 560 break; | 568 break; |
| 561 } | 569 } |
| 562 case Resource::MainResource: | 570 case Resource::MainResource: |
| 563 case Resource::Raw: | 571 case Resource::Raw: |
| 564 case Resource::LinkPrefetch: | 572 case Resource::LinkPrefetch: |
| 565 case Resource::LinkSubresource: | 573 case Resource::LinkSubresource: |
| 574 case Resource::Manifest: |
| 566 break; | 575 break; |
| 567 case Resource::Media: | 576 case Resource::Media: |
| 568 case Resource::TextTrack: | 577 case Resource::TextTrack: |
| 569 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url, cspReporting)) | 578 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url, cspReporting)) |
| 570 return false; | 579 return false; |
| 571 break; | 580 break; |
| 572 } | 581 } |
| 573 | 582 |
| 574 // Last of all, check for insecure content. We do this last so that when | 583 // Last of all, check for insecure content. We do this last so that when |
| 575 // folks block insecure content with a CSP policy, they don't get a warning. | 584 // folks block insecure content with a CSP policy, they don't get a warning. |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1470 } | 1479 } |
| 1471 } | 1480 } |
| 1472 | 1481 |
| 1473 void ResourceFetcher::trace(Visitor* visitor) | 1482 void ResourceFetcher::trace(Visitor* visitor) |
| 1474 { | 1483 { |
| 1475 visitor->trace(m_document); | 1484 visitor->trace(m_document); |
| 1476 ResourceLoaderHost::trace(visitor); | 1485 ResourceLoaderHost::trace(visitor); |
| 1477 } | 1486 } |
| 1478 | 1487 |
| 1479 } | 1488 } |
| OLD | NEW |