| Index: chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| index 8b1f54547a36a5301418e68b6e521c204cc1aece..3758462437f8e8c920999054ad36e3200b8d906c 100644
|
| --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| @@ -1534,15 +1534,18 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
|
|
|
| case IDC_CONTENT_CONTEXT_SAVELINKAS: {
|
| RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
|
| - const GURL& referrer =
|
| - params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| const GURL& url = params_.link_url;
|
| + const GURL& referring_url =
|
| + params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| + content::Referrer referrer = content::Referrer::SanitizeForRequest(
|
| + url,
|
| + content::Referrer(referring_url.GetAsReferrer(),
|
| + params_.referrer_policy));
|
| DownloadManager* dlm =
|
| BrowserContext::GetDownloadManager(browser_context_);
|
| scoped_ptr<DownloadUrlParameters> dl_params(
|
| DownloadUrlParameters::FromWebContents(source_web_contents_, url));
|
| - dl_params->set_referrer(
|
| - content::Referrer(referrer, params_.referrer_policy));
|
| + dl_params->set_referrer(referrer);
|
| dl_params->set_referrer_encoding(params_.frame_charset);
|
| dl_params->set_suggested_name(params_.suggested_filename);
|
| dl_params->set_prompt(true);
|
| @@ -1558,11 +1561,14 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
|
| } else {
|
| // TODO(zino): We can use SaveImageAt() like a case of canvas.
|
| RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
|
| - const GURL& referrer =
|
| - params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| const GURL& url = params_.src_url;
|
| - source_web_contents_->SaveFrame(url, content::Referrer(
|
| - referrer, params_.referrer_policy));
|
| + const GURL& referring_url =
|
| + params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| + content::Referrer referrer = content::Referrer::SanitizeForRequest(
|
| + url,
|
| + content::Referrer(referring_url.GetAsReferrer(),
|
| + params_.referrer_policy));
|
| + source_web_contents_->SaveFrame(url, referrer);
|
| }
|
| break;
|
| }
|
| @@ -1974,8 +1980,10 @@ void RenderViewContextMenu::OpenURL(
|
| const GURL& url, const GURL& referring_url,
|
| WindowOpenDisposition disposition,
|
| content::PageTransition transition) {
|
| - content::Referrer referrer(referring_url.GetAsReferrer(),
|
| - params_.referrer_policy);
|
| + content::Referrer referrer = content::Referrer::SanitizeForRequest(
|
| + url,
|
| + content::Referrer(referring_url.GetAsReferrer(),
|
| + params_.referrer_policy));
|
|
|
| if (params_.link_url == url && disposition != OFF_THE_RECORD)
|
| params_.custom_context.link_followed = url;
|
|
|