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

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

Issue 25519002: Adding ASSERT for RuntimeEnabled feature XSLT (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 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
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
11 version 2 of the License, or (at your option) any later version. 11 version 2 of the License, or (at your option) any later version.
12 12
13 This library is distributed in the hope that it will be useful, 13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details. 16 Library General Public License for more details.
17 17
18 You should have received a copy of the GNU Library General Public License 18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to 19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. 21 Boston, MA 02110-1301, USA.
22 22
23 This class provides all functionality needed for loading images, style sheet s and html 23 This class provides all functionality needed for loading images, style sheet s and html
24 pages from the web. It has a memory cache for these objects. 24 pages from the web. It has a memory cache for these objects.
25 */ 25 */
26 26
27 #include "config.h" 27 #include "config.h"
28 #include "core/fetch/ResourceFetcher.h" 28 #include "core/fetch/ResourceFetcher.h"
29 29
30 #include "RuntimeEnabledFeatures.h"
30 #include "bindings/v8/ScriptController.h" 31 #include "bindings/v8/ScriptController.h"
31 #include "core/dom/Document.h" 32 #include "core/dom/Document.h"
32 #include "core/fetch/CSSStyleSheetResource.h" 33 #include "core/fetch/CSSStyleSheetResource.h"
33 #include "core/fetch/DocumentResource.h" 34 #include "core/fetch/DocumentResource.h"
34 #include "core/fetch/FetchContext.h" 35 #include "core/fetch/FetchContext.h"
35 #include "core/fetch/FetchRequest.h" 36 #include "core/fetch/FetchRequest.h"
36 #include "core/fetch/FontResource.h" 37 #include "core/fetch/FontResource.h"
37 #include "core/fetch/ImageResource.h" 38 #include "core/fetch/ImageResource.h"
38 #include "core/fetch/MemoryCache.h" 39 #include "core/fetch/MemoryCache.h"
39 #include "core/fetch/RawResource.h" 40 #include "core/fetch/RawResource.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 case Resource::Script: 83 case Resource::Script:
83 return new ScriptResource(request, charset); 84 return new ScriptResource(request, charset);
84 case Resource::SVGDocument: 85 case Resource::SVGDocument:
85 return new DocumentResource(request, Resource::SVGDocument); 86 return new DocumentResource(request, Resource::SVGDocument);
86 case Resource::Font: 87 case Resource::Font:
87 return new FontResource(request); 88 return new FontResource(request);
88 case Resource::Raw: 89 case Resource::Raw:
89 case Resource::MainResource: 90 case Resource::MainResource:
90 return new RawResource(request, type); 91 return new RawResource(request, type);
91 case Resource::XSLStyleSheet: 92 case Resource::XSLStyleSheet:
93 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
92 return new XSLStyleSheetResource(request); 94 return new XSLStyleSheetResource(request);
93 case Resource::LinkPrefetch: 95 case Resource::LinkPrefetch:
94 return new Resource(request, Resource::LinkPrefetch); 96 return new Resource(request, Resource::LinkPrefetch);
95 case Resource::LinkSubresource: 97 case Resource::LinkSubresource:
96 return new Resource(request, Resource::LinkSubresource); 98 return new Resource(request, Resource::LinkSubresource);
97 case Resource::TextTrack: 99 case Resource::TextTrack:
98 return new TextTrackResource(request); 100 return new TextTrackResource(request);
99 case Resource::Shader: 101 case Resource::Shader:
100 return new ShaderResource(request); 102 return new ShaderResource(request);
101 case Resource::ImportResource: 103 case Resource::ImportResource:
(...skipping 16 matching lines...) Expand all
118 return ResourceLoadPriorityHigh; 120 return ResourceLoadPriorityHigh;
119 case Resource::Raw: 121 case Resource::Raw:
120 return request.options().synchronousPolicy == RequestSynchronously ? Res ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium; 122 return request.options().synchronousPolicy == RequestSynchronously ? Res ourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium;
121 case Resource::Script: 123 case Resource::Script:
122 case Resource::Font: 124 case Resource::Font:
123 case Resource::ImportResource: 125 case Resource::ImportResource:
124 return ResourceLoadPriorityMedium; 126 return ResourceLoadPriorityMedium;
125 case Resource::Image: 127 case Resource::Image:
126 return request.forPreload() ? ResourceLoadPriorityVeryLow : ResourceLoad PriorityLow; 128 return request.forPreload() ? ResourceLoadPriorityVeryLow : ResourceLoad PriorityLow;
127 case Resource::XSLStyleSheet: 129 case Resource::XSLStyleSheet:
130 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
128 return ResourceLoadPriorityHigh; 131 return ResourceLoadPriorityHigh;
129 case Resource::SVGDocument: 132 case Resource::SVGDocument:
130 return ResourceLoadPriorityLow; 133 return ResourceLoadPriorityLow;
131 case Resource::LinkPrefetch: 134 case Resource::LinkPrefetch:
132 return ResourceLoadPriorityVeryLow; 135 return ResourceLoadPriorityVeryLow;
133 case Resource::LinkSubresource: 136 case Resource::LinkSubresource:
134 return ResourceLoadPriorityLow; 137 return ResourceLoadPriorityLow;
135 case Resource::TextTrack: 138 case Resource::TextTrack:
136 return ResourceLoadPriorityLow; 139 return ResourceLoadPriorityLow;
137 case Resource::Shader: 140 case Resource::Shader:
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return static_cast<CSSStyleSheetResource*>(requestResource(Resource::CSSStyl eSheet, request).get()); 294 return static_cast<CSSStyleSheetResource*>(requestResource(Resource::CSSStyl eSheet, request).get());
292 } 295 }
293 296
294 ResourcePtr<ScriptResource> ResourceFetcher::fetchScript(FetchRequest& request) 297 ResourcePtr<ScriptResource> ResourceFetcher::fetchScript(FetchRequest& request)
295 { 298 {
296 return static_cast<ScriptResource*>(requestResource(Resource::Script, reques t).get()); 299 return static_cast<ScriptResource*>(requestResource(Resource::Script, reques t).get());
297 } 300 }
298 301
299 ResourcePtr<XSLStyleSheetResource> ResourceFetcher::fetchXSLStyleSheet(FetchRequ est& request) 302 ResourcePtr<XSLStyleSheetResource> ResourceFetcher::fetchXSLStyleSheet(FetchRequ est& request)
300 { 303 {
304 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
301 return static_cast<XSLStyleSheetResource*>(requestResource(Resource::XSLStyl eSheet, request).get()); 305 return static_cast<XSLStyleSheetResource*>(requestResource(Resource::XSLStyl eSheet, request).get());
302 } 306 }
303 307
304 ResourcePtr<DocumentResource> ResourceFetcher::fetchSVGDocument(FetchRequest& re quest) 308 ResourcePtr<DocumentResource> ResourceFetcher::fetchSVGDocument(FetchRequest& re quest)
305 { 309 {
306 return static_cast<DocumentResource*>(requestResource(Resource::SVGDocument, request).get()); 310 return static_cast<DocumentResource*>(requestResource(Resource::SVGDocument, request).get());
307 } 311 }
308 312
309 ResourcePtr<Resource> ResourceFetcher::fetchLinkResource(Resource::Type type, Fe tchRequest& request) 313 ResourcePtr<Resource> ResourceFetcher::fetchLinkResource(Resource::Type type, Fe tchRequest& request)
310 { 314 {
(...skipping 10 matching lines...) Expand all
321 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques t) 325 ResourcePtr<RawResource> ResourceFetcher::fetchMainResource(FetchRequest& reques t)
322 { 326 {
323 return static_cast<RawResource*>(requestResource(Resource::MainResource, req uest).get()); 327 return static_cast<RawResource*>(requestResource(Resource::MainResource, req uest).get());
324 } 328 }
325 329
326 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url, MixedContentBlockingTreatment treatment) const 330 bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url, MixedContentBlockingTreatment treatment) const
327 { 331 {
328 if (treatment == TreatAsDefaultForType) { 332 if (treatment == TreatAsDefaultForType) {
329 switch (type) { 333 switch (type) {
330 case Resource::Script: 334 case Resource::Script:
331 case Resource::XSLStyleSheet:
332 case Resource::SVGDocument: 335 case Resource::SVGDocument:
333 case Resource::CSSStyleSheet: 336 case Resource::CSSStyleSheet:
334 case Resource::ImportResource: 337 case Resource::ImportResource:
335 // These resource can inject script into the current document (Scrip t, 338 // These resource can inject script into the current document (Scrip t)
336 // XSL) or exfiltrate the content of the current document (CSS). 339 // or exfiltrate the content of the current document (CSS).
337 treatment = TreatAsActiveContent; 340 treatment = TreatAsActiveContent;
338 break; 341 break;
339 342
343 case Resource::XSLStyleSheet:
344 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
abarth-chromium 2013/10/01 15:06:09 I'm not sure this ASSERT is worth messing up the c
vivekg__ 2013/10/02 14:18:23 Done.
345 treatment = TreatAsActiveContent;
346 break;
347
340 case Resource::TextTrack: 348 case Resource::TextTrack:
341 case Resource::Shader: 349 case Resource::Shader:
342 case Resource::Raw: 350 case Resource::Raw:
343 case Resource::Image: 351 case Resource::Image:
344 case Resource::Font: 352 case Resource::Font:
345 // These resources can corrupt only the frame's pixels. 353 // These resources can corrupt only the frame's pixels.
346 treatment = TreatAsPassiveContent; 354 treatment = TreatAsPassiveContent;
347 break; 355 break;
348 356
349 case Resource::MainResource: 357 case Resource::MainResource:
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 case Resource::Shader: 407 case Resource::Shader:
400 case Resource::ImportResource: 408 case Resource::ImportResource:
401 // By default these types of resources can be loaded from any origin. 409 // By default these types of resources can be loaded from any origin.
402 // FIXME: Are we sure about Resource::Font? 410 // FIXME: Are we sure about Resource::Font?
403 if (options.requestOriginPolicy == RestrictToSameOrigin && !m_document-> securityOrigin()->canRequest(url)) { 411 if (options.requestOriginPolicy == RestrictToSameOrigin && !m_document-> securityOrigin()->canRequest(url)) {
404 printAccessDeniedMessage(url); 412 printAccessDeniedMessage(url);
405 return false; 413 return false;
406 } 414 }
407 break; 415 break;
408 case Resource::SVGDocument: 416 case Resource::SVGDocument:
409 case Resource::XSLStyleSheet:
410 if (!m_document->securityOrigin()->canRequest(url)) { 417 if (!m_document->securityOrigin()->canRequest(url)) {
411 printAccessDeniedMessage(url); 418 printAccessDeniedMessage(url);
412 return false; 419 return false;
420 }
421 break;
422 case Resource::XSLStyleSheet:
423 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
abarth-chromium 2013/10/01 15:06:09 You can do this with less duplicated code by putti
vivekg__ 2013/10/02 14:18:23 Done.
424 if (!m_document->securityOrigin()->canRequest(url)) {
425 printAccessDeniedMessage(url);
426 return false;
413 } 427 }
414 break; 428 break;
415 } 429 }
416 430
417 switch (type) { 431 switch (type) {
418 case Resource::XSLStyleSheet: 432 case Resource::XSLStyleSheet:
433 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
419 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowScriptFromSource(url)) 434 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowScriptFromSource(url))
420 return false; 435 return false;
421 break; 436 break;
422 case Resource::Script: 437 case Resource::Script:
423 case Resource::ImportResource: 438 case Resource::ImportResource:
424 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowScriptFromSource(url)) 439 if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentS ecurityPolicy()->allowScriptFromSource(url))
425 return false; 440 return false;
426 441
427 if (frame()) { 442 if (frame()) {
428 Settings* settings = frame()->settings(); 443 Settings* settings = frame()->settings();
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 ResourceRequest::TargetType targetType; 628 ResourceRequest::TargetType targetType;
614 629
615 switch (type) { 630 switch (type) {
616 case Resource::MainResource: 631 case Resource::MainResource:
617 if (frame()->tree()->parent()) 632 if (frame()->tree()->parent())
618 targetType = ResourceRequest::TargetIsSubframe; 633 targetType = ResourceRequest::TargetIsSubframe;
619 else 634 else
620 targetType = ResourceRequest::TargetIsMainFrame; 635 targetType = ResourceRequest::TargetIsMainFrame;
621 break; 636 break;
622 case Resource::CSSStyleSheet: 637 case Resource::CSSStyleSheet:
638 targetType = ResourceRequest::TargetIsStyleSheet;
639 break;
623 case Resource::XSLStyleSheet: 640 case Resource::XSLStyleSheet:
641 ASSERT(RuntimeEnabledFeatures::xsltEnabled());
abarth-chromium 2013/10/01 15:06:09 Same here.
vivekg__ 2013/10/02 14:18:23 Done.
624 targetType = ResourceRequest::TargetIsStyleSheet; 642 targetType = ResourceRequest::TargetIsStyleSheet;
625 break; 643 break;
626 case Resource::Script: 644 case Resource::Script:
627 targetType = ResourceRequest::TargetIsScript; 645 targetType = ResourceRequest::TargetIsScript;
628 break; 646 break;
629 case Resource::Font: 647 case Resource::Font:
630 targetType = ResourceRequest::TargetIsFont; 648 targetType = ResourceRequest::TargetIsFont;
631 break; 649 break;
632 case Resource::Image: 650 case Resource::Image:
633 targetType = ResourceRequest::TargetIsImage; 651 targetType = ResourceRequest::TargetIsImage;
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
1312 } 1330 }
1313 #endif 1331 #endif
1314 1332
1315 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() 1333 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions()
1316 { 1334 {
1317 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, UseDefaul tOriginRestrictionsForType, DocumentContext)); 1335 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffCon tent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientF orCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, UseDefaul tOriginRestrictionsForType, DocumentContext));
1318 return options; 1336 return options;
1319 } 1337 }
1320 1338
1321 } 1339 }
OLDNEW
« no previous file with comments | « no previous file | Source/core/fetch/XSLStyleSheetResource.cpp » ('j') | Source/core/fetch/XSLStyleSheetResource.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698