| 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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 case Resource::Script: | 88 case Resource::Script: |
| 89 return new ScriptResource(request, charset); | 89 return new ScriptResource(request, charset); |
| 90 case Resource::SVGDocument: | 90 case Resource::SVGDocument: |
| 91 return new DocumentResource(request, Resource::SVGDocument); | 91 return new DocumentResource(request, Resource::SVGDocument); |
| 92 case Resource::Font: | 92 case Resource::Font: |
| 93 return new FontResource(request); | 93 return new FontResource(request); |
| 94 case Resource::MainResource: | 94 case Resource::MainResource: |
| 95 case Resource::Raw: | 95 case Resource::Raw: |
| 96 case Resource::TextTrack: | 96 case Resource::TextTrack: |
| 97 case Resource::Media: | 97 case Resource::Media: |
| 98 case Resource::ImportResource: |
| 98 return new RawResource(request, type); | 99 return new RawResource(request, type); |
| 99 case Resource::XSLStyleSheet: | 100 case Resource::XSLStyleSheet: |
| 100 return new XSLStyleSheetResource(request, charset); | 101 return new XSLStyleSheetResource(request, charset); |
| 101 case Resource::LinkPrefetch: | 102 case Resource::LinkPrefetch: |
| 102 return new Resource(request, Resource::LinkPrefetch); | |
| 103 case Resource::LinkSubresource: | 103 case Resource::LinkSubresource: |
| 104 return new Resource(request, Resource::LinkSubresource); | 104 case Resource::Manifest: |
| 105 case Resource::ImportResource: | 105 return new Resource(request, type); |
| 106 return new RawResource(request, type); | |
| 107 } | 106 } |
| 108 | 107 |
| 109 ASSERT_NOT_REACHED(); | 108 ASSERT_NOT_REACHED(); |
| 110 return 0; | 109 return 0; |
| 111 } | 110 } |
| 112 | 111 |
| 113 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) | 112 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) |
| 114 { | 113 { |
| 115 if (request.priority() != ResourceLoadPriorityUnresolved) | 114 if (request.priority() != ResourceLoadPriorityUnresolved) |
| 116 return request.priority(); | 115 return request.priority(); |
| 117 | 116 |
| 118 switch (type) { | 117 switch (type) { |
| 119 case Resource::MainResource: | 118 case Resource::MainResource: |
| 120 return ResourceLoadPriorityVeryHigh; | 119 return ResourceLoadPriorityVeryHigh; |
| 121 case Resource::CSSStyleSheet: | 120 case Resource::CSSStyleSheet: |
| 122 return ResourceLoadPriorityHigh; | 121 return ResourceLoadPriorityHigh; |
| 123 case Resource::Raw: | 122 case Resource::Raw: |
| 124 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 123 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| 125 case Resource::Script: | 124 case Resource::Script: |
| 126 case Resource::Font: | 125 case Resource::Font: |
| 127 case Resource::ImportResource: | 126 case Resource::ImportResource: |
| 127 case Resource::Manifest: |
| 128 return ResourceLoadPriorityMedium; | 128 return ResourceLoadPriorityMedium; |
| 129 case Resource::Image: | 129 case Resource::Image: |
| 130 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 130 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves |
| 131 // speed-index by ~5% on average, ~14% at the 99th percentile. | 131 // speed-index by ~5% on average, ~14% at the 99th percentile. |
| 132 return ResourceLoadPriorityVeryLow; | 132 return ResourceLoadPriorityVeryLow; |
| 133 case Resource::Media: | 133 case Resource::Media: |
| 134 return ResourceLoadPriorityLow; | 134 return ResourceLoadPriorityLow; |
| 135 case Resource::XSLStyleSheet: | 135 case Resource::XSLStyleSheet: |
| 136 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 136 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 137 return ResourceLoadPriorityHigh; | 137 return ResourceLoadPriorityHigh; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 case Resource::Script: | 206 case Resource::Script: |
| 207 return WebURLRequest::RequestContextScript; | 207 return WebURLRequest::RequestContextScript; |
| 208 case Resource::Font: | 208 case Resource::Font: |
| 209 return WebURLRequest::RequestContextFont; | 209 return WebURLRequest::RequestContextFont; |
| 210 case Resource::Image: | 210 case Resource::Image: |
| 211 return WebURLRequest::RequestContextImage; | 211 return WebURLRequest::RequestContextImage; |
| 212 case Resource::Raw: | 212 case Resource::Raw: |
| 213 return WebURLRequest::RequestContextSubresource; | 213 return WebURLRequest::RequestContextSubresource; |
| 214 case Resource::ImportResource: | 214 case Resource::ImportResource: |
| 215 return WebURLRequest::RequestContextScript; | 215 return WebURLRequest::RequestContextScript; |
| 216 case Resource::Manifest: |
| 217 return WebURLRequest::RequestContextSubresource; |
| 216 case Resource::LinkPrefetch: | 218 case Resource::LinkPrefetch: |
| 217 return WebURLRequest::RequestContextPrefetch; | 219 return WebURLRequest::RequestContextPrefetch; |
| 218 case Resource::LinkSubresource: | 220 case Resource::LinkSubresource: |
| 219 return WebURLRequest::RequestContextSubresource; | 221 return WebURLRequest::RequestContextSubresource; |
| 220 case Resource::TextTrack: | 222 case Resource::TextTrack: |
| 221 return WebURLRequest::RequestContextTrack; | 223 return WebURLRequest::RequestContextTrack; |
| 222 case Resource::SVGDocument: | 224 case Resource::SVGDocument: |
| 223 return WebURLRequest::RequestContextImage; | 225 return WebURLRequest::RequestContextImage; |
| 224 case Resource::Media: // TODO: Split this. | 226 case Resource::Media: // TODO: Split this. |
| 225 return WebURLRequest::RequestContextVideo; | 227 return WebURLRequest::RequestContextVideo; |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 return toRawResource(requestResource(Resource::Media, request)); | 394 return toRawResource(requestResource(Resource::Media, request)); |
| 393 } | 395 } |
| 394 | 396 |
| 395 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) | 397 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 396 { | 398 { |
| 397 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); | 399 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
| 398 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textTrack); | 400 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textTrack); |
| 399 return toRawResource(requestResource(Resource::TextTrack, request)); | 401 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 400 } | 402 } |
| 401 | 403 |
| 404 ResourcePtr<Resource> ResourceFetcher::fetchManifest(FetchRequest& request) |
| 405 { |
| 406 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone
); |
| 407 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon
textSubresource); |
| 408 return requestResource(Resource::Manifest, request); |
| 409 } |
| 410 |
| 402 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 411 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
| 403 { | 412 { |
| 404 const KURL& url = request.url(); | 413 const KURL& url = request.url(); |
| 405 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 414 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
| 406 memoryCache()->remove(oldResource); | 415 memoryCache()->remove(oldResource); |
| 407 | 416 |
| 408 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 417 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
| 409 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 418 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); |
| 410 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 419 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
| 411 resource->setOptions(request.options()); | 420 resource->setOptions(request.options()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 442 case Resource::Raw: | 451 case Resource::Raw: |
| 443 case Resource::Image: | 452 case Resource::Image: |
| 444 case Resource::Media: | 453 case Resource::Media: |
| 445 // These resources can corrupt only the frame's pixels. | 454 // These resources can corrupt only the frame's pixels. |
| 446 treatment = TreatAsPassiveContent; | 455 treatment = TreatAsPassiveContent; |
| 447 break; | 456 break; |
| 448 | 457 |
| 449 case Resource::MainResource: | 458 case Resource::MainResource: |
| 450 case Resource::LinkPrefetch: | 459 case Resource::LinkPrefetch: |
| 451 case Resource::LinkSubresource: | 460 case Resource::LinkSubresource: |
| 461 case Resource::Manifest: |
| 452 // These cannot affect the current document. | 462 // These cannot affect the current document. |
| 453 treatment = TreatAsAlwaysAllowedContent; | 463 treatment = TreatAsAlwaysAllowedContent; |
| 454 break; | 464 break; |
| 455 } | 465 } |
| 456 } | 466 } |
| 457 if (treatment == TreatAsActiveContent) { | 467 if (treatment == TreatAsActiveContent) { |
| 458 if (LocalFrame* f = frame()) { | 468 if (LocalFrame* f = frame()) { |
| 459 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) | 469 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) |
| 460 return false; | 470 return false; |
| 461 } | 471 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 case Resource::Image: | 519 case Resource::Image: |
| 510 case Resource::CSSStyleSheet: | 520 case Resource::CSSStyleSheet: |
| 511 case Resource::Script: | 521 case Resource::Script: |
| 512 case Resource::Font: | 522 case Resource::Font: |
| 513 case Resource::Raw: | 523 case Resource::Raw: |
| 514 case Resource::LinkPrefetch: | 524 case Resource::LinkPrefetch: |
| 515 case Resource::LinkSubresource: | 525 case Resource::LinkSubresource: |
| 516 case Resource::TextTrack: | 526 case Resource::TextTrack: |
| 517 case Resource::ImportResource: | 527 case Resource::ImportResource: |
| 518 case Resource::Media: | 528 case Resource::Media: |
| 529 case Resource::Manifest: |
| 519 // By default these types of resources can be loaded from any origin. | 530 // By default these types of resources can be loaded from any origin. |
| 520 // FIXME: Are we sure about Resource::Font? | 531 // FIXME: Are we sure about Resource::Font? |
| 521 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 532 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
| 522 printAccessDeniedMessage(url); | 533 printAccessDeniedMessage(url); |
| 523 return false; | 534 return false; |
| 524 } | 535 } |
| 525 break; | 536 break; |
| 526 case Resource::XSLStyleSheet: | 537 case Resource::XSLStyleSheet: |
| 527 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 538 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 528 case Resource::SVGDocument: | 539 case Resource::SVGDocument: |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 break; | 589 break; |
| 579 case Resource::Font: { | 590 case Resource::Font: { |
| 580 if (!shouldBypassMainWorldCSP && !csp->allowFontFromSource(url, cspRepor
ting)) | 591 if (!shouldBypassMainWorldCSP && !csp->allowFontFromSource(url, cspRepor
ting)) |
| 581 return false; | 592 return false; |
| 582 break; | 593 break; |
| 583 } | 594 } |
| 584 case Resource::MainResource: | 595 case Resource::MainResource: |
| 585 case Resource::Raw: | 596 case Resource::Raw: |
| 586 case Resource::LinkPrefetch: | 597 case Resource::LinkPrefetch: |
| 587 case Resource::LinkSubresource: | 598 case Resource::LinkSubresource: |
| 599 case Resource::Manifest: |
| 588 break; | 600 break; |
| 589 case Resource::Media: | 601 case Resource::Media: |
| 590 case Resource::TextTrack: | 602 case Resource::TextTrack: |
| 591 if (!shouldBypassMainWorldCSP && !csp->allowMediaFromSource(url, cspRepo
rting)) | 603 if (!shouldBypassMainWorldCSP && !csp->allowMediaFromSource(url, cspRepo
rting)) |
| 592 return false; | 604 return false; |
| 593 | 605 |
| 594 if (frame()) { | 606 if (frame()) { |
| 595 if (!frame()->loader().client()->allowMedia(url)) | 607 if (!frame()->loader().client()->allowMedia(url)) |
| 596 return false; | 608 return false; |
| 597 } | 609 } |
| (...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1537 } | 1549 } |
| 1538 } | 1550 } |
| 1539 | 1551 |
| 1540 void ResourceFetcher::trace(Visitor* visitor) | 1552 void ResourceFetcher::trace(Visitor* visitor) |
| 1541 { | 1553 { |
| 1542 visitor->trace(m_document); | 1554 visitor->trace(m_document); |
| 1543 ResourceLoaderHost::trace(visitor); | 1555 ResourceLoaderHost::trace(visitor); |
| 1544 } | 1556 } |
| 1545 | 1557 |
| 1546 } | 1558 } |
| OLD | NEW |