Chromium Code Reviews| Index: content/browser/renderer_host/render_frame_message_filter.cc |
| diff --git a/content/browser/renderer_host/render_frame_message_filter.cc b/content/browser/renderer_host/render_frame_message_filter.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fc8a07f1a46af1d396bbc93ad6d18d53eb9e17eb |
| --- /dev/null |
| +++ b/content/browser/renderer_host/render_frame_message_filter.cc |
| @@ -0,0 +1,70 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
|
Charlie Reis
2013/09/27 19:19:21
nit: New files should be 2013.
awong
2013/09/27 20:50:09
Done.
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/browser/renderer_host/render_frame_message_filter.h" |
| + |
| +#include "content/browser/renderer_host/render_frame_host_impl.h" |
| +#include "content/browser/renderer_host/render_widget_helper.h" |
| +#include "content/common/frame_messages.h" |
| +#include "content/public/browser/browser_thread.h" |
| + |
| +namespace content { |
| + |
| +namespace { |
| + |
| +void CreateChildFrameOnUI(int process_id, |
| + int parent_render_frame_id, |
| + int64 parent_frame_id, |
| + int64 frame_id, |
| + const std::string& frame_name, |
| + int new_render_frame_id) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + RenderFrameHostImpl* render_frame_host = |
| + RenderFrameHostImpl::FromID(process_id, parent_render_frame_id); |
| + // Handles the RenderFrameHost being deleted on the UI thread while |
| + // processing a subframe creation message. |
| + if (render_frame_host) |
|
Charlie Reis
2013/09/27 19:19:21
Add braces for multi-line body.
awong
2013/09/27 20:50:09
Done.
|
| + render_frame_host->OnCreateChildFrame(new_render_frame_id, |
| + parent_frame_id, frame_id, |
| + frame_name); |
| +} |
| + |
| +} // namespace |
| + |
| +RenderFrameMessageFilter::RenderFrameMessageFilter( |
| + int render_process_id, |
| + RenderWidgetHelper* render_widget_helper) |
| + : render_process_id_(render_process_id), |
| + render_widget_helper_(render_widget_helper) { |
| +} |
| + |
| +RenderFrameMessageFilter::~RenderFrameMessageFilter() { |
| +} |
| + |
| +bool RenderFrameMessageFilter::OnMessageReceived(const IPC::Message& message, |
| + bool* message_was_ok) { |
| + bool handled = true; |
| + IPC_BEGIN_MESSAGE_MAP_EX(RenderFrameMessageFilter, message, *message_was_ok) |
| + IPC_MESSAGE_HANDLER(FrameHostMsg_CreateChildFrame, OnCreateChildFrame) |
| + IPC_MESSAGE_UNHANDLED(handled = false) |
| + IPC_END_MESSAGE_MAP_EX() |
| + |
| + return handled; |
| +} |
| + |
| +void RenderFrameMessageFilter::OnCreateChildFrame( |
| + int parent_render_frame_id, |
| + int64 parent_frame_id, |
| + int64 frame_id, |
| + const std::string& frame_name, |
| + int* new_render_frame_id) { |
| + *new_render_frame_id = render_widget_helper_->GetNextRoutingID(); |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, |
| + base::Bind(&CreateChildFrameOnUI, render_process_id_, |
| + parent_render_frame_id, parent_frame_id, frame_id, frame_name, |
| + *new_render_frame_id)); |
| +} |
| + |
| +} // namespace content |