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

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

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