Chromium Code Reviews| 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 ResourceLoadPriorityVeryLow; | |
| 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).get()); | |
| 382 } | |
| 383 | |
| 384 ResourcePtr<RawResource> ResourceFetcher::fetchTextTrack(FetchRequest& request) | |
| 385 { | |
| 386 return toRawResource(requestResource(Resource::TextTrack, request).get()); | |
| 387 } | |
| 388 | |
| 389 | |
|
apavlov
2013/12/19 09:31:52
extra blank line
pwnall-personal
2013/12/24 17:52:18
Done.
| |
| 374 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url, MixedContentBlockingTreatment treatment) const | 390 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url, MixedContentBlockingTreatment treatment) const |
| 375 { | 391 { |
| 376 if (treatment == TreatAsDefaultForType) { | 392 if (treatment == TreatAsDefaultForType) { |
| 377 switch (type) { | 393 switch (type) { |
| 378 case Resource::XSLStyleSheet: | 394 case Resource::XSLStyleSheet: |
| 379 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 395 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 380 case Resource::Script: | 396 case Resource::Script: |
| 381 case Resource::SVGDocument: | 397 case Resource::SVGDocument: |
| 382 case Resource::CSSStyleSheet: | 398 case Resource::CSSStyleSheet: |
| 383 case Resource::ImportResource: | 399 case Resource::ImportResource: |
| 384 // These resource can inject script into the current document (Scrip t, | 400 // These resource can inject script into the current document (Scrip t, |
| 385 // XSL) or exfiltrate the content of the current document (CSS). | 401 // XSL) or exfiltrate the content of the current document (CSS). |
| 386 treatment = TreatAsActiveContent; | 402 treatment = TreatAsActiveContent; |
| 387 break; | 403 break; |
| 388 | 404 |
| 389 case Resource::TextTrack: | 405 case Resource::TextTrack: |
| 390 case Resource::Shader: | 406 case Resource::Shader: |
| 391 case Resource::Raw: | 407 case Resource::Raw: |
| 392 case Resource::Image: | 408 case Resource::Image: |
| 393 case Resource::Font: | 409 case Resource::Font: |
| 410 case Resource::Media: | |
| 394 // These resources can corrupt only the frame's pixels. | 411 // These resources can corrupt only the frame's pixels. |
| 395 treatment = TreatAsPassiveContent; | 412 treatment = TreatAsPassiveContent; |
| 396 break; | 413 break; |
| 397 | 414 |
| 398 case Resource::MainResource: | 415 case Resource::MainResource: |
| 399 case Resource::LinkPrefetch: | 416 case Resource::LinkPrefetch: |
| 400 case Resource::LinkSubresource: | 417 case Resource::LinkSubresource: |
| 401 // These cannot affect the current document. | 418 // These cannot affect the current document. |
| 402 treatment = TreatAsAlwaysAllowedContent; | 419 treatment = TreatAsAlwaysAllowedContent; |
| 403 break; | 420 break; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 447 case Resource::Image: | 464 case Resource::Image: |
| 448 case Resource::CSSStyleSheet: | 465 case Resource::CSSStyleSheet: |
| 449 case Resource::Script: | 466 case Resource::Script: |
| 450 case Resource::Font: | 467 case Resource::Font: |
| 451 case Resource::Raw: | 468 case Resource::Raw: |
| 452 case Resource::LinkPrefetch: | 469 case Resource::LinkPrefetch: |
| 453 case Resource::LinkSubresource: | 470 case Resource::LinkSubresource: |
| 454 case Resource::TextTrack: | 471 case Resource::TextTrack: |
| 455 case Resource::Shader: | 472 case Resource::Shader: |
| 456 case Resource::ImportResource: | 473 case Resource::ImportResource: |
| 474 case Resource::Media: | |
| 457 // By default these types of resources can be loaded from any origin. | 475 // By default these types of resources can be loaded from any origin. |
| 458 // FIXME: Are we sure about Resource::Font? | 476 // FIXME: Are we sure about Resource::Font? |
| 459 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security Origin->canRequest(url)) { | 477 if (originRestriction == FetchRequest::RestrictToSameOrigin && !security Origin->canRequest(url)) { |
| 460 printAccessDeniedMessage(url); | 478 printAccessDeniedMessage(url); |
| 461 return false; | 479 return false; |
| 462 } | 480 } |
| 463 break; | 481 break; |
| 464 case Resource::XSLStyleSheet: | 482 case Resource::XSLStyleSheet: |
| 465 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 483 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| 466 case Resource::SVGDocument: | 484 case Resource::SVGDocument: |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 504 case Resource::Font: { | 522 case Resource::Font: { |
| 505 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowFontFromSource(url)) | 523 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowFontFromSource(url)) |
| 506 return false; | 524 return false; |
| 507 break; | 525 break; |
| 508 } | 526 } |
| 509 case Resource::MainResource: | 527 case Resource::MainResource: |
| 510 case Resource::Raw: | 528 case Resource::Raw: |
| 511 case Resource::LinkPrefetch: | 529 case Resource::LinkPrefetch: |
| 512 case Resource::LinkSubresource: | 530 case Resource::LinkSubresource: |
| 513 break; | 531 break; |
| 532 case Resource::Media: | |
| 514 case Resource::TextTrack: | 533 case Resource::TextTrack: |
| 515 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowMediaFromSource(url)) | 534 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowMediaFromSource(url)) |
| 516 return false; | 535 return false; |
| 517 break; | 536 break; |
| 518 } | 537 } |
| 519 | 538 |
| 520 // Last of all, check for insecure content. We do this last so that when | 539 // 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. | 540 // 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. | 541 // They'll still get a warning in the console about CSP blocking the load. |
| 523 | 542 |
| (...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1338 } | 1357 } |
| 1339 #endif | 1358 #endif |
| 1340 | 1359 |
| 1341 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() | 1360 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() |
| 1342 { | 1361 { |
| 1343 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentC ontext)); | 1362 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentC ontext)); |
| 1344 return options; | 1363 return options; |
| 1345 } | 1364 } |
| 1346 | 1365 |
| 1347 } | 1366 } |
| OLD | NEW |