blob: ef073b0215d116b1d1f9fbae553d6c6bcbee68b4 [file] [log] [blame]
// Copyright (c) 2019 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.
#include "android_webview/browser/js_java_interaction/js_reply_proxy.h"
#include "android_webview/browser_jni_headers/JsReplyProxy_jni.h"
#include "base/android/jni_string.h"
namespace android_webview {
JsReplyProxy::JsReplyProxy(
mojo::PendingRemote<mojom::JavaToJsMessaging> java_to_js_messaging)
: java_to_js_messaging_(std::move(java_to_js_messaging)) {
JNIEnv* env = base::android::AttachCurrentThread();
java_ref_ = JavaObjectWeakGlobalRef(
env, Java_JsReplyProxy_create(env, reinterpret_cast<intptr_t>(this)));
}
JsReplyProxy::~JsReplyProxy() {
JNIEnv* env = base::android::AttachCurrentThread();
base::android::ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
if (obj.is_null())
return;
Java_JsReplyProxy_onDestroy(env, obj);
}
base::android::ScopedJavaLocalRef<jobject> JsReplyProxy::GetJavaPeer() {
JNIEnv* env = base::android::AttachCurrentThread();
return java_ref_.get(env);
}
void JsReplyProxy::PostMessage(
JNIEnv* env,
const base::android::JavaParamRef<jstring>& message) {
DCHECK(java_to_js_messaging_);
java_to_js_messaging_->OnPostMessage(
base::android::ConvertJavaStringToUTF16(env, message));
}
} // namespace android_webview