Home | History | Annotate | Download | only in aura
      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 #include "content/browser/aura/image_transport_factory.h"
      6 
      7 #include "content/browser/aura/gpu_process_transport_factory.h"
      8 #include "content/browser/aura/no_transport_image_transport_factory.h"
      9 #include "ui/compositor/compositor.h"
     10 
     11 namespace content {
     12 
     13 namespace {
     14 ImageTransportFactory* g_factory = NULL;
     15 bool g_initialized_for_unit_tests = false;
     16 }
     17 
     18 // static
     19 void ImageTransportFactory::Initialize() {
     20   DCHECK(!g_factory || g_initialized_for_unit_tests);
     21   if (g_initialized_for_unit_tests)
     22     return;
     23   g_factory = new GpuProcessTransportFactory;
     24   ui::ContextFactory::SetInstance(g_factory->AsContextFactory());
     25 }
     26 
     27 void ImageTransportFactory::InitializeForUnitTests(
     28     scoped_ptr<ui::ContextFactory> test_factory) {
     29   DCHECK(!g_factory);
     30   DCHECK(!g_initialized_for_unit_tests);
     31   g_initialized_for_unit_tests = true;
     32   g_factory = new NoTransportImageTransportFactory(test_factory.Pass());
     33   ui::ContextFactory::SetInstance(g_factory->AsContextFactory());
     34 }
     35 
     36 // static
     37 void ImageTransportFactory::Terminate() {
     38   ui::ContextFactory::SetInstance(NULL);
     39   delete g_factory;
     40   g_factory = NULL;
     41   g_initialized_for_unit_tests = false;
     42 }
     43 
     44 // static
     45 ImageTransportFactory* ImageTransportFactory::GetInstance() {
     46   return g_factory;
     47 }
     48 
     49 }  // namespace content
     50