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

Side by Side Diff: sky/engine/core/fetch/ResourceFetcher.cpp

Issue 691623003: Remove Platform::parseDataURL (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 | « sky/engine/core/fetch/ResourceFetcher.h ('k') | sky/engine/public/platform/Platform.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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 return ResourceLoadPriorityLow; 107 return ResourceLoadPriorityLow;
108 case Resource::LinkPrefetch: 108 case Resource::LinkPrefetch:
109 return ResourceLoadPriorityVeryLow; 109 return ResourceLoadPriorityVeryLow;
110 case Resource::LinkSubresource: 110 case Resource::LinkSubresource:
111 return ResourceLoadPriorityLow; 111 return ResourceLoadPriorityLow;
112 } 112 }
113 ASSERT_NOT_REACHED(); 113 ASSERT_NOT_REACHED();
114 return ResourceLoadPriorityUnresolved; 114 return ResourceLoadPriorityUnresolved;
115 } 115 }
116 116
117 static Resource* resourceFromDataURIRequest(const ResourceRequest& request, cons t ResourceLoaderOptions& resourceOptions)
118 {
119 const KURL& url = request.url();
120 ASSERT(url.protocolIsData());
121
122 blink::WebString mimetype;
123 blink::WebString charset;
124 RefPtr<SharedBuffer> data = PassRefPtr<SharedBuffer>(blink::Platform::curren t()->parseDataURL(url, mimetype, charset));
125 if (!data)
126 return 0;
127 ResourceResponse response(url, mimetype, data->size(), charset, String());
128
129 Resource* resource = createResource(Resource::Image, request, charset);
130 resource->setOptions(resourceOptions);
131 resource->responseReceived(response);
132 if (data->size())
133 resource->setResourceBuffer(data);
134 resource->finish();
135 return resource;
136 }
137
138 static WebURLRequest::RequestContext requestContextFromType(const ResourceFetche r* fetcher, Resource::Type type) 117 static WebURLRequest::RequestContext requestContextFromType(const ResourceFetche r* fetcher, Resource::Type type)
139 { 118 {
140 switch (type) { 119 switch (type) {
141 case Resource::MainResource: 120 case Resource::MainResource:
142 // FIXME: Change this to a context frame type (once we introduce them): http://fetch.spec.whatwg.org/#concept-request-context-frame-type 121 // FIXME: Change this to a context frame type (once we introduce them): http://fetch.spec.whatwg.org/#concept-request-context-frame-type
143 return WebURLRequest::RequestContextHyperlink; 122 return WebURLRequest::RequestContextHyperlink;
144 case Resource::Font: 123 case Resource::Font:
145 return WebURLRequest::RequestContextFont; 124 return WebURLRequest::RequestContextFont;
146 case Resource::Image: 125 case Resource::Image:
147 return WebURLRequest::RequestContextImage; 126 return WebURLRequest::RequestContextImage;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 179
201 FetchContext& ResourceFetcher::context() const 180 FetchContext& ResourceFetcher::context() const
202 { 181 {
203 if (LocalFrame* frame = this->frame()) 182 if (LocalFrame* frame = this->frame())
204 return frame->fetchContext(); 183 return frame->fetchContext();
205 return FetchContext::nullInstance(); 184 return FetchContext::nullInstance();
206 } 185 }
207 186
208 ResourcePtr<ImageResource> ResourceFetcher::fetchImage(FetchRequest& request) 187 ResourcePtr<ImageResource> ResourceFetcher::fetchImage(FetchRequest& request)
209 { 188 {
210 if (request.resourceRequest().url().protocolIsData())
211 preCacheDataURIImage(request);
212
213 request.setDefer(clientDefersImage(request.resourceRequest().url()) ? FetchR equest::DeferredByClient : FetchRequest::NoDefer); 189 request.setDefer(clientDefersImage(request.resourceRequest().url()) ? FetchR equest::DeferredByClient : FetchRequest::NoDefer);
214 ResourcePtr<Resource> resource = requestResource(Resource::Image, request); 190 ResourcePtr<Resource> resource = requestResource(Resource::Image, request);
215 return resource && resource->type() == Resource::Image ? toImageResource(res ource) : 0; 191 return resource && resource->type() == Resource::Image ? toImageResource(res ource) : 0;
216 } 192 }
217 193
218 void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request)
219 {
220 const KURL& url = request.resourceRequest().url();
221 ASSERT(url.protocolIsData());
222
223 if (memoryCache()->resourceForURL(url))
224 return;
225
226 if (Resource* resource = resourceFromDataURIRequest(request.resourceRequest( ), request.options())) {
227 memoryCache()->add(resource);
228 scheduleDocumentResourcesGC();
229 }
230 }
231
232 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request) 194 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request)
233 { 195 {
234 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 196 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
235 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textFont); 197 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textFont);
236 return toFontResource(requestResource(Resource::Font, request)); 198 return toFontResource(requestResource(Resource::Font, request));
237 } 199 }
238 200
239 bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res ourceLoaderOptions& options, bool forPreload, FetchRequest::OriginRestriction or iginRestriction) const 201 bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res ourceLoaderOptions& options, bool forPreload, FetchRequest::OriginRestriction or iginRestriction) const
240 { 202 {
241 // FIXME(sky): Remove 203 // FIXME(sky): Remove
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 case Revalidate: 892 case Revalidate:
931 ++m_revalidateCount; 893 ++m_revalidateCount;
932 return; 894 return;
933 case Use: 895 case Use:
934 ++m_useCount; 896 ++m_useCount;
935 return; 897 return;
936 } 898 }
937 } 899 }
938 900
939 } 901 }
OLDNEW
« no previous file with comments | « sky/engine/core/fetch/ResourceFetcher.h ('k') | sky/engine/public/platform/Platform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698