OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include "webrtc/api/test/androidtestinitializer.h" | |
12 | |
13 #include <pthread.h> | |
14 | |
15 #include "webrtc/base/ignore_wundef.h" | |
16 | |
17 // Note: this dependency is dangerous since it reaches into Chromium's base. | |
18 // There's a risk of e.g. macro clashes. This file may only be used in tests. | |
19 // Since we use Chromes build system for creating the gtest binary, this should | |
20 // be fine. | |
21 RTC_PUSH_IGNORING_WUNDEF() | |
22 #include "base/android/context_utils.h" | |
23 #include "base/android/jni_android.h" | |
24 RTC_POP_IGNORING_WUNDEF() | |
25 | |
26 #include "webrtc/base/checks.h" | |
27 #include "webrtc/base/ssladapter.h" | |
28 #include "webrtc/voice_engine/include/voe_base.h" | |
29 | |
30 namespace webrtc { | |
31 | |
32 namespace { | |
33 | |
34 static pthread_once_t g_initialize_once = PTHREAD_ONCE_INIT; | |
35 | |
36 // There can only be one JNI_OnLoad in each binary. So since this is a GTEST | |
37 // C++ runner binary, we want to initialize the same global objects we normally | |
38 // do if this had been a Java binary. | |
39 void EnsureInitializedOnce() { | |
40 RTC_CHECK(::base::android::IsVMInitialized()); | |
41 JNIEnv* jni = ::base::android::AttachCurrentThread(); | |
42 JavaVM* jvm = NULL; | |
43 RTC_CHECK_EQ(0, jni->GetJavaVM(&jvm)); | |
44 jobject context = ::base::android::GetApplicationContext().obj(); | |
45 | |
46 RTC_CHECK(rtc::InitializeSSL()) << "Failed to InitializeSSL()"; | |
47 | |
48 webrtc::VoiceEngine::SetAndroidObjects(jvm, context); | |
49 } | |
50 | |
51 } // anonymous namespace | |
52 | |
53 void InitializeAndroidObjects() { | |
54 RTC_CHECK_EQ(0, pthread_once(&g_initialize_once, &EnsureInitializedOnce)); | |
55 } | |
56 | |
57 } // namespace webrtc | |
OLD | NEW |