Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index a23022d868b4d50e97c987b672a53812c5d68694..0f8cd9c0ddf75911381829e894ffffd77699cd92 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -397,6 +397,7 @@ RenderViewImpl::RenderViewImpl( |
navigation_gesture_(NavigationGestureUnknown), |
opened_by_user_gesture_(true), |
opener_suppressed_(false), |
+ new_window_navigation_policy_(WebKit::WebNavigationPolicyIgnore), |
page_id_(-1), |
last_page_id_sent_to_browser_(-1), |
next_page_id_(next_page_id), |
@@ -1384,6 +1385,12 @@ bool RenderViewImpl::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) { |
// WebKit::WebViewClient ------------------------------------------------------ |
+// TODO(creis): Should this be on WebViewClient or WebFrameClient? |
darin (slow to review)
2012/02/14 00:15:56
navigation related callbacks typically live on Web
|
+void RenderViewImpl::didSetNextNavigationPolicy( |
+ WebKit::WebNavigationPolicy policy) { |
+ new_window_navigation_policy_ = policy; |
Charlie Reis
2012/02/07 02:19:55
I'm not thrilled about this, but I haven't found a
|
+} |
+ |
WebView* RenderViewImpl::createView( |
WebFrame* creator, |
const WebURLRequest& request, |
@@ -1403,13 +1410,18 @@ 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(new_window_navigation_policy_); |
if (!request.isNull()) |
params.target_url = request.url(); |
+ // Clear the disposition before the next navigation. |
+ new_window_navigation_policy_ = WebKit::WebNavigationPolicyIgnore; |
+ |
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, |
@@ -1433,7 +1445,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()); |