1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <jni.h>
6
7 #include <memory>
8 #include <string>
9 #include <utility>
10
11 #include "base/android/jni_android.h"
12 #include "base/android/jni_string.h"
13 #include "base/files/file_path.h"
14 #include "base/test/test_support_android.h"
15 #include "components/cronet/android/cronet_test_apk_jni/NativeTestServer_jni.h"
16 #include "components/cronet/testing/test_server/test_server.h"
17 #include "net/test/embedded_test_server/embedded_test_server.h"
18
19 using base::android::JavaParamRef;
20 using base::android::ScopedJavaLocalRef;
21
22 namespace cronet {
23
JNI_NativeTestServer_StartNativeTestServer(JNIEnv * env,const JavaParamRef<jstring> & jtest_files_root,const JavaParamRef<jstring> & jtest_data_dir,jboolean juse_https,jint jserver_certificate)24 jboolean JNI_NativeTestServer_StartNativeTestServer(
25 JNIEnv* env,
26 const JavaParamRef<jstring>& jtest_files_root,
27 const JavaParamRef<jstring>& jtest_data_dir,
28 jboolean juse_https,
29 jint jserver_certificate) {
30 base::FilePath test_data_dir(
31 base::android::ConvertJavaStringToUTF8(env, jtest_data_dir));
32 base::InitAndroidTestPaths(test_data_dir);
33
34 base::FilePath test_files_root(
35 base::android::ConvertJavaStringToUTF8(env, jtest_files_root));
36 return cronet::TestServer::StartServeFilesFromDirectory(
37 test_files_root,
38 (juse_https ? net::test_server::EmbeddedTestServer::TYPE_HTTPS
39 : net::test_server::EmbeddedTestServer::TYPE_HTTP),
40 static_cast<net::EmbeddedTestServer::ServerCertificate>(
41 jserver_certificate));
42 }
43
JNI_NativeTestServer_ShutdownNativeTestServer(JNIEnv * env)44 void JNI_NativeTestServer_ShutdownNativeTestServer(JNIEnv* env) {
45 cronet::TestServer::Shutdown();
46 }
47
JNI_NativeTestServer_GetEchoBodyURL(JNIEnv * env)48 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetEchoBodyURL(JNIEnv* env) {
49 return base::android::ConvertUTF8ToJavaString(
50 env, cronet::TestServer::GetEchoRequestBodyURL());
51 }
52
JNI_NativeTestServer_GetEchoHeaderURL(JNIEnv * env,const JavaParamRef<jstring> & jheader)53 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetEchoHeaderURL(
54 JNIEnv* env,
55 const JavaParamRef<jstring>& jheader) {
56 return base::android::ConvertUTF8ToJavaString(
57 env, cronet::TestServer::GetEchoHeaderURL(
58 base::android::ConvertJavaStringToUTF8(env, jheader)));
59 }
60
JNI_NativeTestServer_GetEchoAllHeadersURL(JNIEnv * env)61 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetEchoAllHeadersURL(
62 JNIEnv* env) {
63 return base::android::ConvertUTF8ToJavaString(
64 env, cronet::TestServer::GetEchoAllHeadersURL());
65 }
66
JNI_NativeTestServer_GetEchoMethodURL(JNIEnv * env)67 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetEchoMethodURL(JNIEnv* env) {
68 return base::android::ConvertUTF8ToJavaString(
69 env, cronet::TestServer::GetEchoMethodURL());
70 }
71
JNI_NativeTestServer_GetRedirectToEchoBody(JNIEnv * env)72 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetRedirectToEchoBody(
73 JNIEnv* env) {
74 return base::android::ConvertUTF8ToJavaString(
75 env, cronet::TestServer::GetRedirectToEchoBodyURL());
76 }
77
JNI_NativeTestServer_GetFileURL(JNIEnv * env,const JavaParamRef<jstring> & jfile_path)78 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetFileURL(
79 JNIEnv* env,
80 const JavaParamRef<jstring>& jfile_path) {
81 return base::android::ConvertUTF8ToJavaString(
82 env, cronet::TestServer::GetFileURL(
83 base::android::ConvertJavaStringToUTF8(env, jfile_path)));
84 }
85
JNI_NativeTestServer_GetPort(JNIEnv * env)86 jint JNI_NativeTestServer_GetPort(JNIEnv* env) {
87 return cronet::TestServer::GetPort();
88 }
89
JNI_NativeTestServer_GetExabyteResponseURL(JNIEnv * env)90 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetExabyteResponseURL(
91 JNIEnv* env) {
92 return base::android::ConvertUTF8ToJavaString(
93 env, cronet::TestServer::GetExabyteResponseURL());
94 }
95
JNI_NativeTestServer_GetHostPort(JNIEnv * env)96 ScopedJavaLocalRef<jstring> JNI_NativeTestServer_GetHostPort(JNIEnv* env) {
97 return base::android::ConvertUTF8ToJavaString(
98 env, cronet::TestServer::GetHostPort());
99 }
100
101 } // namespace cronet
102