Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Unified Diff: content/renderer/render_view_impl.cc

Issue 2363573002: Move ViewHostMsg_CreateWindow to mojom (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 9516ef9989038bac3b80cdd989925bdb3e61e454..52e13f12d26fbdd8e6cdab503ce298b443208e6e 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -52,6 +52,7 @@
#include "content/common/frame_replication_state.h"
#include "content/common/input_messages.h"
#include "content/common/page_messages.h"
+#include "content/common/render_message_filter.mojom.h"
#include "content/common/site_isolation_policy.h"
#include "content/common/view_messages.h"
#include "content/public/common/bindings_policy.h"
@@ -1503,18 +1504,18 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
const WebString& frame_name,
WebNavigationPolicy policy,
bool suppress_opener) {
- ViewHostMsg_CreateWindow_Params params;
- params.opener_id = GetRoutingID();
- params.user_gesture = WebUserGestureIndicator::isProcessingUserGesture();
+ mojom::CreateNewWindowParamsPtr params = mojom::CreateNewWindowParams::New();
+ params->opener_id = GetRoutingID();
+ params->user_gesture = WebUserGestureIndicator::isProcessingUserGesture();
if (GetContentClient()->renderer()->AllowPopup())
- params.user_gesture = true;
- params.window_container_type = WindowFeaturesToContainerType(features);
- params.session_storage_namespace_id = session_storage_namespace_id_;
+ params->user_gesture = true;
+ params->window_container_type = WindowFeaturesToContainerType(features);
+ params->session_storage_namespace_id = session_storage_namespace_id_;
if (frame_name != "_blank")
- params.frame_name = base::UTF16ToUTF8(base::StringPiece16(frame_name));
- params.opener_render_frame_id =
+ params->frame_name = base::UTF16ToUTF8(base::StringPiece16(frame_name));
+ params->opener_render_frame_id =
RenderFrameImpl::FromWebFrame(creator)->GetRoutingID();
- params.opener_url = creator->document().url();
+ params->opener_url = creator->document().url();
// The browser process uses the top frame's URL for a content settings check
// to determine whether the popup is allowed. If the top frame is remote,
@@ -1526,9 +1527,9 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
// path-based matching for file URLs from content settings. See
// https://crbug.com/466297.
if (creator->top()->isWebLocalFrame()) {
- params.opener_top_level_frame_url = creator->top()->document().url();
+ params->opener_top_level_frame_url = creator->top()->document().url();
} else {
- params.opener_top_level_frame_url =
+ params->opener_top_level_frame_url =
blink::WebStringToGURL(creator->top()->getSecurityOrigin().toString());
}
@@ -1536,22 +1537,26 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
creator->document().getSecurityOrigin().toString()));
if (!security_url.is_valid())
security_url = GURL();
- params.opener_security_origin = security_url;
- params.opener_suppressed = suppress_opener;
- params.disposition = NavigationPolicyToDisposition(policy);
+ params->opener_security_origin = security_url;
+ params->opener_suppressed = suppress_opener;
+ params->disposition = NavigationPolicyToDisposition(policy);
if (!request.isNull()) {
- params.target_url = request.url();
- params.referrer = GetReferrerFromRequest(creator, request);
+ params->target_url = request.url();
+ params->referrer = GetReferrerFromRequest(creator, request);
}
- params.features = features;
+ params->features = features;
- for (size_t i = 0; i < features.additionalFeatures.size(); ++i)
- params.additional_features.push_back(features.additionalFeatures[i]);
+ // We preserve this information before sending the message since |params| is
+ // moved on send.
+ bool is_background_tab =
+ params->disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB;
+ bool opened_by_user_gesture = params->user_gesture;
- ViewHostMsg_CreateWindow_Reply reply;
- RenderThread::Get()->Send(new ViewHostMsg_CreateWindow(params, &reply));
- if (reply.route_id == MSG_ROUTING_NONE)
- return NULL;
+ mojom::CreateNewWindowReplyPtr reply;
+ RenderThreadImpl::current_render_message_filter()->CreateNewWindow(
ncarter (slow) 2016/09/27 20:32:41 Why use this global and getter? Is it just about a
Ken Rockot(use gerrit already) 2016/09/27 21:05:42 Yeah, this was a semi-painful way to avoid exposin
ncarter (slow) 2016/09/27 22:47:52 I'd prefer to keep the singleton interfaces lookin
+ std::move(params), &reply);
+ if (reply->route_id == MSG_ROUTING_NONE)
+ return nullptr;
WebUserGestureIndicator::consumeUserGesture();
@@ -1578,16 +1583,15 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
view_params.window_was_created_with_opener = true;
view_params.renderer_preferences = renderer_preferences_;
view_params.web_preferences = webkit_preferences_;
- view_params.view_id = reply.route_id;
- view_params.main_frame_routing_id = reply.main_frame_route_id;
- view_params.main_frame_widget_routing_id = reply.main_frame_widget_route_id;
+ view_params.view_id = reply->route_id;
+ view_params.main_frame_routing_id = reply->main_frame_route_id;
+ view_params.main_frame_widget_routing_id = reply->main_frame_widget_route_id;
view_params.session_storage_namespace_id =
- reply.cloned_session_storage_namespace_id;
+ reply->cloned_session_storage_namespace_id;
view_params.swapped_out = false;
// WebCore will take care of setting the correct name.
view_params.replicated_frame_state = FrameReplicationState();
- view_params.hidden =
- (params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB);
+ view_params.hidden = is_background_tab;
view_params.never_visible = never_visible;
view_params.next_page_id = 1;
view_params.initial_size = initial_size;
@@ -1598,7 +1602,7 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
RenderViewImpl* view =
RenderViewImpl::Create(compositor_deps_, view_params, true);
- view->opened_by_user_gesture_ = params.user_gesture;
+ view->opened_by_user_gesture_ = opened_by_user_gesture;
return view->webview();
}

Powered by Google App Engine
This is Rietveld 408576698