1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_MESSAGE_FILTER_H_
6#define CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_MESSAGE_FILTER_H_
7
8#include "content/public/browser/browser_message_filter.h"
9
10namespace content {
11class RenderWidgetHelper;
12
13// RenderFrameMessageFilter intercepts FrameHost messages on the IO thread
14// that require low-latency processing. The canonical example of this is
15// child-frame creation which is a sync IPC that provides the renderer
16// with the routing id for a newly created RenderFrame.
17//
18// This object is created on the UI thread and used on the IO thread.
19class RenderFrameMessageFilter : public BrowserMessageFilter {
20 public:
21  RenderFrameMessageFilter(int render_process_id,
22                           RenderWidgetHelper* render_widget_helper);
23
24  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
25
26 private:
27  virtual ~RenderFrameMessageFilter();
28
29  void OnCreateChildFrame(int parent_routing_id,
30                          const std::string& frame_name,
31                          int* new_render_frame_id);
32
33  const int render_process_id_;
34
35  // Needed for issuing routing ids and surface ids.
36  scoped_refptr<RenderWidgetHelper> render_widget_helper_;
37};
38
39}  // namespace content
40
41#endif  // CONTENT_BROWSER_FRAME_HOST_RENDER_FRAME_MESSAGE_FILTER_H_
42