Home | History | Annotate | Download | only in frame_host
      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
     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
     38 void RenderFrameHostFactory::RegisterFactory(RenderFrameHostFactory* factory) {
     39   DCHECK(!factory_) << "Can't register two factories at once.";
     40   factory_ = factory;
     41 }
     42 
     43 // static
     44 void RenderFrameHostFactory::UnregisterFactory() {
     45   DCHECK(factory_) << "No factory to unregister.";
     46   factory_ = NULL;
     47 }
     48 
     49 }  // namespace content
     50