| // 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_ |