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

Side by Side Diff: content/browser/renderer_host/render_message_filter.cc

Issue 2821473002: Service CreateNewWindow on the UI thread with a new mojo interface (Closed)
Patch Set: MakeShared goodness Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_message_filter.h" 5 #include "content/browser/renderer_host/render_message_filter.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 BrowserThread::ID* thread) { 192 BrowserThread::ID* thread) {
193 if (message.type() == ViewHostMsg_MediaLogEvents::ID) 193 if (message.type() == ViewHostMsg_MediaLogEvents::ID)
194 *thread = BrowserThread::UI; 194 *thread = BrowserThread::UI;
195 } 195 }
196 196
197 void RenderMessageFilter::GenerateRoutingID( 197 void RenderMessageFilter::GenerateRoutingID(
198 const GenerateRoutingIDCallback& callback) { 198 const GenerateRoutingIDCallback& callback) {
199 callback.Run(render_widget_helper_->GetNextRoutingID()); 199 callback.Run(render_widget_helper_->GetNextRoutingID());
200 } 200 }
201 201
202 void RenderMessageFilter::CreateNewWindow(
203 mojom::CreateNewWindowParamsPtr params,
204 const CreateNewWindowCallback& callback) {
205 bool no_javascript_access;
206 bool can_create_window = GetContentClient()->browser()->CanCreateWindow(
207 render_process_id_, params->opener_render_frame_id, params->opener_url,
208 params->opener_top_level_frame_url, params->opener_security_origin,
209 params->window_container_type, params->target_url, params->referrer,
210 params->frame_name, params->disposition, *params->features,
211 params->user_gesture, params->opener_suppressed, resource_context_,
212 &no_javascript_access);
213
214 mojom::CreateNewWindowReplyPtr reply = mojom::CreateNewWindowReply::New();
215 if (!can_create_window) {
216 reply->route_id = MSG_ROUTING_NONE;
217 reply->main_frame_route_id = MSG_ROUTING_NONE;
218 reply->main_frame_widget_route_id = MSG_ROUTING_NONE;
219 reply->cloned_session_storage_namespace_id = 0;
220 return callback.Run(std::move(reply));
221 }
222
223 // This will clone the sessionStorage for namespace_id_to_clone.
224 scoped_refptr<SessionStorageNamespaceImpl> cloned_namespace =
225 new SessionStorageNamespaceImpl(dom_storage_context_.get(),
226 params->session_storage_namespace_id);
227 reply->cloned_session_storage_namespace_id = cloned_namespace->id();
228
229 render_widget_helper_->CreateNewWindow(
230 std::move(params), no_javascript_access, &reply->route_id,
231 &reply->main_frame_route_id, &reply->main_frame_widget_route_id,
232 cloned_namespace.get());
233 callback.Run(std::move(reply));
234 }
235
236 void RenderMessageFilter::CreateNewWidget( 202 void RenderMessageFilter::CreateNewWidget(
237 int32_t opener_id, 203 int32_t opener_id,
238 blink::WebPopupType popup_type, 204 blink::WebPopupType popup_type,
239 const CreateNewWidgetCallback& callback) { 205 const CreateNewWidgetCallback& callback) {
240 int route_id = MSG_ROUTING_NONE; 206 int route_id = MSG_ROUTING_NONE;
241 render_widget_helper_->CreateNewWidget(opener_id, popup_type, &route_id); 207 render_widget_helper_->CreateNewWidget(opener_id, popup_type, &route_id);
242 callback.Run(route_id); 208 callback.Run(route_id);
243 } 209 }
244 210
245 void RenderMessageFilter::CreateFullscreenWidget( 211 void RenderMessageFilter::CreateFullscreenWidget(
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 } 353 }
388 354
389 void RenderMessageFilter::GetHasGpuProcessCallback( 355 void RenderMessageFilter::GetHasGpuProcessCallback(
390 std::unique_ptr<IPC::Message> reply, 356 std::unique_ptr<IPC::Message> reply,
391 bool has_gpu) { 357 bool has_gpu) {
392 ChildProcessHostMsg_HasGpuProcess::WriteReplyParams(reply.get(), has_gpu); 358 ChildProcessHostMsg_HasGpuProcess::WriteReplyParams(reply.get(), has_gpu);
393 Send(reply.release()); 359 Send(reply.release());
394 } 360 }
395 361
396 } // namespace content 362 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698