Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 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 "android_webview/embeddedtestserver/aw_embedded_test_server_android.h" | |
| 6 | |
| 7 #include "android_webview/embeddedtestserver/custom_handlers.h" | |
| 8 #include "android_webview/test/jni/AwEmbeddedTestServerImpl_jni.h" | |
| 9 #include "base/android/jni_array.h" | |
| 10 #include "base/android/jni_string.h" | |
| 11 #include "base/android/scoped_java_ref.h" | |
| 12 #include "base/bind.h" | |
| 13 #include "base/files/file_path.h" | |
| 14 #include "base/test/test_support_android.h" | |
| 15 #include "base/trace_event/trace_event.h" | |
| 16 | |
| 17 using base::android::JavaParamRef; | |
| 18 using base::android::JavaRef; | |
| 19 using base::android::ScopedJavaLocalRef; | |
| 20 | |
| 21 namespace net { | |
| 22 namespace test_server { | |
| 23 | |
| 24 AwEmbeddedTestServerAndroid::AwEmbeddedTestServerAndroid( | |
| 25 JNIEnv* env, | |
| 26 const JavaRef<jobject>& jobj) | |
| 27 : weak_java_server_(env, jobj), test_server_() { | |
| 28 Java_AwEmbeddedTestServerImpl_setNativePtr(env, jobj, | |
| 29 reinterpret_cast<intptr_t>(this)); | |
| 30 } | |
| 31 | |
| 32 AwEmbeddedTestServerAndroid::~AwEmbeddedTestServerAndroid() { | |
| 33 JNIEnv* env = base::android::AttachCurrentThread(); | |
| 34 Java_AwEmbeddedTestServerImpl_clearNativePtr(env, weak_java_server_.get(env)); | |
| 35 } | |
| 36 | |
| 37 jboolean AwEmbeddedTestServerAndroid::Start(JNIEnv* env, | |
| 38 const JavaParamRef<jobject>& jobj) { | |
| 39 return test_server_.Start(); | |
| 40 } | |
| 41 | |
| 42 jboolean AwEmbeddedTestServerAndroid::ShutdownAndWaitUntilComplete( | |
| 43 JNIEnv* env, | |
| 44 const JavaParamRef<jobject>& jobj) { | |
| 45 return test_server_.ShutdownAndWaitUntilComplete(); | |
| 46 } | |
| 47 | |
| 48 ScopedJavaLocalRef<jstring> AwEmbeddedTestServerAndroid::GetURL( | |
| 49 JNIEnv* env, | |
| 50 const JavaParamRef<jobject>& jobj, | |
| 51 const JavaParamRef<jstring>& jrelative_url) const { | |
| 52 const GURL gurl(test_server_.GetURL( | |
| 53 base::android::ConvertJavaStringToUTF8(env, jrelative_url))); | |
| 54 return base::android::ConvertUTF8ToJavaString(env, gurl.spec()); | |
| 55 } | |
| 56 | |
| 57 void AwEmbeddedTestServerAndroid::AddDefaultHandlers( | |
| 58 JNIEnv* env, | |
| 59 const JavaParamRef<jobject>& jobj, | |
| 60 const JavaParamRef<jstring>& jdirectory_path) { | |
| 61 const base::FilePath directory( | |
| 62 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); | |
| 63 test_server_.AddDefaultHandlers(directory); | |
| 64 } | |
| 65 | |
| 66 ScopedJavaLocalRef<jlongArray> AwEmbeddedTestServerAndroid::GetCustomHandlers( | |
| 67 JNIEnv* env, | |
| 68 const JavaParamRef<jobject>& jobj) { | |
| 69 return base::android::ToJavaLongArray(env, getHandlers()); | |
| 70 } | |
| 71 | |
| 72 void AwEmbeddedTestServerAndroid::RegisterRequestHandler( | |
| 73 JNIEnv* env, | |
| 74 const JavaParamRef<jobject>& jobj, | |
| 75 jlong handler) { | |
| 76 // test_server_.RegisterRequestHandler( | |
| 77 // base::Bind(&AwEmbeddedTestServerAndroid::getHandlerUniquePtr, | |
| 78 // handler)); | |
| 79 test_server_.RegisterRequestHandler(base::Bind(&HandleClickRedirect)); | |
|
shenghuazhang
2017/03/04 00:22:21
Hard coded handler here.
| |
| 80 } | |
| 81 | |
| 82 std::unique_ptr<HttpResponse> AwEmbeddedTestServerAndroid::getHandlerUniquePtr( | |
| 83 jlong handler) { | |
| 84 std::unique_ptr<HttpResponse> http_response( | |
| 85 reinterpret_cast<HttpResponse*>(handler)); | |
| 86 return std::move(http_response); | |
| 87 } | |
| 88 | |
| 89 void AwEmbeddedTestServerAndroid::ServeFilesFromDirectory( | |
| 90 JNIEnv* env, | |
| 91 const JavaParamRef<jobject>& jobj, | |
| 92 const JavaParamRef<jstring>& jdirectory_path) { | |
| 93 const base::FilePath directory( | |
| 94 base::android::ConvertJavaStringToUTF8(env, jdirectory_path)); | |
| 95 test_server_.ServeFilesFromDirectory(directory); | |
| 96 } | |
| 97 | |
| 98 void AwEmbeddedTestServerAndroid::Destroy(JNIEnv* env, | |
| 99 const JavaParamRef<jobject>& jobj) { | |
| 100 delete this; | |
| 101 } | |
| 102 | |
| 103 static void Init(JNIEnv* env, | |
| 104 const JavaParamRef<jobject>& jobj, | |
| 105 const JavaParamRef<jstring>& jtest_data_dir) { | |
| 106 TRACE_EVENT0("native", "AwEmbeddedTestServerAndroid::Init"); | |
| 107 base::FilePath test_data_dir( | |
| 108 base::android::ConvertJavaStringToUTF8(env, jtest_data_dir)); | |
| 109 base::InitAndroidTestPaths(test_data_dir); | |
| 110 new AwEmbeddedTestServerAndroid(env, jobj); | |
| 111 } | |
| 112 | |
| 113 // static | |
| 114 bool AwEmbeddedTestServerAndroid::RegisterAwEmbeddedTestServerAndroid( | |
| 115 JNIEnv* env) { | |
| 116 return RegisterNativesImpl(env); | |
| 117 } | |
| 118 | |
| 119 } // namespace test_server | |
| 120 } // namespace net | |
| OLD | NEW |