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

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

Issue 2353003004: 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 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 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 26 matching lines...) Expand all
37 #include "content/browser/renderer_host/pepper/pepper_security_helper.h" 37 #include "content/browser/renderer_host/pepper/pepper_security_helper.h"
38 #include "content/browser/renderer_host/render_process_host_impl.h" 38 #include "content/browser/renderer_host/render_process_host_impl.h"
39 #include "content/browser/renderer_host/render_view_host_delegate.h" 39 #include "content/browser/renderer_host/render_view_host_delegate.h"
40 #include "content/browser/renderer_host/render_widget_helper.h" 40 #include "content/browser/renderer_host/render_widget_helper.h"
41 #include "content/browser/resource_context_impl.h" 41 #include "content/browser/resource_context_impl.h"
42 #include "content/common/cache_storage/cache_storage_types.h" 42 #include "content/common/cache_storage/cache_storage_types.h"
43 #include "content/common/child_process_host_impl.h" 43 #include "content/common/child_process_host_impl.h"
44 #include "content/common/child_process_messages.h" 44 #include "content/common/child_process_messages.h"
45 #include "content/common/content_constants_internal.h" 45 #include "content/common/content_constants_internal.h"
46 #include "content/common/host_shared_bitmap_manager.h" 46 #include "content/common/host_shared_bitmap_manager.h"
47 #include "content/common/render_message_filter.mojom.h"
47 #include "content/common/render_process_messages.h" 48 #include "content/common/render_process_messages.h"
48 #include "content/common/view_messages.h" 49 #include "content/common/view_messages.h"
49 #include "content/public/browser/browser_child_process_host.h" 50 #include "content/public/browser/browser_child_process_host.h"
50 #include "content/public/browser/browser_context.h" 51 #include "content/public/browser/browser_context.h"
51 #include "content/public/browser/browser_thread.h" 52 #include "content/public/browser/browser_thread.h"
52 #include "content/public/browser/content_browser_client.h" 53 #include "content/public/browser/content_browser_client.h"
53 #include "content/public/browser/resource_context.h" 54 #include "content/public/browser/resource_context.h"
54 #include "content/public/browser/user_metrics.h" 55 #include "content/public/browser/user_metrics.h"
55 #include "content/public/common/content_switches.h" 56 #include "content/public/common/content_switches.h"
56 #include "content/public/common/context_menu_params.h" 57 #include "content/public/common/context_menu_params.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 BrowserGpuMemoryBufferManager::current(); 160 BrowserGpuMemoryBufferManager::current();
160 if (gpu_memory_buffer_manager) 161 if (gpu_memory_buffer_manager)
161 gpu_memory_buffer_manager->ProcessRemoved(PeerHandle(), render_process_id_); 162 gpu_memory_buffer_manager->ProcessRemoved(PeerHandle(), render_process_id_);
162 HostDiscardableSharedMemoryManager::current()->ProcessRemoved( 163 HostDiscardableSharedMemoryManager::current()->ProcessRemoved(
163 render_process_id_); 164 render_process_id_);
164 } 165 }
165 166
166 bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message) { 167 bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message) {
167 bool handled = true; 168 bool handled = true;
168 IPC_BEGIN_MESSAGE_MAP(RenderMessageFilter, message) 169 IPC_BEGIN_MESSAGE_MAP(RenderMessageFilter, message)
169 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWindow, OnCreateWindow)
170 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnCreateWidget) 170 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnCreateWidget)
171 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateFullscreenWidget, 171 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateFullscreenWidget,
172 OnCreateFullscreenWidget) 172 OnCreateFullscreenWidget)
173 #if defined(OS_MACOSX) 173 #if defined(OS_MACOSX)
174 // On Mac, the IPCs ViewHostMsg_SwapCompositorFrame, ViewHostMsg_UpdateRect, 174 // On Mac, the IPCs ViewHostMsg_SwapCompositorFrame, ViewHostMsg_UpdateRect,
175 // and GpuCommandBufferMsg_SwapBuffersCompleted need to be handled in a 175 // and GpuCommandBufferMsg_SwapBuffersCompleted need to be handled in a
176 // nested message loop during resize. 176 // nested message loop during resize.
177 IPC_MESSAGE_HANDLER_GENERIC( 177 IPC_MESSAGE_HANDLER_GENERIC(
178 ViewHostMsg_SwapCompositorFrame, 178 ViewHostMsg_SwapCompositorFrame,
179 ResizeHelperPostMsgToUIThread(render_process_id_, message)) 179 ResizeHelperPostMsgToUIThread(render_process_id_, message))
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 const_cast<RenderMessageFilter*>(this)->resource_context_ = nullptr; 233 const_cast<RenderMessageFilter*>(this)->resource_context_ = nullptr;
234 BrowserThread::DeleteOnIOThread::Destruct(this); 234 BrowserThread::DeleteOnIOThread::Destruct(this);
235 } 235 }
236 236
237 void RenderMessageFilter::OverrideThreadForMessage(const IPC::Message& message, 237 void RenderMessageFilter::OverrideThreadForMessage(const IPC::Message& message,
238 BrowserThread::ID* thread) { 238 BrowserThread::ID* thread) {
239 if (message.type() == ViewHostMsg_MediaLogEvents::ID) 239 if (message.type() == ViewHostMsg_MediaLogEvents::ID)
240 *thread = BrowserThread::UI; 240 *thread = BrowserThread::UI;
241 } 241 }
242 242
243 void RenderMessageFilter::OnCreateWindow(
244 const ViewHostMsg_CreateWindow_Params& params,
245 ViewHostMsg_CreateWindow_Reply* reply) {
246 bool no_javascript_access;
247
248 bool can_create_window =
249 GetContentClient()->browser()->CanCreateWindow(
250 params.opener_url,
251 params.opener_top_level_frame_url,
252 params.opener_security_origin,
253 params.window_container_type,
254 params.target_url,
255 params.referrer,
256 params.frame_name,
257 params.disposition,
258 params.features,
259 params.user_gesture,
260 params.opener_suppressed,
261 resource_context_,
262 render_process_id_,
263 params.opener_id,
264 params.opener_render_frame_id,
265 &no_javascript_access);
266
267 if (!can_create_window) {
268 reply->route_id = MSG_ROUTING_NONE;
269 reply->main_frame_route_id = MSG_ROUTING_NONE;
270 reply->main_frame_widget_route_id = MSG_ROUTING_NONE;
271 reply->cloned_session_storage_namespace_id = 0;
272 return;
273 }
274
275 // This will clone the sessionStorage for namespace_id_to_clone.
276 scoped_refptr<SessionStorageNamespaceImpl> cloned_namespace =
277 new SessionStorageNamespaceImpl(dom_storage_context_.get(),
278 params.session_storage_namespace_id);
279 reply->cloned_session_storage_namespace_id = cloned_namespace->id();
280
281 render_widget_helper_->CreateNewWindow(
282 params, no_javascript_access, PeerHandle(), &reply->route_id,
283 &reply->main_frame_route_id, &reply->main_frame_widget_route_id,
284 cloned_namespace.get());
285 }
286
287 void RenderMessageFilter::OnCreateWidget(int opener_id, 243 void RenderMessageFilter::OnCreateWidget(int opener_id,
288 blink::WebPopupType popup_type, 244 blink::WebPopupType popup_type,
289 int* route_id) { 245 int* route_id) {
290 render_widget_helper_->CreateNewWidget(opener_id, popup_type, route_id); 246 render_widget_helper_->CreateNewWidget(opener_id, popup_type, route_id);
291 } 247 }
292 248
293 void RenderMessageFilter::OnCreateFullscreenWidget(int opener_id, 249 void RenderMessageFilter::OnCreateFullscreenWidget(int opener_id,
294 int* route_id) { 250 int* route_id) {
295 render_widget_helper_->CreateNewFullscreenWidget(opener_id, route_id); 251 render_widget_helper_->CreateNewFullscreenWidget(opener_id, route_id);
296 } 252 }
297 253
298 void RenderMessageFilter::GenerateRoutingID( 254 void RenderMessageFilter::GenerateRoutingID(
299 const GenerateRoutingIDCallback& callback) { 255 const GenerateRoutingIDCallback& callback) {
300 callback.Run(render_widget_helper_->GetNextRoutingID()); 256 callback.Run(render_widget_helper_->GetNextRoutingID());
301 } 257 }
302 258
259 void RenderMessageFilter::CreateWindow(mojom::CreateWindowParamsPtr params,
260 const CreateWindowCallback& callback) {
261 bool no_javascript_access;
262 bool can_create_window =
263 GetContentClient()->browser()->CanCreateWindow(
264 params->opener_url,
265 params->opener_top_level_frame_url,
266 params->opener_security_origin,
267 params->window_container_type,
268 params->target_url,
269 params->referrer,
270 params->frame_name,
271 params->disposition,
272 params->features,
273 params->user_gesture,
274 params->opener_suppressed,
275 resource_context_,
276 render_process_id_,
277 params->opener_id,
278 params->opener_render_frame_id,
279 &no_javascript_access);
280
281 mojom::CreateWindowReplyPtr reply = mojom::CreateWindowReply::New();
282 if (!can_create_window) {
283 reply->route_id = MSG_ROUTING_NONE;
284 reply->main_frame_route_id = MSG_ROUTING_NONE;
285 reply->main_frame_widget_route_id = MSG_ROUTING_NONE;
286 reply->cloned_session_storage_namespace_id = 0;
287 return callback.Run(std::move(reply));
288 }
289
290 // This will clone the sessionStorage for namespace_id_to_clone.
291 scoped_refptr<SessionStorageNamespaceImpl> cloned_namespace =
292 new SessionStorageNamespaceImpl(dom_storage_context_.get(),
293 params->session_storage_namespace_id);
294 reply->cloned_session_storage_namespace_id = cloned_namespace->id();
295
296 render_widget_helper_->CreateNewWindow(
297 std::move(params), no_javascript_access, PeerHandle(), &reply->route_id,
298 &reply->main_frame_route_id, &reply->main_frame_widget_route_id,
299 cloned_namespace.get());
300 callback.Run(std::move(reply));
301 }
302
303 #if defined(OS_MACOSX) 303 #if defined(OS_MACOSX)
304 304
305 void RenderMessageFilter::OnLoadFont(const FontDescriptor& font, 305 void RenderMessageFilter::OnLoadFont(const FontDescriptor& font,
306 IPC::Message* reply_msg) { 306 IPC::Message* reply_msg) {
307 FontLoader::Result* result = new FontLoader::Result; 307 FontLoader::Result* result = new FontLoader::Result;
308 308
309 BrowserThread::PostTaskAndReply( 309 BrowserThread::PostTaskAndReply(
310 BrowserThread::FILE, FROM_HERE, 310 BrowserThread::FILE, FROM_HERE,
311 base::Bind(&FontLoader::LoadFont, font, result), 311 base::Bind(&FontLoader::LoadFont, font, result),
312 base::Bind(&RenderMessageFilter::SendLoadFontReply, this, reply_msg, 312 base::Bind(&RenderMessageFilter::SendLoadFontReply, this, reply_msg,
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 void RenderMessageFilter::OnDeletedGpuMemoryBuffer( 679 void RenderMessageFilter::OnDeletedGpuMemoryBuffer(
680 gfx::GpuMemoryBufferId id, 680 gfx::GpuMemoryBufferId id,
681 const gpu::SyncToken& sync_token) { 681 const gpu::SyncToken& sync_token) {
682 DCHECK(BrowserGpuMemoryBufferManager::current()); 682 DCHECK(BrowserGpuMemoryBufferManager::current());
683 683
684 BrowserGpuMemoryBufferManager::current()->ChildProcessDeletedGpuMemoryBuffer( 684 BrowserGpuMemoryBufferManager::current()->ChildProcessDeletedGpuMemoryBuffer(
685 id, PeerHandle(), render_process_id_, sync_token); 685 id, PeerHandle(), render_process_id_, sync_token);
686 } 686 }
687 687
688 } // namespace content 688 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_message_filter.h ('k') | content/browser/renderer_host/render_view_host_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698