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

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

Issue 355043002: Fix loading of data: URI images wrt loadsImagesAutomatically setting (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 return ResourceLoadPriorityVeryLow; 136 return ResourceLoadPriorityVeryLow;
137 case Resource::LinkSubresource: 137 case Resource::LinkSubresource:
138 return ResourceLoadPriorityLow; 138 return ResourceLoadPriorityLow;
139 case Resource::TextTrack: 139 case Resource::TextTrack:
140 return ResourceLoadPriorityLow; 140 return ResourceLoadPriorityLow;
141 } 141 }
142 ASSERT_NOT_REACHED(); 142 ASSERT_NOT_REACHED();
143 return ResourceLoadPriorityUnresolved; 143 return ResourceLoadPriorityUnresolved;
144 } 144 }
145 145
146 static Resource* resourceFromDataURIRequest(const ResourceRequest& request, cons t ResourceLoaderOptions& resourceOptions) 146 static Resource* imageResourceFromDataURIRequest(const ResourceRequest& request, const ResourceLoaderOptions& resourceOptions)
147 { 147 {
148 const KURL& url = request.url(); 148 const KURL& url = request.url();
149 ASSERT(url.protocolIsData()); 149 ASSERT(url.protocolIsData());
150 150
151 blink::WebString mimetype; 151 blink::WebString mimetype;
152 blink::WebString charset; 152 blink::WebString charset;
153 RefPtr<SharedBuffer> data = PassRefPtr<SharedBuffer>(blink::Platform::curren t()->parseDataURL(url, mimetype, charset)); 153 RefPtr<SharedBuffer> data = PassRefPtr<SharedBuffer>(blink::Platform::curren t()->parseDataURL(url, mimetype, charset));
154 if (!data) 154 if (!data)
155 return 0; 155 return 0;
156 ResourceResponse response(url, mimetype, data->size(), charset, String()); 156 ResourceResponse response(url, mimetype, data->size(), charset, String());
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 } 295 }
296 296
297 void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request) 297 void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request)
298 { 298 {
299 const KURL& url = request.resourceRequest().url(); 299 const KURL& url = request.resourceRequest().url();
300 ASSERT(url.protocolIsData()); 300 ASSERT(url.protocolIsData());
301 301
302 if (memoryCache()->resourceForURL(url)) 302 if (memoryCache()->resourceForURL(url))
303 return; 303 return;
304 304
305 if (Resource* resource = resourceFromDataURIRequest(request.resourceRequest( ), request.options())) { 305 if (Resource* resource = imageResourceFromDataURIRequest(request.resourceReq uest(), request.options())) {
306 memoryCache()->add(resource); 306 memoryCache()->add(resource);
307 scheduleDocumentResourcesGC(); 307 scheduleDocumentResourcesGC();
308 } 308 }
309 } 309 }
310 310
311 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request) 311 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request)
312 { 312 {
313 return toFontResource(requestResource(Resource::Font, request)); 313 return toFontResource(requestResource(Resource::Font, request));
314 } 314 }
315 315
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 return newResource; 863 return newResource;
864 } 864 }
865 865
866 ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(Resource::Type t ype, FetchRequest& request, const String& charset) 866 ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(Resource::Type t ype, FetchRequest& request, const String& charset)
867 { 867 {
868 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url())); 868 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url()));
869 869
870 WTF_LOG(ResourceLoading, "Loading Resource for '%s'.", request.resourceReque st().url().elidedString().latin1().data()); 870 WTF_LOG(ResourceLoading, "Loading Resource for '%s'.", request.resourceReque st().url().elidedString().latin1().data());
871 871
872 addAdditionalRequestHeaders(request.mutableResourceRequest(), type); 872 addAdditionalRequestHeaders(request.mutableResourceRequest(), type);
873 ResourcePtr<Resource> resource = createResource(type, request.resourceReques t(), charset); 873 // data: URI images are a special case because they must ignore autoLoadImag es setting.
874 ResourcePtr<Resource> resource = type == Resource::Image && request.resource Request().url().protocolIsData() ?
eseidel 2014/06/26 16:24:35 Do we want to just push this logic down into creat
mnaganov (inactive) 2014/06/26 16:42:40 I don't think so, because imageResourceFromDataURI
875 imageResourceFromDataURIRequest(request.resourceRequest(), request.optio ns()) :
876 createResource(type, request.resourceRequest(), charset);
874 877
875 memoryCache()->add(resource.get()); 878 memoryCache()->add(resource.get());
876 return resource; 879 return resource;
877 } 880 }
878 881
879 void ResourceFetcher::storeResourceTimingInitiatorInformation(Resource* resource ) 882 void ResourceFetcher::storeResourceTimingInitiatorInformation(Resource* resource )
880 { 883 {
881 if (resource->options().requestInitiatorContext != DocumentContext) 884 if (resource->options().requestInitiatorContext != DocumentContext)
882 return; 885 return;
883 886
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 } 1488 }
1486 } 1489 }
1487 1490
1488 void ResourceFetcher::trace(Visitor* visitor) 1491 void ResourceFetcher::trace(Visitor* visitor)
1489 { 1492 {
1490 visitor->trace(m_document); 1493 visitor->trace(m_document);
1491 ResourceLoaderHost::trace(visitor); 1494 ResourceLoaderHost::trace(visitor);
1492 } 1495 }
1493 1496
1494 } 1497 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698