summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_view.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r--chrome/renderer/render_view.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 734514b..67f816c 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -842,6 +842,11 @@ void RenderView::OnNavigate(const ViewMsg_Navigate_Params& params) {
if (!is_reload)
request->SetHistoryState(params.state);
+ if (!params.referrer.is_empty()) {
+ request->SetHttpHeaderValue(L"Referer",
+ UTF8ToWide(params.referrer.spec()));
+ }
+
main_frame->LoadRequest(request.get());
}
@@ -1523,7 +1528,7 @@ WindowOpenDisposition RenderView::DispositionForNavigationAction(
if (enable_dom_ui_bindings_ ||
frame->GetInViewSourceMode() ||
url.SchemeIs("view-source")) {
- OpenURL(webview, url, disposition);
+ OpenURL(webview, url, GURL(), disposition);
return IGNORE_ACTION; // Suppress the load here.
}
}
@@ -1560,7 +1565,7 @@ WindowOpenDisposition RenderView::DispositionForNavigationAction(
type == WebNavigationTypeOther;
if (is_fork) {
// Open the URL via the browser, not via WebKit.
- OpenURL(webview, url, disposition);
+ OpenURL(webview, url, GURL(), disposition);
return IGNORE_ACTION;
}
@@ -1825,8 +1830,9 @@ void RenderView::OnMissingPluginStatus(WebPluginDelegate* delegate,
}
void RenderView::OpenURL(WebView* webview, const GURL& url,
+ const GURL& referrer,
WindowOpenDisposition disposition) {
- Send(new ViewHostMsg_OpenURL(routing_id_, url, disposition));
+ Send(new ViewHostMsg_OpenURL(routing_id_, url, referrer, disposition));
}
// We are supposed to get a single call to Show for a newly created RenderView