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
3// found in the LICENSE file.
4
5#ifndef CONTENT_TEST_TEST_RENDER_VIEW_HOST_FACTORY_H_
6#define CONTENT_TEST_TEST_RENDER_VIEW_HOST_FACTORY_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "content/browser/renderer_host/render_view_host_factory.h"
11
12namespace content {
13
14class SiteInstance;
15class RenderViewHostDelegate;
16class RenderProcessHostFactory;
17class SessionStorageNamespace;
18
19// Manages creation of the RenderViewHosts using our special subclass. This
20// automatically registers itself when it goes in scope, and unregisters itself
21// when it goes out of scope. Since you can't have more than one factory
22// registered at a time, you can only have one of these objects at a time.
23class TestRenderViewHostFactory : public RenderViewHostFactory {
24 public:
25  explicit TestRenderViewHostFactory(RenderProcessHostFactory* rph_factory);
26  virtual ~TestRenderViewHostFactory();
27
28  virtual void set_render_process_host_factory(
29      RenderProcessHostFactory* rph_factory);
30  virtual RenderViewHost* CreateRenderViewHost(
31      SiteInstance* instance,
32      RenderViewHostDelegate* delegate,
33      RenderWidgetHostDelegate* widget_delegate,
34      int routing_id,
35      int main_frame_routing_id,
36      bool swapped_out) OVERRIDE;
37
38 private:
39  DISALLOW_COPY_AND_ASSIGN(TestRenderViewHostFactory);
40};
41
42}  // namespace content
43
44#endif  // CONTENT_TEST_TEST_RENDER_VIEW_HOST_FACTORY_H_
45