| // Copyright 2013 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef TESTING_ANDROID_NATIVE_TEST_NATIVE_TEST_UTIL_H_ | |
| #define TESTING_ANDROID_NATIVE_TEST_NATIVE_TEST_UTIL_H_ | |
| #include <stdio.h> | |
| #include <string> | |
| #include <vector> | |
| #include "base/compiler_specific.h" | |
| // Helper methods for setting up environment for running gtest tests | |
| // inside an APK. | |
| namespace testing { | |
| namespace android { | |
| class ScopedMainEntryLogger { | |
| public: | |
| ScopedMainEntryLogger() { | |
| printf(">>ScopedMainEntryLogger\n"); | |
| Flush(); | |
| } | |
| ~ScopedMainEntryLogger() { | |
| printf("<<ScopedMainEntryLogger\n"); | |
| Flush(); | |
| } | |
| private: | |
| static void Flush() { | |
| // SAFETY: On Android with __ANDROID_API__ <= 22 (Lollipop MR1), `stdout` | |
| // and `stderr` are macros that access a buffer of unknown length, | |
| // triggering the `-Wunsafe-buffer-usage` warning. This usage is sound, as | |
| // it accesses a fixed position in a system-provided array. While Lollipop | |
| // is no longer officially supported by Chromium, Cronet currently maintains | |
| // compatibility with this older Android version. Check for optional bot | |
| // `android-cronet-arm64-dbg` before removing this. | |
| fflush(UNSAFE_BUFFERS(stdout)); | |
| fflush(UNSAFE_BUFFERS(stderr)); | |
| } | |
| }; | |
| 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); | |
| } // namespace android | |
| } // namespace testing | |
| #endif // TESTING_ANDROID_NATIVE_TEST_NATIVE_TEST_UTIL_H_ |