| Index: content/child/web_url_loader_impl.cc
|
| diff --git a/content/child/web_url_loader_impl.cc b/content/child/web_url_loader_impl.cc
|
| index ba560b65593dff68bbdce1f7e24b8028acd8cb12..aa4ab08231ddcbbbe33015af25718f5f1e93f857 100644
|
| --- a/content/child/web_url_loader_impl.cc
|
| +++ b/content/child/web_url_loader_impl.cc
|
| @@ -244,7 +244,7 @@ class WebURLLoaderImpl::Context : public base::RefCounted<Context>,
|
| virtual ~Context() {}
|
|
|
| // We can optimize the handling of data URLs in most cases.
|
| - bool CanHandleDataURL(const GURL& url) const;
|
| + bool CanHandleDataURLRequestLocally() const;
|
| void HandleDataURL();
|
|
|
| WebURLLoaderImpl* loader_;
|
| @@ -312,7 +312,7 @@ void WebURLLoaderImpl::Context::Start(const WebURLRequest& request,
|
| request_ = request; // Save the request.
|
|
|
| GURL url = request.url();
|
| - if (url.SchemeIs("data") && CanHandleDataURL(url)) {
|
| + if (CanHandleDataURLRequestLocally()) {
|
| if (sync_load_response) {
|
| // This is a sync load. Do the work now.
|
| sync_load_response->url = url;
|
| @@ -656,8 +656,15 @@ void WebURLLoaderImpl::Context::OnCompletedRequest(
|
| }
|
| }
|
|
|
| -bool WebURLLoaderImpl::Context::CanHandleDataURL(const GURL& url) const {
|
| - DCHECK(url.SchemeIs("data"));
|
| +bool WebURLLoaderImpl::Context::CanHandleDataURLRequestLocally() const {
|
| + GURL url = request_.url();
|
| + if (!url.SchemeIs("data"))
|
| + return false;
|
| +
|
| + // The fast paths for data URL, Start() and HandleDataURL(), don't support
|
| + // the downloadToFile option.
|
| + if (request_.downloadToFile())
|
| + return false;
|
|
|
| // Optimize for the case where we can handle a data URL locally. We must
|
| // skip this for data URLs targetted at frames since those could trigger a
|
| @@ -679,7 +686,7 @@ bool WebURLLoaderImpl::Context::CanHandleDataURL(const GURL& url) const {
|
| return true;
|
|
|
| std::string mime_type, unused_charset;
|
| - if (net::DataURL::Parse(url, &mime_type, &unused_charset, NULL) &&
|
| + if (net::DataURL::Parse(request_.url(), &mime_type, &unused_charset, NULL) &&
|
| net::IsSupportedMimeType(mime_type))
|
| return true;
|
|
|
|
|