| 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 |