• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
Initialize()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 
InitializeForUnitTests(scoped_ptr<ui::ContextFactory> test_factory)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
Terminate()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
GetInstance()45 ImageTransportFactory* ImageTransportFactory::GetInstance() {
46   return g_factory;
47 }
48 
49 }  // namespace content
50