context_factories_for_test.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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 "ui/compositor/test/context_factories_for_test.h"
6
7#include "base/command_line.h"
8#include "base/sys_info.h"
9#include "ui/compositor/compositor.h"
10#include "ui/compositor/compositor_switches.h"
11#include "ui/compositor/test/in_process_context_factory.h"
12#include "ui/gl/gl_implementation.h"
13
14namespace {
15
16static ui::ContextFactory* g_implicit_factory = NULL;
17static gfx::DisableNullDrawGLBindings* g_disable_null_draw = NULL;
18
19}  // namespace
20
21namespace ui {
22
23// static
24ui::ContextFactory* InitializeContextFactoryForTests(bool enable_pixel_output) {
25  DCHECK(!g_implicit_factory) <<
26      "ContextFactory for tests already initialized.";
27  CommandLine* command_line = CommandLine::ForCurrentProcess();
28  if (command_line->HasSwitch(switches::kEnablePixelOutputInTests))
29    enable_pixel_output = true;
30  if (enable_pixel_output)
31    g_disable_null_draw = new gfx::DisableNullDrawGLBindings;
32  g_implicit_factory = new InProcessContextFactory();
33  return g_implicit_factory;
34}
35
36void TerminateContextFactoryForTests() {
37  delete g_implicit_factory;
38  g_implicit_factory = NULL;
39  delete g_disable_null_draw;
40  g_disable_null_draw = NULL;
41}
42
43}  // namespace ui
44