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 |