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

Unified Diff: content/child/web_url_loader_impl.cc

Issue 480413007: [WebURLLoaderImpl] Don't respond to data URL request if downloadToFile is set (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed #18 Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698