Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: android_webview/embeddedtestserver/aw_embedded_test_server_android.cc

Issue 2687573002: [Android Webview] Refactor LoadUrlTest and work on embedded_test_server custom handler (Closed)
Patch Set: discussing patch Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698