• 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/test/content_test_suite.h"
6 
7 #include "base/base_paths.h"
8 #include "base/logging.h"
9 #include "content/public/common/content_client.h"
10 #include "content/public/common/content_paths.h"
11 #include "content/public/test/test_content_client_initializer.h"
12 #include "gpu/config/gpu_util.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 
15 #if defined(OS_WIN)
16 #include "ui/gfx/win/dpi.h"
17 #endif
18 
19 #if defined(OS_MACOSX)
20 #include "base/mac/scoped_nsautorelease_pool.h"
21 #endif
22 
23 #if !defined(OS_IOS)
24 #include "base/base_switches.h"
25 #include "base/command_line.h"
26 #include "media/base/media.h"
27 #include "ui/gl/gl_surface.h"
28 #endif
29 
30 namespace {
31 
32 class TestInitializationListener : public testing::EmptyTestEventListener {
33  public:
TestInitializationListener()34   TestInitializationListener() : test_content_client_initializer_(NULL) {
35   }
36 
OnTestStart(const testing::TestInfo & test_info)37   virtual void OnTestStart(const testing::TestInfo& test_info) OVERRIDE {
38     test_content_client_initializer_ =
39         new content::TestContentClientInitializer();
40   }
41 
OnTestEnd(const testing::TestInfo & test_info)42   virtual void OnTestEnd(const testing::TestInfo& test_info) OVERRIDE {
43     delete test_content_client_initializer_;
44   }
45 
46  private:
47   content::TestContentClientInitializer* test_content_client_initializer_;
48 
49   DISALLOW_COPY_AND_ASSIGN(TestInitializationListener);
50 };
51 
52 }  // namespace
53 
54 namespace content {
55 
ContentTestSuite(int argc,char ** argv)56 ContentTestSuite::ContentTestSuite(int argc, char** argv)
57     : ContentTestSuiteBase(argc, argv) {
58 }
59 
~ContentTestSuite()60 ContentTestSuite::~ContentTestSuite() {
61 }
62 
Initialize()63 void ContentTestSuite::Initialize() {
64 #if defined(OS_MACOSX)
65   base::mac::ScopedNSAutoreleasePool autorelease_pool;
66 #endif
67 
68 #if defined(OS_WIN)
69   gfx::InitDeviceScaleFactor(1.0f);
70 #endif
71 
72   ContentTestSuiteBase::Initialize();
73   {
74     ContentClient client;
75     ContentTestSuiteBase::RegisterContentSchemes(&client);
76   }
77   RegisterPathProvider();
78 #if !defined(OS_IOS)
79   media::InitializeMediaLibraryForTesting();
80   // When running in a child process for Mac sandbox tests, the sandbox exists
81   // to initialize GL, so don't do it here.
82   if (!CommandLine::ForCurrentProcess()->HasSwitch(
83       switches::kTestChildProcess)) {
84     gfx::GLSurface::InitializeOneOffForTests();
85     gpu::ApplyGpuDriverBugWorkarounds(CommandLine::ForCurrentProcess());
86   }
87 #endif
88   testing::TestEventListeners& listeners =
89       testing::UnitTest::GetInstance()->listeners();
90   listeners.Append(new TestInitializationListener);
91 }
92 
93 }  // namespace content
94