| /* | |
| * Copyright (c) 2024 The WebRTC project authors. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #ifndef TEST_ANDROID_NATIVE_TEST_UTIL_H_ | |
| #define TEST_ANDROID_NATIVE_TEST_UTIL_H_ | |
| #include <android/log.h> | |
| #include <string> | |
| #include <vector> | |
| #include "third_party/jni_zero/jni_zero.h" | |
| // Helper methods for setting up environment for running gtest tests | |
| // inside an APK. | |
| namespace webrtc { | |
| namespace test { | |
| namespace android { | |
| void AndroidLog(int priority, const char* format, ...); | |
| std::string ASCIIJavaStringToUTF8(JNIEnv* env, jstring str); | |
| void ParseArgsFromString(const std::string& command_line, | |
| std::vector<std::string>* args); | |
| void ParseArgsFromCommandLineFile(const char* path, | |
| std::vector<std::string>* args); | |
| int ArgsToArgv(const std::vector<std::string>& args, std::vector<char*>* argv); | |
| class ScopedMainEntryLogger { | |
| public: | |
| ScopedMainEntryLogger() { | |
| AndroidLog(ANDROID_LOG_INFO, ">>ScopedMainEntryLogger\n"); | |
| } | |
| ~ScopedMainEntryLogger() { | |
| AndroidLog(ANDROID_LOG_INFO, "<<ScopedMainEntryLogger\n"); | |
| fflush(stdout); | |
| fflush(stderr); | |
| } | |
| }; | |
| } // namespace android | |
| } // namespace test | |
| } // namespace webrtc | |
| namespace jni_zero { | |
| template <> | |
| inline std::string FromJniType<std::string>(JNIEnv* env, | |
| const JavaRef<jobject>& input) { | |
| return webrtc::test::android::ASCIIJavaStringToUTF8( | |
| env, static_cast<jstring>(input.obj())); | |
| } | |
| } // namespace jni_zero | |
| #endif // TEST_ANDROID_NATIVE_TEST_UTIL_H_ |