context_factories_for_test.cc revision 1e9bf3e0803691d0a228da41fc608347b6db4340
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/default_context_factory.h" 12#include "ui/compositor/test/test_context_factory.h" 13 14namespace ui { 15 16static ContextFactory* g_implicit_factory = NULL; 17 18// static 19void InitializeContextFactoryForTests(bool allow_test_contexts) { 20 DCHECK(!g_implicit_factory) << 21 "ContextFactory for tests already initialized."; 22 23 bool use_test_contexts = true; 24 25 // Always use test contexts unless the disable command line flag is used. 26 CommandLine* command_line = CommandLine::ForCurrentProcess(); 27 if (command_line->HasSwitch(switches::kDisableTestCompositor)) 28 use_test_contexts = false; 29 30#if defined(OS_CHROMEOS) 31 // If the test is running on the chromeos envrionment (such as 32 // device or vm bots), always use real contexts. 33 if (base::SysInfo::IsRunningOnChromeOS()) 34 use_test_contexts = false; 35#endif 36 37 if (!allow_test_contexts) 38 use_test_contexts = false; 39 40 if (use_test_contexts) { 41 g_implicit_factory = new ui::TestContextFactory; 42 } else { 43 DVLOG(1) << "Using DefaultContextFactory"; 44 scoped_ptr<ui::DefaultContextFactory> instance( 45 new ui::DefaultContextFactory()); 46 if (instance->Initialize()) 47 g_implicit_factory = instance.release(); 48 } 49 ContextFactory::SetInstance(g_implicit_factory); 50} 51 52void TerminateContextFactoryForTests() { 53 ContextFactory::SetInstance(NULL); 54 delete g_implicit_factory; 55 g_implicit_factory = NULL; 56} 57 58} // namespace ui 59