Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 8e729f3f1f7f8ebc5d4520c46e64e2211bca0e4e..3826f7a79da8c78c6ee575a1bce82922ac54d248 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -1429,22 +1429,12 @@ bool RenderViewImpl::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) { |
// WebKit::WebViewClient ------------------------------------------------------ |
-// TODO(creis): New contract for createView temporarily redirects to the old |
-// contract. Remove the old one as part of http://crbug.com/69267. |
WebView* RenderViewImpl::createView( |
WebFrame* creator, |
const WebURLRequest& request, |
const WebWindowFeatures& features, |
const WebString& frame_name, |
WebNavigationPolicy policy) { |
- return createView(creator, request, features, frame_name); |
-} |
- |
-WebView* RenderViewImpl::createView( |
- WebFrame* creator, |
- const WebURLRequest& request, |
- const WebWindowFeatures& features, |
- const WebString& frame_name) { |
// Check to make sure we aren't overloading on popups. |
if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) |
return NULL; |
@@ -1459,13 +1449,14 @@ WebView* RenderViewImpl::createView( |
params.opener_url = creator->document().url(); |
params.opener_security_origin = |
creator->document().securityOrigin().toString().utf8(); |
+ params.opener_suppressed = creator->willSuppressOpenerInNewFrame(); |
+ params.disposition = NavigationPolicyToDisposition(policy); |
if (!request.isNull()) |
params.target_url = request.url(); |
int32 routing_id = MSG_ROUTING_NONE; |
int32 surface_id = 0; |
int64 cloned_session_storage_namespace_id; |
- bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); |
RenderThread::Get()->Send( |
new ViewHostMsg_CreateWindow(params, |
@@ -1490,7 +1481,7 @@ WebView* RenderViewImpl::createView( |
view->opened_by_user_gesture_ = params.user_gesture; |
// Record whether the creator frame is trying to suppress the opener field. |
- view->opener_suppressed_ = opener_suppressed; |
+ view->opener_suppressed_ = params.opener_suppressed; |
// Record the security origin of the creator. |
GURL creator_url(creator->document().securityOrigin().toString().utf8()); |
@@ -2358,33 +2349,7 @@ WebNavigationPolicy RenderViewImpl::decidePolicyForNavigation( |
// Must be a JavaScript navigation, which appears as "other". |
type == WebKit::WebNavigationTypeOther; |
- // Recognize if this navigation is from a link with rel=noreferrer and |
- // target=_blank attributes, in which case the opener will be suppressed. If |
- // so, it is safe to load cross-site pages in a separate process, so we |
- // should let the browser handle it. |
- bool is_noreferrer_and_blank_target = |
- // Frame should be top level and not yet navigated. |
- frame->parent() == NULL && |
- frame->document().url().isEmpty() && |
- historyBackListCount() < 1 && |
- historyForwardListCount() < 1 && |
- // Links with rel=noreferrer will have no Referer field, and their |
- // resulting frame will have its window.opener suppressed. |
- // TODO(creis): should add a request.httpReferrer() method to help avoid |
- // typos on the unusual spelling of Referer. |
- request.httpHeaderField(WebString::fromUTF8("Referer")).isNull() && |
- opener_suppressed_ && |
- frame->opener() == NULL && |
- // Links with target=_blank will have no name. |
- frame->name().isNull() && |
- // Another frame (with a non-empty creator) should have initiated the |
- // request, targeted at this frame. |
- !creator_url_.is_empty() && |
- is_content_initiated && |
- default_policy == WebKit::WebNavigationPolicyCurrentTab && |
- type == WebKit::WebNavigationTypeOther; |
- |
- if (is_fork || is_noreferrer_and_blank_target) { |
+ if (is_fork) { |
// Open the URL via the browser, not via WebKit. |
OpenURL(frame, url, Referrer(), default_policy); |
return WebKit::WebNavigationPolicyIgnore; |