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 #include "content/browser/frame_host/render_frame_host_factory.h"
6
7 #include "base/logging.h"
8 #include "content/browser/frame_host/frame_tree_node.h"
9 #include "content/browser/frame_host/render_frame_host_impl.h"
10
11 namespace content {
12
13 // static
14 RenderFrameHostFactory* RenderFrameHostFactory::factory_ = NULL;
15
16 // static
Create(RenderViewHostImpl * render_view_host,RenderFrameHostDelegate * delegate,FrameTree * frame_tree,FrameTreeNode * frame_tree_node,int routing_id,bool is_swapped_out)17 scoped_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
18 RenderViewHostImpl* render_view_host,
19 RenderFrameHostDelegate* delegate,
20 FrameTree* frame_tree,
21 FrameTreeNode* frame_tree_node,
22 int routing_id,
23 bool is_swapped_out) {
24 if (factory_) {
25 return factory_->CreateRenderFrameHost(render_view_host,
26 delegate,
27 frame_tree,
28 frame_tree_node,
29 routing_id,
30 is_swapped_out).Pass();
31 }
32 return make_scoped_ptr(new RenderFrameHostImpl(
33 render_view_host, delegate, frame_tree, frame_tree_node, routing_id,
34 is_swapped_out));
35 }
36
37 // static
RegisterFactory(RenderFrameHostFactory * factory)38 void RenderFrameHostFactory::RegisterFactory(RenderFrameHostFactory* factory) {
39 DCHECK(!factory_) << "Can't register two factories at once.";
40 factory_ = factory;
41 }
42
43 // static
UnregisterFactory()44 void RenderFrameHostFactory::UnregisterFactory() {
45 DCHECK(factory_) << "No factory to unregister.";
46 factory_ = NULL;
47 }
48
49 } // namespace content
50