15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/test/content_test_suite.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/base_paths.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/public/common/content_client.h"
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/public/common/content_paths.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_content_client_initializer.h"
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "gpu/config/gpu_util.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(OS_WIN)
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/gfx/win/dpi.h"
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/mac/scoped_nsautorelease_pool.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if !defined(OS_IOS)
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/base_switches.h"
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/command_line.h"
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "media/base/media.h"
27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/gl/gl_surface.h"
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestInitializationListener : public testing::EmptyTestEventListener {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestInitializationListener() : test_content_client_initializer_(NULL) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnTestStart(const testing::TestInfo& test_info) OVERRIDE {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_content_client_initializer_ =
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new content::TestContentClientInitializer();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnTestEnd(const testing::TestInfo& test_info) OVERRIDE {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    delete test_content_client_initializer_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::TestContentClientInitializer* test_content_client_initializer_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestInitializationListener);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentTestSuite::ContentTestSuite(int argc, char** argv)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : ContentTestSuiteBase(argc, argv) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentTestSuite::~ContentTestSuite() {
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ContentTestSuite::Initialize() {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::mac::ScopedNSAutoreleasePool autorelease_pool;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(OS_WIN)
69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  gfx::InitDeviceScaleFactor(1.0f);
70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif
71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentTestSuiteBase::Initialize();
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  {
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ContentClient client;
7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ContentTestSuiteBase::RegisterContentSchemes(&client);
7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
7723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  RegisterPathProvider();
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if !defined(OS_IOS)
7923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  media::InitializeMediaLibraryForTesting();
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // When running in a child process for Mac sandbox tests, the sandbox exists
815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // to initialize GL, so don't do it here.
82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  if (!CommandLine::ForCurrentProcess()->HasSwitch(
83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      switches::kTestChildProcess)) {
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    gfx::GLSurface::InitializeOneOffForTests();
85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    gpu::ApplyGpuDriverBugWorkarounds(CommandLine::ForCurrentProcess());
86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  }
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  testing::TestEventListeners& listeners =
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      testing::UnitTest::GetInstance()->listeners();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  listeners.Append(new TestInitializationListener);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
94