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 |