| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_TEST_EMBEDDED_TEST_SERVER_ANDROID_EMBEDDED_TEST_SERVER_ANDROID_H_ |
| #define NET_TEST_EMBEDDED_TEST_SERVER_ANDROID_EMBEDDED_TEST_SERVER_ANDROID_H_ |
| |
| #include <jni.h> |
| |
| #include "base/android/jni_weak_ref.h" |
| #include "base/android/scoped_java_ref.h" |
| #include "base/macros.h" |
| #include "net/test/embedded_test_server/embedded_test_server.h" |
| #include "net/test/embedded_test_server/embedded_test_server_connection_listener.h" |
| #include "net/test/embedded_test_server/http_request.h" |
| #include "net/test/embedded_test_server/http_response.h" |
| #include "starboard/types.h" |
| |
| namespace net { |
| namespace test_server { |
| |
| // The C++ side of the Java EmbeddedTestServer. |
| class EmbeddedTestServerAndroid { |
| public: |
| EmbeddedTestServerAndroid(JNIEnv* env, |
| const base::android::JavaRef<jobject>& obj, |
| jboolean jhttps); |
| ~EmbeddedTestServerAndroid(); |
| |
| void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
| |
| jboolean Start(JNIEnv* env, |
| const base::android::JavaParamRef<jobject>& jobj, |
| jint port); |
| |
| base::android::ScopedJavaLocalRef<jstring> GetRootCertPemPath( |
| JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj) const; |
| |
| jboolean ShutdownAndWaitUntilComplete( |
| JNIEnv* env, |
| const base::android::JavaParamRef<jobject>& jobj); |
| |
| base::android::ScopedJavaLocalRef<jstring> GetURL( |
| JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj, |
| const base::android::JavaParamRef<jstring>& jrelative_url) const; |
| |
| base::android::ScopedJavaLocalRef<jstring> GetURLWithHostName( |
| JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj, |
| const base::android::JavaParamRef<jstring>& jhostname, |
| const base::android::JavaParamRef<jstring>& jrelative_url) const; |
| |
| void AddDefaultHandlers( |
| JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj, |
| const base::android::JavaParamRef<jstring>& jdirectory_path); |
| |
| void SetSSLConfig(JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj, |
| jint jserver_certificate); |
| |
| void RegisterRequestHandler(JNIEnv* jenv, |
| const base::android::JavaParamRef<jobject>& jobj, |
| jlong handler); |
| |
| void ServeFilesFromDirectory( |
| JNIEnv* env, |
| const base::android::JavaParamRef<jobject>& jobj, |
| const base::android::JavaParamRef<jstring>& jdirectory_path); |
| |
| private: |
| // Connection listener forwarding notifications to EmbeddedTestServerAndroid. |
| class ConnectionListener : public EmbeddedTestServerConnectionListener { |
| public: |
| ConnectionListener(EmbeddedTestServerAndroid* test_server_android); |
| ~ConnectionListener() override; |
| |
| void AcceptedSocket(const StreamSocket& socket) override; |
| void ReadFromSocket(const StreamSocket& socket, int rv) override; |
| |
| private: |
| EmbeddedTestServerAndroid* test_server_android_; |
| }; |
| |
| // Forwards notifications to Java. See EmbeddedTestServerConnectionListener. |
| void AcceptedSocket(const void* socket_id); |
| void ReadFromSocket(const void* socket_id); |
| |
| JavaObjectWeakGlobalRef weak_java_server_; |
| |
| EmbeddedTestServer test_server_; |
| ConnectionListener connection_listener_; |
| |
| DISALLOW_COPY_AND_ASSIGN(EmbeddedTestServerAndroid); |
| }; |
| |
| } // namespace test_server |
| } // namespace net |
| |
| #endif // NET_TEST_EMBEDDED_TEST_SERVER_ANDROID_EMBEDDED_TEST_SERVER_ANDROID_H_ |