1// Copyright 2014 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 "base/bind.h"
6#include "base/test/launcher/unit_test_launcher.h"
7#include "base/test/test_suite.h"
8#include "build/build_config.h"
9#include "media/base/media.h"
10#include "third_party/WebKit/public/web/WebKit.h"
11
12#if defined(OS_ANDROID)
13#include "base/android/jni_android.h"
14#include "media/base/android/media_jni_registrar.h"
15#include "ui/gl/android/gl_jni_registrar.h"
16#endif
17
18class TestBlinkPlatformSupport : NON_EXPORTED_BASE(public blink::Platform) {
19 public:
20  virtual ~TestBlinkPlatformSupport();
21
22  virtual void cryptographicallyRandomValues(unsigned char* buffer,
23                                             size_t length) OVERRIDE;
24  virtual const unsigned char* getTraceCategoryEnabledFlag(
25      const char* categoryName) OVERRIDE;
26};
27
28TestBlinkPlatformSupport::~TestBlinkPlatformSupport() {}
29
30void TestBlinkPlatformSupport::cryptographicallyRandomValues(
31    unsigned char* buffer,
32    size_t length) {
33}
34
35const unsigned char* TestBlinkPlatformSupport::getTraceCategoryEnabledFlag(
36    const char* categoryName) {
37  static const unsigned char tracingIsDisabled = 0;
38  return &tracingIsDisabled;
39}
40
41class BlinkMediaTestSuite : public base::TestSuite {
42 public:
43  BlinkMediaTestSuite(int argc, char** argv);
44  virtual ~BlinkMediaTestSuite();
45
46 protected:
47  virtual void Initialize() OVERRIDE;
48
49 private:
50  scoped_ptr<TestBlinkPlatformSupport> blink_platform_support_;
51};
52
53BlinkMediaTestSuite::BlinkMediaTestSuite(int argc, char** argv)
54    : TestSuite(argc, argv),
55      blink_platform_support_(new TestBlinkPlatformSupport()) {
56}
57
58BlinkMediaTestSuite::~BlinkMediaTestSuite() {}
59
60void BlinkMediaTestSuite::Initialize() {
61  // Run TestSuite::Initialize first so that logging is initialized.
62  base::TestSuite::Initialize();
63
64#if defined(OS_ANDROID)
65  // Register JNI bindings for android.
66  JNIEnv* env = base::android::AttachCurrentThread();
67  // Needed for surface texture support.
68  ui::gl::android::RegisterJni(env);
69  media::RegisterJni(env);
70#endif
71
72  // Run this here instead of main() to ensure an AtExitManager is already
73  // present.
74  media::InitializeMediaLibraryForTesting();
75
76  blink::initialize(blink_platform_support_.get());
77}
78
79int main(int argc, char** argv) {
80  BlinkMediaTestSuite test_suite(argc, argv);
81
82  return base::LaunchUnitTests(
83      argc, argv, base::Bind(&BlinkMediaTestSuite::Run,
84                             base::Unretained(&test_suite)));
85}
86