Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: Source/core/fetch/ResourceFetcher.cpp

Issue 114123005: Show media and VTT text tracks in the devtools. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressed feedback. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/inspector/InspectorPageAgent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/inspector/InspectorPageAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698