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)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/bind.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/command_line.h"
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/test/launcher/unit_test_launcher.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/test/test_suite.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "build/build_config.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "media/base/media.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "media/base/media_switches.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_ANDROID)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/android/jni_android.h"
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/android/media_jni_registrar.h"
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ui/gl/android/gl_jni_registrar.h"
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestSuiteNoAtExit : public base::TestSuite {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestSuiteNoAtExit(int argc, char** argv) : TestSuite(argc, argv) {}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~TestSuiteNoAtExit() {}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void Initialize() OVERRIDE;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestSuiteNoAtExit::Initialize() {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Run TestSuite::Initialize first so that logging is initialized.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TestSuite::Initialize();
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  command_line->AppendSwitch(switches::kEnableInbandTextTracks);
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_ANDROID)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Register JNI bindings for android.
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  JNIEnv* env = base::android::AttachCurrentThread();
37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // Needed for surface texture support.
38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  ui::gl::android::RegisterJni(env);
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  media::RegisterJni(env);
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Run this here instead of main() to ensure an AtExitManager is already
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // present.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  media::InitializeMediaLibraryForTesting();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main(int argc, char** argv) {
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  TestSuiteNoAtExit test_suite(argc, argv);
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return base::LaunchUnitTests(
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      argc, argv, base::Bind(&TestSuiteNoAtExit::Run,
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                             base::Unretained(&test_suite)));
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
54