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 11namespace content { 12 13// static 14RenderFrameHostFactory* RenderFrameHostFactory::factory_ = NULL; 15 16// static 17scoped_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 38void RenderFrameHostFactory::RegisterFactory(RenderFrameHostFactory* factory) { 39 DCHECK(!factory_) << "Can't register two factories at once."; 40 factory_ = factory; 41} 42 43// static 44void RenderFrameHostFactory::UnregisterFactory() { 45 DCHECK(factory_) << "No factory to unregister."; 46 factory_ = NULL; 47} 48 49} // namespace content 50