| 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 case Resource::Script: | 82 case Resource::Script: |
| 83 return new ScriptResource(request, charset); | 83 return new ScriptResource(request, charset); |
| 84 case Resource::SVGDocument: | 84 case Resource::SVGDocument: |
| 85 return new DocumentResource(request, Resource::SVGDocument); | 85 return new DocumentResource(request, Resource::SVGDocument); |
| 86 case Resource::Font: | 86 case Resource::Font: |
| 87 return new FontResource(request); | 87 return new FontResource(request); |
| 88 case Resource::MainResource: | 88 case Resource::MainResource: |
| 89 case Resource::Raw: | 89 case Resource::Raw: |
| 90 case Resource::TextTrack: | 90 case Resource::TextTrack: |
| 91 case Resource::Media: | 91 case Resource::Media: |
| 92 case Resource::ImportResource: |
| 92 return new RawResource(request, type); | 93 return new RawResource(request, type); |
| 93 case Resource::XSLStyleSheet: | 94 case Resource::XSLStyleSheet: |
| 94 return new XSLStyleSheetResource(request, charset); | 95 return new XSLStyleSheetResource(request, charset); |
| 95 case Resource::LinkPrefetch: | 96 case Resource::LinkPrefetch: |
| 96 return new Resource(request, Resource::LinkPrefetch); | |
| 97 case Resource::LinkSubresource: | 97 case Resource::LinkSubresource: |
| 98 return new Resource(request, Resource::LinkSubresource); | 98 case Resource::Manifest: |
| 99 case Resource::ImportResource: | 99 return new Resource(request, type); |
| 100 return new RawResource(request, type); | |
| 101 } | 100 } |
| 102 | 101 |
| 103 ASSERT_NOT_REACHED(); | 102 ASSERT_NOT_REACHED(); |
| 104 return 0; | 103 return 0; |
| 105 } | 104 } |
| 106 | 105 |
| 107 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) | 106 static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest
& request) |
| 108 { | 107 { |
| 109 if (request.priority() != ResourceLoadPriorityUnresolved) | 108 if (request.priority() != ResourceLoadPriorityUnresolved) |
| 110 return request.priority(); | 109 return request.priority(); |
| 111 | 110 |
| 112 switch (type) { | 111 switch (type) { |
| 113 case Resource::MainResource: | 112 case Resource::MainResource: |
| 114 return ResourceLoadPriorityVeryHigh; | 113 return ResourceLoadPriorityVeryHigh; |
| 115 case Resource::CSSStyleSheet: | 114 case Resource::CSSStyleSheet: |
| 116 return ResourceLoadPriorityHigh; | 115 return ResourceLoadPriorityHigh; |
| 117 case Resource::Raw: | 116 case Resource::Raw: |
| 118 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 117 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| 119 case Resource::Script: | 118 case Resource::Script: |
| 120 case Resource::Font: | 119 case Resource::Font: |
| 121 case Resource::ImportResource: | 120 case Resource::ImportResource: |
| 121 case Resource::Manifest: |
| 122 return ResourceLoadPriorityMedium; | 122 return ResourceLoadPriorityMedium; |
| 123 case Resource::Image: | 123 case Resource::Image: |
| 124 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 124 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves |
| 125 // speed-index by ~5% on average, ~14% at the 99th percentile. | 125 // speed-index by ~5% on average, ~14% at the 99th percentile. |
| 126 return ResourceLoadPriorityVeryLow; | 126 return ResourceLoadPriorityVeryLow; |
| 127 case Resource::Media: | 127 case Resource::Media: |
| 128 return ResourceLoadPriorityLow; | 128 return ResourceLoadPriorityLow; |
| 129 case Resource::XSLStyleSheet: | 129 case Resource::XSLStyleSheet: |
| 130 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 130 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 131 return ResourceLoadPriorityHigh; | 131 return ResourceLoadPriorityHigh; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 case Resource::CSSStyleSheet: | 197 case Resource::CSSStyleSheet: |
| 198 return ResourceRequest::TargetIsStyleSheet; | 198 return ResourceRequest::TargetIsStyleSheet; |
| 199 case Resource::Script: | 199 case Resource::Script: |
| 200 return ResourceRequest::TargetIsScript; | 200 return ResourceRequest::TargetIsScript; |
| 201 case Resource::Font: | 201 case Resource::Font: |
| 202 return ResourceRequest::TargetIsFont; | 202 return ResourceRequest::TargetIsFont; |
| 203 case Resource::Image: | 203 case Resource::Image: |
| 204 return ResourceRequest::TargetIsImage; | 204 return ResourceRequest::TargetIsImage; |
| 205 case Resource::Raw: | 205 case Resource::Raw: |
| 206 case Resource::ImportResource: | 206 case Resource::ImportResource: |
| 207 case Resource::Manifest: |
| 207 return ResourceRequest::TargetIsSubresource; | 208 return ResourceRequest::TargetIsSubresource; |
| 208 case Resource::LinkPrefetch: | 209 case Resource::LinkPrefetch: |
| 209 return ResourceRequest::TargetIsPrefetch; | 210 return ResourceRequest::TargetIsPrefetch; |
| 210 case Resource::LinkSubresource: | 211 case Resource::LinkSubresource: |
| 211 return ResourceRequest::TargetIsSubresource; | 212 return ResourceRequest::TargetIsSubresource; |
| 212 case Resource::TextTrack: | 213 case Resource::TextTrack: |
| 213 return ResourceRequest::TargetIsTextTrack; | 214 return ResourceRequest::TargetIsTextTrack; |
| 214 case Resource::SVGDocument: | 215 case Resource::SVGDocument: |
| 215 return ResourceRequest::TargetIsImage; | 216 return ResourceRequest::TargetIsImage; |
| 216 case Resource::Media: | 217 case Resource::Media: |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) | 383 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) |
| 383 { | 384 { |
| 384 return toRawResource(requestResource(Resource::Media, request)); | 385 return toRawResource(requestResource(Resource::Media, request)); |
| 385 } | 386 } |
| 386 | 387 |
| 387 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) | 388 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 388 { | 389 { |
| 389 return toRawResource(requestResource(Resource::TextTrack, request)); | 390 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 390 } | 391 } |
| 391 | 392 |
| 393 ResourcePtr<Resource> ResourceFetcher::fetchManifest(FetchRequest& request) |
| 394 { |
| 395 return requestResource(Resource::Manifest, request); |
| 396 } |
| 397 |
| 392 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 398 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
| 393 { | 399 { |
| 394 const KURL& url = request.url(); | 400 const KURL& url = request.url(); |
| 395 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 401 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
| 396 memoryCache()->remove(oldResource); | 402 memoryCache()->remove(oldResource); |
| 397 | 403 |
| 398 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 404 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
| 399 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 405 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); |
| 400 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 406 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
| 401 resource->setOptions(request.options()); | 407 resource->setOptions(request.options()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 427 case Resource::Image: | 433 case Resource::Image: |
| 428 case Resource::Font: | 434 case Resource::Font: |
| 429 case Resource::Media: | 435 case Resource::Media: |
| 430 // These resources can corrupt only the frame's pixels. | 436 // These resources can corrupt only the frame's pixels. |
| 431 treatment = TreatAsPassiveContent; | 437 treatment = TreatAsPassiveContent; |
| 432 break; | 438 break; |
| 433 | 439 |
| 434 case Resource::MainResource: | 440 case Resource::MainResource: |
| 435 case Resource::LinkPrefetch: | 441 case Resource::LinkPrefetch: |
| 436 case Resource::LinkSubresource: | 442 case Resource::LinkSubresource: |
| 443 case Resource::Manifest: |
| 437 // These cannot affect the current document. | 444 // These cannot affect the current document. |
| 438 treatment = TreatAsAlwaysAllowedContent; | 445 treatment = TreatAsAlwaysAllowedContent; |
| 439 break; | 446 break; |
| 440 } | 447 } |
| 441 } | 448 } |
| 442 if (treatment == TreatAsActiveContent) { | 449 if (treatment == TreatAsActiveContent) { |
| 443 if (LocalFrame* f = frame()) { | 450 if (LocalFrame* f = frame()) { |
| 444 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) | 451 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) |
| 445 return false; | 452 return false; |
| 446 LocalFrame* top = f->tree().top(); | 453 LocalFrame* top = f->tree().top(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 case Resource::Image: | 492 case Resource::Image: |
| 486 case Resource::CSSStyleSheet: | 493 case Resource::CSSStyleSheet: |
| 487 case Resource::Script: | 494 case Resource::Script: |
| 488 case Resource::Font: | 495 case Resource::Font: |
| 489 case Resource::Raw: | 496 case Resource::Raw: |
| 490 case Resource::LinkPrefetch: | 497 case Resource::LinkPrefetch: |
| 491 case Resource::LinkSubresource: | 498 case Resource::LinkSubresource: |
| 492 case Resource::TextTrack: | 499 case Resource::TextTrack: |
| 493 case Resource::ImportResource: | 500 case Resource::ImportResource: |
| 494 case Resource::Media: | 501 case Resource::Media: |
| 502 case Resource::Manifest: |
| 495 // By default these types of resources can be loaded from any origin. | 503 // By default these types of resources can be loaded from any origin. |
| 496 // FIXME: Are we sure about Resource::Font? | 504 // FIXME: Are we sure about Resource::Font? |
| 497 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 505 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
| 498 printAccessDeniedMessage(url); | 506 printAccessDeniedMessage(url); |
| 499 return false; | 507 return false; |
| 500 } | 508 } |
| 501 break; | 509 break; |
| 502 case Resource::XSLStyleSheet: | 510 case Resource::XSLStyleSheet: |
| 503 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 511 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 504 case Resource::SVGDocument: | 512 case Resource::SVGDocument: |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 break; | 551 break; |
| 544 case Resource::Font: { | 552 case Resource::Font: { |
| 545 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url, cspReporting)) | 553 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url, cspReporting)) |
| 546 return false; | 554 return false; |
| 547 break; | 555 break; |
| 548 } | 556 } |
| 549 case Resource::MainResource: | 557 case Resource::MainResource: |
| 550 case Resource::Raw: | 558 case Resource::Raw: |
| 551 case Resource::LinkPrefetch: | 559 case Resource::LinkPrefetch: |
| 552 case Resource::LinkSubresource: | 560 case Resource::LinkSubresource: |
| 561 case Resource::Manifest: |
| 553 break; | 562 break; |
| 554 case Resource::Media: | 563 case Resource::Media: |
| 555 case Resource::TextTrack: | 564 case Resource::TextTrack: |
| 556 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url, cspReporting)) | 565 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url, cspReporting)) |
| 557 return false; | 566 return false; |
| 558 break; | 567 break; |
| 559 } | 568 } |
| 560 | 569 |
| 561 // Last of all, check for insecure content. We do this last so that when | 570 // Last of all, check for insecure content. We do this last so that when |
| 562 // folks block insecure content with a CSP policy, they don't get a warning. | 571 // 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... |
| 1457 } | 1466 } |
| 1458 } | 1467 } |
| 1459 | 1468 |
| 1460 void ResourceFetcher::trace(Visitor* visitor) | 1469 void ResourceFetcher::trace(Visitor* visitor) |
| 1461 { | 1470 { |
| 1462 visitor->trace(m_document); | 1471 visitor->trace(m_document); |
| 1463 ResourceLoaderHost::trace(visitor); | 1472 ResourceLoaderHost::trace(visitor); |
| 1464 } | 1473 } |
| 1465 | 1474 |
| 1466 } | 1475 } |
| OLD | NEW |