| 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 return new CSSStyleSheetResource(request, charset); | 80 return new CSSStyleSheetResource(request, charset); |
| 81 case Resource::Script: | 81 case Resource::Script: |
| 82 return new ScriptResource(request, charset); | 82 return new ScriptResource(request, charset); |
| 83 case Resource::SVGDocument: | 83 case Resource::SVGDocument: |
| 84 return new DocumentResource(request, Resource::SVGDocument); | 84 return new DocumentResource(request, Resource::SVGDocument); |
| 85 case Resource::Font: | 85 case Resource::Font: |
| 86 return new FontResource(request); | 86 return new FontResource(request); |
| 87 case Resource::MainResource: | 87 case Resource::MainResource: |
| 88 case Resource::Raw: | 88 case Resource::Raw: |
| 89 case Resource::TextTrack: | 89 case Resource::TextTrack: |
| 90 case Resource::Media: |
| 90 return new RawResource(request, type); | 91 return new RawResource(request, type); |
| 91 case Resource::XSLStyleSheet: | 92 case Resource::XSLStyleSheet: |
| 92 return new XSLStyleSheetResource(request); | 93 return new XSLStyleSheetResource(request); |
| 93 case Resource::LinkPrefetch: | 94 case Resource::LinkPrefetch: |
| 94 return new Resource(request, Resource::LinkPrefetch); | 95 return new Resource(request, Resource::LinkPrefetch); |
| 95 case Resource::LinkSubresource: | 96 case Resource::LinkSubresource: |
| 96 return new Resource(request, Resource::LinkSubresource); | 97 return new Resource(request, Resource::LinkSubresource); |
| 97 case Resource::Shader: | 98 case Resource::Shader: |
| 98 return new ShaderResource(request); | 99 return new ShaderResource(request); |
| 99 case Resource::ImportResource: | 100 case Resource::ImportResource: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 117 case Resource::Raw: | 118 case Resource::Raw: |
| 118 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; | 119 return request.options().synchronousPolicy == RequestSynchronously ? Res
ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; |
| 119 case Resource::Script: | 120 case Resource::Script: |
| 120 case Resource::Font: | 121 case Resource::Font: |
| 121 case Resource::ImportResource: | 122 case Resource::ImportResource: |
| 122 return ResourceLoadPriorityMedium; | 123 return ResourceLoadPriorityMedium; |
| 123 case Resource::Image: | 124 case Resource::Image: |
| 124 // We'll default images to VeryLow, and promote whatever is visible. Thi
s improves | 125 // 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. | 126 // speed-index by ~5% on average, ~14% at the 99th percentile. |
| 126 return ResourceLoadPriorityVeryLow; | 127 return ResourceLoadPriorityVeryLow; |
| 128 case Resource::Media: |
| 129 return ResourceLoadPriorityLow; |
| 127 case Resource::XSLStyleSheet: | 130 case Resource::XSLStyleSheet: |
| 128 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 131 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 129 return ResourceLoadPriorityHigh; | 132 return ResourceLoadPriorityHigh; |
| 130 case Resource::SVGDocument: | 133 case Resource::SVGDocument: |
| 131 return ResourceLoadPriorityLow; | 134 return ResourceLoadPriorityLow; |
| 132 case Resource::LinkPrefetch: | 135 case Resource::LinkPrefetch: |
| 133 return ResourceLoadPriorityVeryLow; | 136 return ResourceLoadPriorityVeryLow; |
| 134 case Resource::LinkSubresource: | 137 case Resource::LinkSubresource: |
| 135 return ResourceLoadPriorityLow; | 138 return ResourceLoadPriorityLow; |
| 136 case Resource::TextTrack: | 139 case Resource::TextTrack: |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 case Resource::ImportResource: | 205 case Resource::ImportResource: |
| 203 return ResourceRequest::TargetIsSubresource; | 206 return ResourceRequest::TargetIsSubresource; |
| 204 case Resource::LinkPrefetch: | 207 case Resource::LinkPrefetch: |
| 205 return ResourceRequest::TargetIsPrefetch; | 208 return ResourceRequest::TargetIsPrefetch; |
| 206 case Resource::LinkSubresource: | 209 case Resource::LinkSubresource: |
| 207 return ResourceRequest::TargetIsSubresource; | 210 return ResourceRequest::TargetIsSubresource; |
| 208 case Resource::TextTrack: | 211 case Resource::TextTrack: |
| 209 return ResourceRequest::TargetIsTextTrack; | 212 return ResourceRequest::TargetIsTextTrack; |
| 210 case Resource::SVGDocument: | 213 case Resource::SVGDocument: |
| 211 return ResourceRequest::TargetIsImage; | 214 return ResourceRequest::TargetIsImage; |
| 215 case Resource::Media: |
| 216 return ResourceRequest::TargetIsMedia; |
| 212 } | 217 } |
| 213 ASSERT_NOT_REACHED(); | 218 ASSERT_NOT_REACHED(); |
| 214 return ResourceRequest::TargetIsSubresource; | 219 return ResourceRequest::TargetIsSubresource; |
| 215 } | 220 } |
| 216 | 221 |
| 217 ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader) | 222 ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader) |
| 218 : m_document(0) | 223 : m_document(0) |
| 219 , m_documentLoader(documentLoader) | 224 , m_documentLoader(documentLoader) |
| 220 , m_requestCount(0) | 225 , m_requestCount(0) |
| 221 , m_garbageCollectDocumentResourcesTimer(this, &ResourceFetcher::garbageColl
ectDocumentResourcesTimerFired) | 226 , m_garbageCollectDocumentResourcesTimer(this, &ResourceFetcher::garbageColl
ectDocumentResourcesTimerFired) |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 ResourcePtr<RawResource> ResourceFetcher::fetchRawResource(FetchRequest& request
) | 369 ResourcePtr<RawResource> ResourceFetcher::fetchRawResource(FetchRequest& request
) |
| 365 { | 370 { |
| 366 return toRawResource(requestResource(Resource::Raw, request)); | 371 return toRawResource(requestResource(Resource::Raw, request)); |
| 367 } | 372 } |
| 368 | 373 |
| 369 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques
t) | 374 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques
t) |
| 370 { | 375 { |
| 371 return toRawResource(requestResource(Resource::MainResource, request)); | 376 return toRawResource(requestResource(Resource::MainResource, request)); |
| 372 } | 377 } |
| 373 | 378 |
| 379 ResourcePtr<RawResource> ResourceFetcher::fetchMedia(FetchRequest& request) |
| 380 { |
| 381 return toRawResource(requestResource(Resource::Media, request)); |
| 382 } |
| 383 |
| 384 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) |
| 385 { |
| 386 return toRawResource(requestResource(Resource::TextTrack, request)); |
| 387 } |
| 388 |
| 374 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url,
MixedContentBlockingTreatment treatment) const | 389 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url,
MixedContentBlockingTreatment treatment) const |
| 375 { | 390 { |
| 376 if (treatment == TreatAsDefaultForType) { | 391 if (treatment == TreatAsDefaultForType) { |
| 377 switch (type) { | 392 switch (type) { |
| 378 case Resource::XSLStyleSheet: | 393 case Resource::XSLStyleSheet: |
| 379 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 394 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 380 case Resource::Script: | 395 case Resource::Script: |
| 381 case Resource::SVGDocument: | 396 case Resource::SVGDocument: |
| 382 case Resource::CSSStyleSheet: | 397 case Resource::CSSStyleSheet: |
| 383 case Resource::ImportResource: | 398 case Resource::ImportResource: |
| 384 // These resource can inject script into the current document (Scrip
t, | 399 // These resource can inject script into the current document (Scrip
t, |
| 385 // XSL) or exfiltrate the content of the current document (CSS). | 400 // XSL) or exfiltrate the content of the current document (CSS). |
| 386 treatment = TreatAsActiveContent; | 401 treatment = TreatAsActiveContent; |
| 387 break; | 402 break; |
| 388 | 403 |
| 389 case Resource::TextTrack: | 404 case Resource::TextTrack: |
| 390 case Resource::Shader: | 405 case Resource::Shader: |
| 391 case Resource::Raw: | 406 case Resource::Raw: |
| 392 case Resource::Image: | 407 case Resource::Image: |
| 393 case Resource::Font: | 408 case Resource::Font: |
| 409 case Resource::Media: |
| 394 // These resources can corrupt only the frame's pixels. | 410 // These resources can corrupt only the frame's pixels. |
| 395 treatment = TreatAsPassiveContent; | 411 treatment = TreatAsPassiveContent; |
| 396 break; | 412 break; |
| 397 | 413 |
| 398 case Resource::MainResource: | 414 case Resource::MainResource: |
| 399 case Resource::LinkPrefetch: | 415 case Resource::LinkPrefetch: |
| 400 case Resource::LinkSubresource: | 416 case Resource::LinkSubresource: |
| 401 // These cannot affect the current document. | 417 // These cannot affect the current document. |
| 402 treatment = TreatAsAlwaysAllowedContent; | 418 treatment = TreatAsAlwaysAllowedContent; |
| 403 break; | 419 break; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 case Resource::Image: | 463 case Resource::Image: |
| 448 case Resource::CSSStyleSheet: | 464 case Resource::CSSStyleSheet: |
| 449 case Resource::Script: | 465 case Resource::Script: |
| 450 case Resource::Font: | 466 case Resource::Font: |
| 451 case Resource::Raw: | 467 case Resource::Raw: |
| 452 case Resource::LinkPrefetch: | 468 case Resource::LinkPrefetch: |
| 453 case Resource::LinkSubresource: | 469 case Resource::LinkSubresource: |
| 454 case Resource::TextTrack: | 470 case Resource::TextTrack: |
| 455 case Resource::Shader: | 471 case Resource::Shader: |
| 456 case Resource::ImportResource: | 472 case Resource::ImportResource: |
| 473 case Resource::Media: |
| 457 // By default these types of resources can be loaded from any origin. | 474 // By default these types of resources can be loaded from any origin. |
| 458 // FIXME: Are we sure about Resource::Font? | 475 // FIXME: Are we sure about Resource::Font? |
| 459 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { | 476 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security
Origin->canRequest(url)) { |
| 460 printAccessDeniedMessage(url); | 477 printAccessDeniedMessage(url); |
| 461 return false; | 478 return false; |
| 462 } | 479 } |
| 463 break; | 480 break; |
| 464 case Resource::XSLStyleSheet: | 481 case Resource::XSLStyleSheet: |
| 465 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 482 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 466 case Resource::SVGDocument: | 483 case Resource::SVGDocument: |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 case Resource::Font: { | 521 case Resource::Font: { |
| 505 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) | 522 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowFontFromSource(url)) |
| 506 return false; | 523 return false; |
| 507 break; | 524 break; |
| 508 } | 525 } |
| 509 case Resource::MainResource: | 526 case Resource::MainResource: |
| 510 case Resource::Raw: | 527 case Resource::Raw: |
| 511 case Resource::LinkPrefetch: | 528 case Resource::LinkPrefetch: |
| 512 case Resource::LinkSubresource: | 529 case Resource::LinkSubresource: |
| 513 break; | 530 break; |
| 531 case Resource::Media: |
| 514 case Resource::TextTrack: | 532 case Resource::TextTrack: |
| 515 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url)) | 533 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS
ecurityPolicy()->allowMediaFromSource(url)) |
| 516 return false; | 534 return false; |
| 517 break; | 535 break; |
| 518 } | 536 } |
| 519 | 537 |
| 520 // Last of all, check for insecure content. We do this last so that when | 538 // Last of all, check for insecure content. We do this last so that when |
| 521 // folks block insecure content with a CSP policy, they don't get a warning. | 539 // folks block insecure content with a CSP policy, they don't get a warning. |
| 522 // They'll still get a warning in the console about CSP blocking the load. | 540 // They'll still get a warning in the console about CSP blocking the load. |
| 523 | 541 |
| (...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1323 } | 1341 } |
| 1324 #endif | 1342 #endif |
| 1325 | 1343 |
| 1326 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() | 1344 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() |
| 1327 { | 1345 { |
| 1328 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SniffContent, BufferDat
a, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCr
edentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentContext)); | 1346 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SniffContent, BufferDat
a, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCr
edentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentContext)); |
| 1329 return options; | 1347 return options; |
| 1330 } | 1348 } |
| 1331 | 1349 |
| 1332 } | 1350 } |
| OLD | NEW |