| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "net/test/embedded_test_server/android/embedded_test_server_android.h" | 5 #include "net/test/embedded_test_server/android/embedded_test_server_android.h" |
| 6 | 6 |
| 7 #include "base/android/jni_array.h" |
| 7 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 8 #include "base/android/scoped_java_ref.h" | 9 #include "base/android/scoped_java_ref.h" |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 11 #include "base/test/test_support_android.h" | 12 #include "base/test/test_support_android.h" |
| 12 #include "base/trace_event/trace_event.h" | 13 #include "base/trace_event/trace_event.h" |
| 13 #include "net/test/jni/EmbeddedTestServerImpl_jni.h" | 14 #include "net/test/jni/EmbeddedTestServerImpl_jni.h" |
| 14 | 15 |
| 15 using base::android::JavaParamRef; | 16 using base::android::JavaParamRef; |
| 16 using base::android::JavaRef; | 17 using base::android::JavaRef; |
| 18 using base::android::ScopedJavaLocalRef; |
| 17 | 19 |
| 18 namespace net { | 20 namespace net { |
| 19 namespace test_server { | 21 namespace test_server { |
| 20 | 22 |
| 21 EmbeddedTestServerAndroid::EmbeddedTestServerAndroid( | 23 EmbeddedTestServerAndroid::EmbeddedTestServerAndroid( |
| 22 JNIEnv* env, | 24 JNIEnv* env, |
| 23 const JavaRef<jobject>& jobj) | 25 const JavaRef<jobject>& jobj) |
| 24 : weak_java_server_(env, jobj), test_server_() { | 26 : weak_java_server_(env, jobj), test_server_() { |
| 25 Java_EmbeddedTestServerImpl_setNativePtr(env, jobj, | 27 Java_EmbeddedTestServerImpl_setNativePtr(env, jobj, |
| 26 reinterpret_cast<intptr_t>(this)); | 28 reinterpret_cast<intptr_t>(this)); |
| 27 } | 29 } |
| 28 | 30 |
| 29 EmbeddedTestServerAndroid::~EmbeddedTestServerAndroid() { | 31 EmbeddedTestServerAndroid::~EmbeddedTestServerAndroid() { |
| 30 JNIEnv* env = base::android::AttachCurrentThread(); | 32 JNIEnv* env = base::android::AttachCurrentThread(); |
| 31 Java_EmbeddedTestServerImpl_clearNativePtr(env, weak_java_server_.get(env)); | 33 Java_EmbeddedTestServerImpl_clearNativePtr(env, weak_java_server_.get(env)); |
| 32 } | 34 } |
| 33 | 35 |
| 34 jboolean EmbeddedTestServerAndroid::Start(JNIEnv* env, | 36 jboolean EmbeddedTestServerAndroid::Start(JNIEnv* env, |
| 35 const JavaParamRef<jobject>& jobj) { | 37 const JavaParamRef<jobject>& jobj) { |
| 36 return test_server_.Start(); | 38 return test_server_.Start(); |
| 37 } | 39 } |
| 38 | 40 |
| 39 jboolean EmbeddedTestServerAndroid::ShutdownAndWaitUntilComplete( | 41 jboolean EmbeddedTestServerAndroid::ShutdownAndWaitUntilComplete( |
| 40 JNIEnv* env, | 42 JNIEnv* env, |
| 41 const JavaParamRef<jobject>& jobj) { | 43 const JavaParamRef<jobject>& jobj) { |
| 42 return test_server_.ShutdownAndWaitUntilComplete(); | 44 return test_server_.ShutdownAndWaitUntilComplete(); |
| 43 } | 45 } |
| 44 | 46 |
| 45 base::android::ScopedJavaLocalRef<jstring> EmbeddedTestServerAndroid::GetURL( | 47 ScopedJavaLocalRef<jstring> EmbeddedTestServerAndroid::GetURL( |
| 46 JNIEnv* env, | 48 JNIEnv* env, |
| 47 const JavaParamRef<jobject>& jobj, | 49 const JavaParamRef<jobject>& jobj, |
| 48 const JavaParamRef<jstring>& jrelative_url) const { | 50 const JavaParamRef<jstring>& jrelative_url) const { |
| 49 const GURL gurl(test_server_.GetURL( | 51 const GURL gurl(test_server_.GetURL( |
| 50 base::android::ConvertJavaStringToUTF8(env, jrelative_url))); | 52 base::android::ConvertJavaStringToUTF8(env, jrelative_url))); |
| 51 return base::android::ConvertUTF8ToJavaString(env, gurl.spec()); | 53 return base::android::ConvertUTF8ToJavaString(env, gurl.spec()); |
| 52 } | 54 } |
| 53 | 55 |
| 54 void EmbeddedTestServerAndroid::AddDefaultHandlers( | 56 void EmbeddedTestServerAndroid::AddDefaultHandlers( |
| 55 JNIEnv* env, | 57 JNIEnv* env, |
| 56 const JavaParamRef<jobject>& jobj, | 58 const JavaParamRef<jobject>& jobj, |
| 57 const JavaParamRef<jstring>& jdirectory_path) { | 59 const JavaParamRef<jstring>& jdirectory_path) { |
| 58 const base::FilePath directory( | 60 const base::FilePath directory( |
| 59 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); | 61 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); |
| 60 test_server_.AddDefaultHandlers(directory); | 62 test_server_.AddDefaultHandlers(directory); |
| 61 } | 63 } |
| 62 | 64 |
| 65 typedef std::unique_ptr<HttpResponse> (*HandleRequestPtr)( |
| 66 const HttpRequest& request); |
| 67 |
| 68 void EmbeddedTestServerAndroid::RegisterRequestHandler( |
| 69 JNIEnv* env, |
| 70 const JavaParamRef<jobject>& jobj, |
| 71 jlong handler) { |
| 72 HandleRequestPtr handler_ptr = reinterpret_cast<HandleRequestPtr>(handler); |
| 73 test_server_.RegisterRequestHandler(base::Bind(handler_ptr)); |
| 74 } |
| 75 |
| 63 void EmbeddedTestServerAndroid::ServeFilesFromDirectory( | 76 void EmbeddedTestServerAndroid::ServeFilesFromDirectory( |
| 64 JNIEnv* env, | 77 JNIEnv* env, |
| 65 const JavaParamRef<jobject>& jobj, | 78 const JavaParamRef<jobject>& jobj, |
| 66 const JavaParamRef<jstring>& jdirectory_path) { | 79 const JavaParamRef<jstring>& jdirectory_path) { |
| 67 const base::FilePath directory( | 80 const base::FilePath directory( |
| 68 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); | 81 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); |
| 69 test_server_.ServeFilesFromDirectory(directory); | 82 test_server_.ServeFilesFromDirectory(directory); |
| 70 } | 83 } |
| 71 | 84 |
| 72 void EmbeddedTestServerAndroid::Destroy(JNIEnv* env, | 85 void EmbeddedTestServerAndroid::Destroy(JNIEnv* env, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 84 new EmbeddedTestServerAndroid(env, jobj); | 97 new EmbeddedTestServerAndroid(env, jobj); |
| 85 } | 98 } |
| 86 | 99 |
| 87 // static | 100 // static |
| 88 bool EmbeddedTestServerAndroid::RegisterEmbeddedTestServerAndroid(JNIEnv* env) { | 101 bool EmbeddedTestServerAndroid::RegisterEmbeddedTestServerAndroid(JNIEnv* env) { |
| 89 return RegisterNativesImpl(env); | 102 return RegisterNativesImpl(env); |
| 90 } | 103 } |
| 91 | 104 |
| 92 } // namespace test_server | 105 } // namespace test_server |
| 93 } // namespace net | 106 } // namespace net |
| OLD | NEW |