Files
ladybird/Ladybird/Android/src/main/cpp/WebContentServiceJNI.cpp
Andrew Kaster a243bc465f Ladybird/Android: Bind a RequestServerService for networking needs
Add a RequestServerService class that uses the LadybirdServiceBase class
added previously. Bind to it from the WebContentService's service_main()
during startup.
2023-09-17 19:22:29 -06:00

37 lines
1.1 KiB
C++

/*
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "JNIHelpers.h"
#include "LadybirdServiceBase.h"
#include <jni.h>
jobject global_instance;
jclass global_class_reference;
jmethodID bind_request_server_method;
extern "C" JNIEXPORT void JNICALL
Java_org_serenityos_ladybird_WebContentService_nativeInit(JNIEnv* env, jobject thiz)
{
global_instance = env->NewGlobalRef(thiz);
auto local_class = env->FindClass("org/serenityos/ladybird/WebContentService");
if (!local_class)
TODO();
global_class_reference = reinterpret_cast<jclass>(env->NewGlobalRef(local_class));
env->DeleteLocalRef(local_class);
auto method = env->GetMethodID(global_class_reference, "bindRequestServer", "(II)V");
if (!method)
TODO();
bind_request_server_method = method;
}
void bind_request_server_java(int ipc_socket, int fd_passing_socket)
{
JavaEnvironment env(global_vm);
env.get()->CallVoidMethod(global_instance, bind_request_server_method, ipc_socket, fd_passing_socket);
}