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
30namespace {
31
32class TestInitializationListener : public testing::EmptyTestEventListener {
33 public:
34  TestInitializationListener() : test_content_client_initializer_(NULL) {
35  }
36
37  virtual void OnTestStart(const testing::TestInfo& test_info) OVERRIDE {
38    test_content_client_initializer_ =
39        new content::TestContentClientInitializer();
40  }
41
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
54namespace content {
55
56ContentTestSuite::ContentTestSuite(int argc, char** argv)
57    : ContentTestSuiteBase(argc, argv) {
58}
59
60ContentTestSuite::~ContentTestSuite() {
61}
62
63void 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