summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorkundaji <kundaji@chromium.org>2015-03-09 11:00:37 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-09 18:01:09 +0000
commit6c7f969a830fe55df8b3be5a55305168b1c26106 (patch)
treead87facbf97bf53b97b01e3d566fb5a260e51ff6 /content
parent44387769f2355f32123e461d25d32689f9537332 (diff)
downloadchromium_src-6c7f969a830fe55df8b3be5a55305168b1c26106.zip
chromium_src-6c7f969a830fe55df8b3be5a55305168b1c26106.tar.gz
chromium_src-6c7f969a830fe55df8b3be5a55305168b1c26106.tar.bz2
Request uncompressed images from data reduction proxy when saving.
When user saves an image, add headers requesting a pass through from the data reduction proxy. Without this, images will be saved in webp format which is not supported by most image viewers. BUG=464436 Review URL: https://codereview.chromium.org/988453002 Cr-Commit-Position: refs/heads/master@{#319681}
Diffstat (limited to 'content')
-rw-r--r--content/browser/web_contents/web_contents_impl.cc20
-rw-r--r--content/browser/web_contents/web_contents_impl.h3
-rw-r--r--content/public/browser/web_contents.h10
3 files changed, 31 insertions, 2 deletions
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 8e7d5b7..e89f17a 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2302,6 +2302,12 @@ bool WebContentsImpl::SavePage(const base::FilePath& main_file,
void WebContentsImpl::SaveFrame(const GURL& url,
const Referrer& referrer) {
+ SaveFrameWithHeaders(url, referrer, std::string());
+}
+
+void WebContentsImpl::SaveFrameWithHeaders(const GURL& url,
+ const Referrer& referrer,
+ const std::string& headers) {
if (!GetLastCommittedURL().is_valid())
return;
if (delegate_ && delegate_->SaveFrame(url, referrer))
@@ -2325,10 +2331,22 @@ void WebContentsImpl::SaveFrame(const GURL& url,
DownloadUrlParameters::FromWebContents(this, url));
params->set_referrer(referrer);
params->set_post_id(post_id);
- params->set_prefer_cache(true);
if (post_id >= 0)
params->set_method("POST");
params->set_prompt(true);
+
+ if (headers.empty()) {
+ params->set_prefer_cache(true);
+ } else {
+ std::vector<std::string> key_value_list;
+ base::SplitString(headers, '\n', &key_value_list);
+ for (const auto& key_value : key_value_list) {
+ std::vector<std::string> pair;
+ base::SplitString(key_value, ':', &pair);
+ DCHECK_EQ(2ul, pair.size());
+ params->add_request_header(pair[0], pair[1]);
+ }
+ }
dlm->DownloadUrl(params.Pass());
}
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index c2777eb..e28edd2 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -306,6 +306,9 @@ class CONTENT_EXPORT WebContentsImpl
const base::FilePath& dir_path,
SavePageType save_type) override;
void SaveFrame(const GURL& url, const Referrer& referrer) override;
+ void SaveFrameWithHeaders(const GURL& url,
+ const Referrer& referrer,
+ const std::string& headers) override;
void GenerateMHTML(const base::FilePath& file,
const base::Callback<void(int64)>& callback) override;
const std::string& GetContentsMimeType() const override;
diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
index cdb7de0..abdda45 100644
--- a/content/public/browser/web_contents.h
+++ b/content/public/browser/web_contents.h
@@ -474,10 +474,18 @@ class WebContents : public PageNavigator,
const base::FilePath& dir_path,
SavePageType save_type) = 0;
- // Saves the given frame's URL to the local filesystem..
+ // Saves the given frame's URL to the local filesystem.
virtual void SaveFrame(const GURL& url,
const Referrer& referrer) = 0;
+ // Saves the given frame's URL to the local filesystem. The headers, if
+ // provided, is used to make a request to the URL rather than using cache.
+ // Format of |headers| is a new line separated list of key value pairs:
+ // "<key1>: <value1>\n<key2>: <value2>".
+ virtual void SaveFrameWithHeaders(const GURL& url,
+ const Referrer& referrer,
+ const std::string& headers) = 0;
+
// Generate an MHTML representation of the current page in the given file.
virtual void GenerateMHTML(
const base::FilePath& file,