| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 case Resource::Script: | 89 case Resource::Script: |
| 90 return new ScriptResource(request, charset); | 90 return new ScriptResource(request, charset); |
| 91 case Resource::SVGDocument: | 91 case Resource::SVGDocument: |
| 92 return new DocumentResource(request, Resource::SVGDocument); | 92 return new DocumentResource(request, Resource::SVGDocument); |
| 93 case Resource::Font: | 93 case Resource::Font: |
| 94 return new FontResource(request); | 94 return new FontResource(request); |
| 95 case Resource::MainResource: | 95 case Resource::MainResource: |
| 96 case Resource::Raw: | 96 case Resource::Raw: |
| 97 case Resource::TextTrack: | 97 case Resource::TextTrack: |
| 98 case Resource::Media: | 98 case Resource::Media: |
| 99 case Resource::ImportResource: |
| 99 return new RawResource(request, type); | 100 return new RawResource(request, type); |
| 100 case Resource::XSLStyleSheet: | 101 case Resource::XSLStyleSheet: |
| 101 return new XSLStyleSheetResource(request, charset); | 102 return new XSLStyleSheetResource(request, charset); |
| 102 case Resource::LinkPrefetch: | 103 case Resource::LinkPrefetch: |
| 103 return new Resource(request, Resource::LinkPrefetch); | |
| 104 case Resource::LinkSubresource: | 104 case Resource::LinkSubresource: |
| 105 return new Resource(request, Resource::LinkSubresource); | 105 case Resource::Manifest: |
| 106 case Resource::ImportResource: | 106 return new Resource(request, type); |
| 107 return new RawResource(request, type); | |
| 108 } | 107 } |
| 109 | 108 |
| 110 ASSERT_NOT_REACHED(); | 109 ASSERT_NOT_REACHED(); |
| 111 return 0; | 110 return 0; |
| 112 } | 111 } |
| 113 | 112 |
| 114 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) | 113 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) |
| 115 { | 114 { |
| 116 if (request.priority() != ResourceLoadPriorityUnresolved) | 115 if (request.priority() != ResourceLoadPriorityUnresolved) |
| 117 return request.priority(); | 116 return request.priority(); |
| 118 | 117 |
| 119 switch (type) { | 118 switch (type) { |
| 120 case Resource::MainResource: | 119 case Resource::MainResource: |
| 121 return ResourceLoadPriorityVeryHigh; | 120 return ResourceLoadPriorityVeryHigh; |
| 122 case Resource::CSSStyleSheet: | 121 case Resource::CSSStyleSheet: |
| 123 return ResourceLoadPriorityHigh; | 122 return ResourceLoadPriorityHigh; |
| 124 case Resource::Raw: | 123 case Resource::Raw: |
| 125 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 124 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| 126 case Resource::Script: | 125 case Resource::Script: |
| 127 case Resource::Font: | 126 case Resource::Font: |
| 128 case Resource::ImportResource: | 127 case Resource::ImportResource: |
| 128 case Resource::Manifest: |
| 129 return ResourceLoadPriorityMedium; | 129 return ResourceLoadPriorityMedium; |
| 130 case Resource::Image: | 130 case Resource::Image: |
| 131 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 131 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves |
| 132 // speed-index by ~5% on average, ~14% at the 99th percentile. | 132 // speed-index by ~5% on average, ~14% at the 99th percentile. |
| 133 return ResourceLoadPriorityVeryLow; | 133 return ResourceLoadPriorityVeryLow; |
| 134 case Resource::Media: | 134 case Resource::Media: |
| 135 return ResourceLoadPriorityLow; | 135 return ResourceLoadPriorityLow; |
| 136 case Resource::XSLStyleSheet: | 136 case Resource::XSLStyleSheet: |
| 137 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 137 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 138 return ResourceLoadPriorityHigh; | 138 return ResourceLoadPriorityHigh; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 case Resource::Image: | 211 case Resource::Image: |
| 212 return WebURLRequest::RequestContextImage; | 212 return WebURLRequest::RequestContextImage; |
| 213 case Resource::Raw: | 213 case Resource::Raw: |
| 214 return WebURLRequest::RequestContextSubresource; | 214 return WebURLRequest::RequestContextSubresource; |
| 215 case Resource::ImportResource: | 215 case Resource::ImportResource: |
| 216 return WebURLRequest::RequestContextImport; | 216 return WebURLRequest::RequestContextImport; |
| 217 case Resource::LinkPrefetch: | 217 case Resource::LinkPrefetch: |
| 218 return WebURLRequest::RequestContextPrefetch; | 218 return WebURLRequest::RequestContextPrefetch; |
| 219 case Resource::LinkSubresource: | 219 case Resource::LinkSubresource: |
| 220 return WebURLRequest::RequestContextSubresource; | 220 return WebURLRequest::RequestContextSubresource; |
| 221 case Resource::Manifest: |
| 222 return WebURLRequest::RequestContextManifest; |
| 221 case Resource::TextTrack: | 223 case Resource::TextTrack: |
| 222 return WebURLRequest::RequestContextTrack; | 224 return WebURLRequest::RequestContextTrack; |
| 223 case Resource::SVGDocument: | 225 case Resource::SVGDocument: |
| 224 return WebURLRequest::RequestContextImage; | 226 return WebURLRequest::RequestContextImage; |
| 225 case Resource::Media: // TODO: Split this. | 227 case Resource::Media: // TODO: Split this. |
| 226 return WebURLRequest::RequestContextVideo; | 228 return WebURLRequest::RequestContextVideo; |
| 227 } | 229 } |
| 228 ASSERT_NOT_REACHED(); | 230 ASSERT_NOT_REACHED(); |
| 229 return WebURLRequest::RequestContextSubresource; | 231 return WebURLRequest::RequestContextSubresource; |
| 230 } | 232 } |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 return toRawResource(requestResource(Resource::Media, request)); | 408 return toRawResource(requestResource(Resource::Media, request)); |
| 407 } | 409 } |
| 408 | 410 |
| 409 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) | 411 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 410 { | 412 { |
| 411 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); | 413 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
| 412 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textTrack); | 414 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textTrack); |
| 413 return toRawResource(requestResource(Resource::TextTrack, request)); | 415 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 414 } | 416 } |
| 415 | 417 |
| 418 ResourcePtr<Resource> ResourceFetcher::fetchManifest(FetchRequest& request) |
| 419 { |
| 420 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
| 421 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textManifest); |
| 422 return requestResource(Resource::Manifest, request); |
| 423 } |
| 424 |
| 416 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 425 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
| 417 { | 426 { |
| 418 const KURL& url = request.url(); | 427 const KURL& url = request.url(); |
| 419 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 428 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
| 420 memoryCache()->remove(oldResource); | 429 memoryCache()->remove(oldResource); |
| 421 | 430 |
| 422 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 431 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
| 423 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 432 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); |
| 424 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 433 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
| 425 resource->setOptions(request.options()); | 434 resource->setOptions(request.options()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 440 case Resource::Script: | 449 case Resource::Script: |
| 441 case Resource::SVGDocument: | 450 case Resource::SVGDocument: |
| 442 case Resource::CSSStyleSheet: | 451 case Resource::CSSStyleSheet: |
| 443 case Resource::ImportResource: | 452 case Resource::ImportResource: |
| 444 // These resource can inject script into the current document (Scrip
t, | 453 // These resource can inject script into the current document (Scrip
t, |
| 445 // XSL) or exfiltrate the content of the current document (CSS). | 454 // XSL) or exfiltrate the content of the current document (CSS). |
| 446 treatment = TreatAsActiveContent; | 455 treatment = TreatAsActiveContent; |
| 447 break; | 456 break; |
| 448 | 457 |
| 449 case Resource::Font: | 458 case Resource::Font: |
| 459 case Resource::Manifest: |
| 450 case Resource::TextTrack: | 460 case Resource::TextTrack: |
| 451 // These resources are passive, but mixed usage is low enough that w
e | 461 // These resources are passive, but mixed usage is low enough that w
e |
| 452 // can block them in a mixed context. | 462 // can block them in a mixed context. |
| 453 treatment = TreatAsActiveContent; | 463 treatment = TreatAsActiveContent; |
| 454 break; | 464 break; |
| 455 | 465 |
| 456 case Resource::Raw: | 466 case Resource::Raw: |
| 457 case Resource::Image: | 467 case Resource::Image: |
| 458 case Resource::Media: | 468 case Resource::Media: |
| 459 // These resources can corrupt only the frame's pixels. | 469 // These resources can corrupt only the frame's pixels. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 case Resource::Image: | 533 case Resource::Image: |
| 524 case Resource::CSSStyleSheet: | 534 case Resource::CSSStyleSheet: |
| 525 case Resource::Script: | 535 case Resource::Script: |
| 526 case Resource::Font: | 536 case Resource::Font: |
| 527 case Resource::Raw: | 537 case Resource::Raw: |
| 528 case Resource::LinkPrefetch: | 538 case Resource::LinkPrefetch: |
| 529 case Resource::LinkSubresource: | 539 case Resource::LinkSubresource: |
| 530 case Resource::TextTrack: | 540 case Resource::TextTrack: |
| 531 case Resource::ImportResource: | 541 case Resource::ImportResource: |
| 532 case Resource::Media: | 542 case Resource::Media: |
| 543 case Resource::Manifest: |
| 533 // By default these types of resources can be loaded from any origin. | 544 // By default these types of resources can be loaded from any origin. |
| 534 // FIXME: Are we sure about Resource::Font? | 545 // FIXME: Are we sure about Resource::Font? |
| 535 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 546 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
| 536 printAccessDeniedMessage(url); | 547 printAccessDeniedMessage(url); |
| 537 return false; | 548 return false; |
| 538 } | 549 } |
| 539 break; | 550 break; |
| 540 case Resource::XSLStyleSheet: | 551 case Resource::XSLStyleSheet: |
| 541 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 552 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 542 case Resource::SVGDocument: | 553 case Resource::SVGDocument: |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 break; | 603 break; |
| 593 case Resource::Font: { | 604 case Resource::Font: { |
| 594 if (!shouldBypassMainWorldCSP && !csp->allowFontFromSource(url, cspRepor
ting)) | 605 if (!shouldBypassMainWorldCSP && !csp->allowFontFromSource(url, cspRepor
ting)) |
| 595 return false; | 606 return false; |
| 596 break; | 607 break; |
| 597 } | 608 } |
| 598 case Resource::MainResource: | 609 case Resource::MainResource: |
| 599 case Resource::Raw: | 610 case Resource::Raw: |
| 600 case Resource::LinkPrefetch: | 611 case Resource::LinkPrefetch: |
| 601 case Resource::LinkSubresource: | 612 case Resource::LinkSubresource: |
| 613 case Resource::Manifest: |
| 602 break; | 614 break; |
| 603 case Resource::Media: | 615 case Resource::Media: |
| 604 case Resource::TextTrack: | 616 case Resource::TextTrack: |
| 605 if (!shouldBypassMainWorldCSP && !csp->allowMediaFromSource(url, cspRepo
rting)) | 617 if (!shouldBypassMainWorldCSP && !csp->allowMediaFromSource(url, cspRepo
rting)) |
| 606 return false; | 618 return false; |
| 607 | 619 |
| 608 if (frame()) { | 620 if (frame()) { |
| 609 if (!frame()->loader().client()->allowMedia(url)) | 621 if (!frame()->loader().client()->allowMedia(url)) |
| 610 return false; | 622 return false; |
| 611 } | 623 } |
| (...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1553 | 1565 |
| 1554 void ResourceFetcher::trace(Visitor* visitor) | 1566 void ResourceFetcher::trace(Visitor* visitor) |
| 1555 { | 1567 { |
| 1556 visitor->trace(m_document); | 1568 visitor->trace(m_document); |
| 1557 visitor->trace(m_loaders); | 1569 visitor->trace(m_loaders); |
| 1558 visitor->trace(m_multipartLoaders); | 1570 visitor->trace(m_multipartLoaders); |
| 1559 ResourceLoaderHost::trace(visitor); | 1571 ResourceLoaderHost::trace(visitor); |
| 1560 } | 1572 } |
| 1561 | 1573 |
| 1562 } | 1574 } |
| OLD | NEW |