OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdio.h> | 5 #include <stdio.h> |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/android/path_utils.h" | 9 #include "base/android/path_utils.h" |
| 10 #include "base/android/scoped_java_ref.h" |
10 #include "base/at_exit.h" | 11 #include "base/at_exit.h" |
11 #include "base/command_line.h" | 12 #include "base/command_line.h" |
12 #include "base/file_path.h" | 13 #include "base/file_path.h" |
13 #include "base/file_util.h" | 14 #include "base/file_util.h" |
14 #include "base/logging.h" | 15 #include "base/logging.h" |
15 #include "base/stringprintf.h" | 16 #include "base/stringprintf.h" |
16 #include "base/string_tokenizer.h" | 17 #include "base/string_tokenizer.h" |
17 #include "base/string_util.h" | 18 #include "base/string_util.h" |
18 #include "base/test/test_suite.h" | 19 #include "base/test/test_suite.h" |
19 #include "testing/android/jni/chrome_native_test_activity_jni.h" | 20 #include "testing/android/jni/chrome_native_test_activity_jni.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 false); // Tick count | 150 false); // Tick count |
150 VLOG(0) << "Chromium logging enabled: level = " << logging::GetMinLogLevel() | 151 VLOG(0) << "Chromium logging enabled: level = " << logging::GetMinLogLevel() |
151 << ", default verbosity = " << logging::GetVlogVerbosity(); | 152 << ", default verbosity = " << logging::GetVlogVerbosity(); |
152 base::android::RegisterPathUtils(env); | 153 base::android::RegisterPathUtils(env); |
153 } | 154 } |
154 | 155 |
155 } // namespace | 156 } // namespace |
156 | 157 |
157 // This method is called on a separate java thread so that we won't trigger | 158 // This method is called on a separate java thread so that we won't trigger |
158 // an ANR. | 159 // an ANR. |
159 static void RunTests(JNIEnv* env, jobject obj, jstring jfiles_dir) { | 160 static void RunTests(JNIEnv* env, |
| 161 jobject obj, |
| 162 jstring jfiles_dir, |
| 163 jobject app_context) { |
160 FilePath files_dir(base::android::ConvertJavaStringToUTF8(env, jfiles_dir)); | 164 FilePath files_dir(base::android::ConvertJavaStringToUTF8(env, jfiles_dir)); |
161 // A few options, such "--gtest_list_tests", will just use printf directly | 165 // A few options, such "--gtest_list_tests", will just use printf directly |
162 // and won't use the "AndroidLogPrinter". Redirect stdout to a known file. | 166 // and won't use the "AndroidLogPrinter". Redirect stdout to a known file. |
163 FilePath stdout_path(files_dir.Append(FilePath("stdout.txt"))); | 167 FilePath stdout_path(files_dir.Append(FilePath("stdout.txt"))); |
164 freopen(stdout_path.value().c_str(), "w", stdout); | 168 freopen(stdout_path.value().c_str(), "w", stdout); |
165 | 169 |
166 std::vector<std::string> args; | 170 std::vector<std::string> args; |
167 ParseArgsFromCommandLineFile(files_dir, &args); | 171 ParseArgsFromCommandLineFile(files_dir, &args); |
168 | 172 |
169 // We need to pass in a non-const char**. | 173 // We need to pass in a non-const char**. |
170 std::vector<char*> argv; | 174 std::vector<char*> argv; |
171 ArgsToArgv(args, &argv); | 175 ArgsToArgv(args, &argv); |
172 | 176 |
173 int argc = argv.size(); | 177 int argc = argv.size(); |
174 // This object is owned by gtest. | 178 // This object is owned by gtest. |
175 AndroidLogPrinter* log = new AndroidLogPrinter(); | 179 AndroidLogPrinter* log = new AndroidLogPrinter(); |
176 log->Init(&argc, &argv[0]); | 180 log->Init(&argc, &argv[0]); |
177 | 181 |
| 182 // Set the application context in base. |
| 183 base::android::ScopedJavaLocalRef<jobject> scoped_context( |
| 184 env, env->NewLocalRef(app_context)); |
| 185 base::android::InitApplicationContext(scoped_context); |
| 186 |
178 main(argc, &argv[0]); | 187 main(argc, &argv[0]); |
179 } | 188 } |
180 | 189 |
181 // This is called by the VM when the shared library is first loaded. | 190 // This is called by the VM when the shared library is first loaded. |
182 JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { | 191 JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { |
183 base::android::InitVM(vm); | 192 base::android::InitVM(vm); |
184 JNIEnv* env = base::android::AttachCurrentThread(); | 193 JNIEnv* env = base::android::AttachCurrentThread(); |
185 if (!RegisterNativesImpl(env)) { | 194 if (!RegisterNativesImpl(env)) { |
186 return -1; | 195 return -1; |
187 } | 196 } |
188 LibraryLoadedOnMainThread(env); | 197 LibraryLoadedOnMainThread(env); |
189 return JNI_VERSION_1_4; | 198 return JNI_VERSION_1_4; |
190 } | 199 } |
OLD | NEW |