diff options
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 12 |
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 |