MCPcopy Create free account
hub / github.com/NativeScript/android / CallJSMethodNative

Method CallJSMethodNative

test-app/runtime/src/main/cpp/Runtime.cpp:350–391  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350jobject Runtime::CallJSMethodNative(JNIEnv* _env, jobject obj,
351 jint javaObjectID, jstring methodName,
352 jint retType, jboolean isConstructor,
353 jobjectArray packagedArgs) {
354 SET_PROFILER_FRAME();
355
356 auto isolate = m_isolate;
357
358 JEnv env(_env);
359
360 DEBUG_WRITE("CallJSMethodNative called javaObjectID=%d", javaObjectID);
361
362 auto jsObject = m_objectManager->GetJsObjectByJavaObject(javaObjectID);
363 if (jsObject.IsEmpty()) {
364 stringstream ss;
365 ss << "JavaScript object for Java ID " << javaObjectID << " not found."
366 << endl;
367 ss << "Attempting to call method "
368 << ArgConverter::jstringToString(methodName) << endl;
369
370 throw NativeScriptException(ss.str());
371 }
372
373 if (isConstructor) {
374 DEBUG_WRITE(
375 "CallJSMethodNative: Updating linked instance with its real class");
376 jclass instanceClass = env.GetObjectClass(obj);
377 m_objectManager->SetJavaClass(jsObject, instanceClass);
378 }
379
380 DEBUG_WRITE("CallJSMethodNative called jsObject=%d",
381 jsObject->GetIdentityHash());
382
383 string method_name = ArgConverter::jstringToString(methodName);
384 auto jsResult = CallbackHandlers::CallJSMethod(m_isolate, env, jsObject,
385 method_name, packagedArgs);
386
387 int classReturnType = retType;
388 jobject javaObject =
389 ConvertJsValueToJavaObject(env, jsResult, classReturnType);
390 return javaObject;
391}
392
393void Runtime::CreateJSInstanceNative(JNIEnv* _env, jobject obj,
394 jobject javaObject, jint javaObjectID,

Calls 5

GetObjectClassMethod · 0.80
SetJavaClassMethod · 0.80
IsEmptyMethod · 0.45

Tested by

no test coverage detected