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 return new CSSStyleSheetResource(request, charset); | 82 return new CSSStyleSheetResource(request, charset); |
83 case Resource::Script: | 83 case Resource::Script: |
84 return new ScriptResource(request, charset); | 84 return new ScriptResource(request, charset); |
85 case Resource::SVGDocument: | 85 case Resource::SVGDocument: |
86 return new DocumentResource(request, Resource::SVGDocument); | 86 return new DocumentResource(request, Resource::SVGDocument); |
87 case Resource::Font: | 87 case Resource::Font: |
88 return new FontResource(request); | 88 return new FontResource(request); |
89 case Resource::MainResource: | 89 case Resource::MainResource: |
90 case Resource::Raw: | 90 case Resource::Raw: |
91 case Resource::TextTrack: | 91 case Resource::TextTrack: |
| 92 case Resource::Media: |
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); | 95 return new XSLStyleSheetResource(request); |
95 case Resource::LinkPrefetch: | 96 case Resource::LinkPrefetch: |
96 return new Resource(request, Resource::LinkPrefetch); | 97 return new Resource(request, Resource::LinkPrefetch); |
97 case Resource::LinkSubresource: | 98 case Resource::LinkSubresource: |
98 return new Resource(request, Resource::LinkSubresource); | 99 return new Resource(request, Resource::LinkSubresource); |
99 case Resource::Shader: | 100 case Resource::Shader: |
100 return new ShaderResource(request); | 101 return new ShaderResource(request); |
101 case Resource::ImportResource: | 102 case Resource::ImportResource: |
(...skipping 17 matching lines...) Expand all Loading... |
119 case Resource::Raw: | 120 case Resource::Raw: |
120 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 121 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
121 case Resource::Script: | 122 case Resource::Script: |
122 case Resource::Font: | 123 case Resource::Font: |
123 case Resource::ImportResource: | 124 case Resource::ImportResource: |
124 return ResourceLoadPriorityMedium; | 125 return ResourceLoadPriorityMedium; |
125 case Resource::Image: | 126 case Resource::Image: |
126 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 127 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves |
127 // speed-index by ~5% on average, ~14% at the 99th percentile. | 128 // speed-index by ~5% on average, ~14% at the 99th percentile. |
128 return ResourceLoadPriorityVeryLow; | 129 return ResourceLoadPriorityVeryLow; |
| 130 case Resource::Media: |
| 131 return ResourceLoadPriorityLow; |
129 case Resource::XSLStyleSheet: | 132 case Resource::XSLStyleSheet: |
130 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 133 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
131 return ResourceLoadPriorityHigh; | 134 return ResourceLoadPriorityHigh; |
132 case Resource::SVGDocument: | 135 case Resource::SVGDocument: |
133 return ResourceLoadPriorityLow; | 136 return ResourceLoadPriorityLow; |
134 case Resource::LinkPrefetch: | 137 case Resource::LinkPrefetch: |
135 return ResourceLoadPriorityVeryLow; | 138 return ResourceLoadPriorityVeryLow; |
136 case Resource::LinkSubresource: | 139 case Resource::LinkSubresource: |
137 return ResourceLoadPriorityLow; | 140 return ResourceLoadPriorityLow; |
138 case Resource::TextTrack: | 141 case Resource::TextTrack: |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 case Resource::ImportResource: | 212 case Resource::ImportResource: |
210 return ResourceRequest::TargetIsSubresource; | 213 return ResourceRequest::TargetIsSubresource; |
211 case Resource::LinkPrefetch: | 214 case Resource::LinkPrefetch: |
212 return ResourceRequest::TargetIsPrefetch; | 215 return ResourceRequest::TargetIsPrefetch; |
213 case Resource::LinkSubresource: | 216 case Resource::LinkSubresource: |
214 return ResourceRequest::TargetIsSubresource; | 217 return ResourceRequest::TargetIsSubresource; |
215 case Resource::TextTrack: | 218 case Resource::TextTrack: |
216 return ResourceRequest::TargetIsTextTrack; | 219 return ResourceRequest::TargetIsTextTrack; |
217 case Resource::SVGDocument: | 220 case Resource::SVGDocument: |
218 return ResourceRequest::TargetIsImage; | 221 return ResourceRequest::TargetIsImage; |
| 222 case Resource::Media: |
| 223 return ResourceRequest::TargetIsMedia; |
219 } | 224 } |
220 ASSERT_NOT_REACHED(); | 225 ASSERT_NOT_REACHED(); |
221 return ResourceRequest::TargetIsSubresource; | 226 return ResourceRequest::TargetIsSubresource; |
222 } | 227 } |
223 | 228 |
224 ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader) | 229 ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader) |
225 : m_document(0) | 230 : m_document(0) |
226 , m_documentLoader(documentLoader) | 231 , m_documentLoader(documentLoader) |
227 , m_requestCount(0) | 232 , m_requestCount(0) |
228 , m_garbageCollectDocumentResourcesTimer(this, &ResourceFetcher::garbageColl
ectDocumentResourcesTimerFired) | 233 , m_garbageCollectDocumentResourcesTimer(this, &ResourceFetcher::garbageColl
ectDocumentResourcesTimerFired) |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 return toRawResource(requestResource(Resource::Raw, request)); | 375 return toRawResource(requestResource(Resource::Raw, request)); |
371 } | 376 } |
372 | 377 |
373 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques
t, const SubstituteData& substituteData) | 378 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques
t, const SubstituteData& substituteData) |
374 { | 379 { |
375 if (substituteData.isValid()) | 380 if (substituteData.isValid()) |
376 preCacheSubstituteDataForMainResource(request, substituteData); | 381 preCacheSubstituteDataForMainResource(request, substituteData); |
377 return toRawResource(requestResource(Resource::MainResource, request)); | 382 return toRawResource(requestResource(Resource::MainResource, request)); |
378 } | 383 } |
379 | 384 |
| 385 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) |
| 386 { |
| 387 return toRawResource(requestResource(Resource::Media, request)); |
| 388 } |
| 389 |
| 390 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 391 { |
| 392 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 393 } |
| 394 |
380 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) | 395 void ResourceFetcher::preCacheSubstituteDataForMainResource(const FetchRequest&
request, const SubstituteData& substituteData) |
381 { | 396 { |
382 const KURL& url = request.url(); | 397 const KURL& url = request.url(); |
383 if (Resource* oldResource = memoryCache()->resourceForURL(url)) | 398 if (Resource* oldResource = memoryCache()->resourceForURL(url)) |
384 memoryCache()->remove(oldResource); | 399 memoryCache()->remove(oldResource); |
385 | 400 |
386 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); | 401 ResourceResponse response(url, substituteData.mimeType(), substituteData.con
tent()->size(), substituteData.textEncoding(), emptyString()); |
387 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); | 402 ResourcePtr<Resource> resource = createResource(Resource::MainResource, requ
est.resourceRequest(), substituteData.textEncoding()); |
388 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; | 403 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad())
; |
389 resource->setOptions(request.options()); | 404 resource->setOptions(request.options()); |
(...skipping 18 matching lines...) Expand all Loading... |
408 // These resource can inject script into the current document (Scrip
t, | 423 // These resource can inject script into the current document (Scrip
t, |
409 // XSL) or exfiltrate the content of the current document (CSS). | 424 // XSL) or exfiltrate the content of the current document (CSS). |
410 treatment = TreatAsActiveContent; | 425 treatment = TreatAsActiveContent; |
411 break; | 426 break; |
412 | 427 |
413 case Resource::TextTrack: | 428 case Resource::TextTrack: |
414 case Resource::Shader: | 429 case Resource::Shader: |
415 case Resource::Raw: | 430 case Resource::Raw: |
416 case Resource::Image: | 431 case Resource::Image: |
417 case Resource::Font: | 432 case Resource::Font: |
| 433 case Resource::Media: |
418 // These resources can corrupt only the frame's pixels. | 434 // These resources can corrupt only the frame's pixels. |
419 treatment = TreatAsPassiveContent; | 435 treatment = TreatAsPassiveContent; |
420 break; | 436 break; |
421 | 437 |
422 case Resource::MainResource: | 438 case Resource::MainResource: |
423 case Resource::LinkPrefetch: | 439 case Resource::LinkPrefetch: |
424 case Resource::LinkSubresource: | 440 case Resource::LinkSubresource: |
425 // These cannot affect the current document. | 441 // These cannot affect the current document. |
426 treatment = TreatAsAlwaysAllowedContent; | 442 treatment = TreatAsAlwaysAllowedContent; |
427 break; | 443 break; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 case Resource::Image: | 487 case Resource::Image: |
472 case Resource::CSSStyleSheet: | 488 case Resource::CSSStyleSheet: |
473 case Resource::Script: | 489 case Resource::Script: |
474 case Resource::Font: | 490 case Resource::Font: |
475 case Resource::Raw: | 491 case Resource::Raw: |
476 case Resource::LinkPrefetch: | 492 case Resource::LinkPrefetch: |
477 case Resource::LinkSubresource: | 493 case Resource::LinkSubresource: |
478 case Resource::TextTrack: | 494 case Resource::TextTrack: |
479 case Resource::Shader: | 495 case Resource::Shader: |
480 case Resource::ImportResource: | 496 case Resource::ImportResource: |
| 497 case Resource::Media: |
481 // By default these types of resources can be loaded from any origin. | 498 // By default these types of resources can be loaded from any origin. |
482 // FIXME: Are we sure about Resource::Font? | 499 // FIXME: Are we sure about Resource::Font? |
483 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 500 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
484 printAccessDeniedMessage(url); | 501 printAccessDeniedMessage(url); |
485 return false; | 502 return false; |
486 } | 503 } |
487 break; | 504 break; |
488 case Resource::XSLStyleSheet: | 505 case Resource::XSLStyleSheet: |
489 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 506 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
490 case Resource::SVGDocument: | 507 case Resource::SVGDocument: |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 case Resource::Font: { | 545 case Resource::Font: { |
529 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) | 546 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) |
530 return false; | 547 return false; |
531 break; | 548 break; |
532 } | 549 } |
533 case Resource::MainResource: | 550 case Resource::MainResource: |
534 case Resource::Raw: | 551 case Resource::Raw: |
535 case Resource::LinkPrefetch: | 552 case Resource::LinkPrefetch: |
536 case Resource::LinkSubresource: | 553 case Resource::LinkSubresource: |
537 break; | 554 break; |
| 555 case Resource::Media: |
538 case Resource::TextTrack: | 556 case Resource::TextTrack: |
539 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url)) | 557 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url)) |
540 return false; | 558 return false; |
541 break; | 559 break; |
542 } | 560 } |
543 | 561 |
544 // Last of all, check for insecure content. We do this last so that when | 562 // Last of all, check for insecure content. We do this last so that when |
545 // folks block insecure content with a CSP policy, they don't get a warning. | 563 // folks block insecure content with a CSP policy, they don't get a warning. |
546 // They'll still get a warning in the console about CSP blocking the load. | 564 // They'll still get a warning in the console about CSP blocking the load. |
547 | 565 |
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 case Revalidate: | 1420 case Revalidate: |
1403 ++m_revalidateCount; | 1421 ++m_revalidateCount; |
1404 return; | 1422 return; |
1405 case Use: | 1423 case Use: |
1406 ++m_useCount; | 1424 ++m_useCount; |
1407 return; | 1425 return; |
1408 } | 1426 } |
1409 } | 1427 } |
1410 | 1428 |
1411 } | 1429 } |
OLD | NEW |