- add sources.
[platform/framework/web/crosswalk.git] / src / content / browser / aura / image_transport_factory.cc
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