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: | |
Nate Chapin
2014/08/25 20:43:11
Is there any case loading a manifest will block th
mlamouri (slow - plz ping)
2014/08/26 17:25:22
For the moment, we expect to load the manifest onl
| |
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 |