summaryrefslogtreecommitdiff
path: root/platform/android/src/http_file_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/http_file_source.cpp')
-rw-r--r--platform/android/src/http_file_source.cpp44
1 files changed, 22 insertions, 22 deletions
diff --git a/platform/android/src/http_file_source.cpp b/platform/android/src/http_file_source.cpp
index fc7ffbec8c..e1b3493f0f 100644
--- a/platform/android/src/http_file_source.cpp
+++ b/platform/android/src/http_file_source.cpp
@@ -25,15 +25,14 @@ public:
HTTPRequest(jni::JNIEnv&, const Resource&, FileSource::Callback);
~HTTPRequest();
- void onFailure(jni::JNIEnv&, int type, jni::String message);
+ void onFailure(jni::JNIEnv&, int type, const jni::String& message);
void onResponse(jni::JNIEnv&, int code,
- jni::String etag, jni::String modified,
- jni::String cacheControl, jni::String expires,
- jni::String retryAfter, jni::String xRateLimitReset,
- jni::Array<jni::jbyte> body);
+ const jni::String& etag, const jni::String& modified,
+ const jni::String& cacheControl, const jni::String& expires,
+ const jni::String& retryAfter, const jni::String& xRateLimitReset,
+ const jni::Array<jni::jbyte>& body);
- static jni::Class<HTTPRequest> javaClass;
- jni::UniqueObject<HTTPRequest> javaRequest;
+ jni::Global<jni::Object<HTTPRequest>> javaRequest;
private:
Resource resource;
@@ -52,16 +51,14 @@ private:
static const int permanentError = 2;
};
-jni::Class<HTTPRequest> HTTPRequest::javaClass;
-
namespace android {
void RegisterNativeHTTPRequest(jni::JNIEnv& env) {
- HTTPRequest::javaClass = *jni::Class<HTTPRequest>::Find(env).NewGlobalRef(env).release();
+ static auto& javaClass = jni::Class<HTTPRequest>::Singleton(env);
#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name)
- jni::RegisterNativePeer<HTTPRequest>(env, HTTPRequest::javaClass, "nativePtr",
+ jni::RegisterNativePeer<HTTPRequest>(env, javaClass, "nativePtr",
METHOD(&HTTPRequest::onFailure, "nativeOnFailure"),
METHOD(&HTTPRequest::onResponse, "nativeOnResponse"));
}
@@ -82,29 +79,32 @@ HTTPRequest::HTTPRequest(jni::JNIEnv& env, const Resource& resource_, FileSource
jni::UniqueLocalFrame frame = jni::PushLocalFrame(env, 10);
+ static auto& javaClass = jni::Class<HTTPRequest>::Singleton(env);
static auto constructor =
javaClass.GetConstructor<jni::jlong, jni::String, jni::String, jni::String>(env);
- javaRequest = javaClass.New(env, constructor,
- reinterpret_cast<jlong>(this),
- jni::Make<jni::String>(env, resource.url),
- jni::Make<jni::String>(env, etagStr),
- jni::Make<jni::String>(env, modifiedStr)).NewGlobalRef(env);
+ javaRequest = jni::NewGlobal(env,
+ javaClass.New(env, constructor,
+ reinterpret_cast<jlong>(this),
+ jni::Make<jni::String>(env, resource.url),
+ jni::Make<jni::String>(env, etagStr),
+ jni::Make<jni::String>(env, modifiedStr)));
}
HTTPRequest::~HTTPRequest() {
android::UniqueEnv env = android::AttachEnv();
+ static auto& javaClass = jni::Class<HTTPRequest>::Singleton(*env);
static auto cancel = javaClass.GetMethod<void ()>(*env, "cancel");
- javaRequest->Call(*env, cancel);
+ javaRequest.Call(*env, cancel);
}
void HTTPRequest::onResponse(jni::JNIEnv& env, int code,
- jni::String etag, jni::String modified,
- jni::String cacheControl, jni::String expires,
- jni::String jRetryAfter, jni::String jXRateLimitReset,
- jni::Array<jni::jbyte> body) {
+ const jni::String& etag, const jni::String& modified,
+ const jni::String& cacheControl, const jni::String& expires,
+ const jni::String& jRetryAfter, const jni::String& jXRateLimitReset,
+ const jni::Array<jni::jbyte>& body) {
using Error = Response::Error;
@@ -159,7 +159,7 @@ void HTTPRequest::onResponse(jni::JNIEnv& env, int code,
async.send();
}
-void HTTPRequest::onFailure(jni::JNIEnv& env, int type, jni::String message) {
+void HTTPRequest::onFailure(jni::JNIEnv& env, int type, const jni::String& message) {
std::string messageStr = jni::Make<std::string>(env, message);
using Error = Response::Error;