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