Skip to content

Commit

Permalink
Merge pull request #9899 from garymathews/TIMOB-25693_REF
Browse files Browse the repository at this point in the history
[TIMOB-25825] Prevent proxySupport warning
  • Loading branch information
Lokesh Choudhary committed Mar 2, 2018
2 parents c7450df + 39de6e5 commit 08bfde2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,10 @@ public boolean hasListeners(String event)
public void setHasListenersForEventType(String event, boolean hasListeners)
{
hasListenersForEventType.put(event, hasListeners);
if (proxySupport != null && proxySupport.get() != null) {
proxySupport.get().onHasListenersChanged(event, hasListeners);

KrollProxySupport proxy = (proxySupport != null) ? proxySupport.get() : null;
if (proxy != null) {
proxy.onHasListenersChanged(event, hasListeners);
}
}

Expand All @@ -79,8 +81,9 @@ public void setHasListenersForEventType(String event, boolean hasListeners)
*/
public void onEventFired(String event, Object data)
{
if (proxySupport != null && proxySupport.get() != null) {
proxySupport.get().onEventFired(event, data);
KrollProxySupport proxy = (proxySupport != null) ? proxySupport.get() : null;
if (proxy != null) {
proxy.onEventFired(event, data);
}
}

Expand Down
2 changes: 1 addition & 1 deletion android/runtime/v8/src/native/JNIUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ void JNIUtil::initCache()

krollInvocationInitMethod = getMethodID(krollInvocationClass, "<init>", "(Ljava/lang/String;)V", false);
krollExceptionInitMethod = getMethodID(krollExceptionClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;)V", false);
krollObjectProxySupportField = getFieldID(krollObjectClass, "proxySupport", "Lorg/appcelerator/kroll/KrollProxySupport;");
krollObjectProxySupportField = getFieldID(krollObjectClass, "proxySupport", "Ljava/lang/ref/WeakReference;");
krollObjectSetHasListenersForEventTypeMethod = getMethodID(krollObjectClass, "setHasListenersForEventType",
"(Ljava/lang/String;Z)V");
krollObjectOnEventFiredMethod = getMethodID(krollObjectClass, "onEventFired", "(Ljava/lang/String;Ljava/lang/Object;)V");
Expand Down
21 changes: 19 additions & 2 deletions android/runtime/v8/src/native/V8Object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,16 @@ Java_org_appcelerator_kroll_runtime_v8_V8Object_nativeSetProperty
jsObject = proxy->handle(V8Runtime::v8_isolate);
} else {
LOGE(TAG, "!!! Attempting to set a property on a Java object with no/deleted Proxy on C++ side! Attempting to revive it from Java object.");
jobject proxySupport = env->GetObjectField(object, JNIUtil::krollObjectProxySupportField);

jobject proxySupportField = env->GetObjectField(object, JNIUtil::krollObjectProxySupportField);
if (!proxySupportField) {
return;
}
static jmethodID getMethodID = NULL;
if (!getMethodID) {
getMethodID = env->GetMethodID(env->FindClass("java/lang/ref/WeakReference"), "get", "()Ljava/lang/Object;");
}
jobject proxySupport = (jobject)env->CallObjectMethodA(proxySupportField, getMethodID, NULL);
if (!proxySupport) {
return;
}
Expand Down Expand Up @@ -151,7 +160,15 @@ Java_org_appcelerator_kroll_runtime_v8_V8Object_nativeCallProperty
jsObject = proxy->handle(V8Runtime::v8_isolate);
} else {
LOGE(TAG, "!!! Attempting to call a property on a Java object with no/deleted Proxy on C++ side! Attempting to revive it from Java object.");
jobject proxySupport = env->GetObjectField(javaObject, JNIUtil::krollObjectProxySupportField);
jobject proxySupportField = env->GetObjectField(javaObject, JNIUtil::krollObjectProxySupportField);
if (!proxySupportField) {
return JNIUtil::undefinedObject;
}
static jmethodID getMethodID = NULL;
if (!getMethodID) {
getMethodID = env->GetMethodID(env->FindClass("java/lang/ref/WeakReference"), "get", "()Ljava/lang/Object;");
}
jobject proxySupport = (jobject)env->CallObjectMethodA(proxySupportField, getMethodID, NULL);
if (proxySupport) {
jsObject = TypeConverter::javaObjectToJsValue(V8Runtime::v8_isolate, env, proxySupport).As<Object>();
}
Expand Down

0 comments on commit 08bfde2

Please sign in to comment.