@@ -298,6 +298,43 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
298298
299299// ////////
300300
301+ struct __browser_find_with_java_view_context
302+ {
303+ JNIEnv* env;
304+ jobject view;
305+ MCBrowser *browser;
306+ };
307+
308+ static bool __browser_find_with_java_view_callback (MCBrowser *p_browser, void *p_context)
309+ {
310+ __browser_find_with_java_view_context *context;
311+ context = (__browser_find_with_java_view_context*)p_context;
312+
313+ if (context->env ->IsSameObject (context->view , (jobject)p_browser->GetNativeLayer ()))
314+ {
315+ context->browser = p_browser;
316+ return false ; // End iterator once browser found
317+ }
318+
319+ return true ;
320+ }
321+
322+ bool MCBrowserFindWithJavaView (JNIEnv *env, jobject p_view, MCBrowser *&r_browser)
323+ {
324+ __browser_find_with_java_view_context context;
325+ context.env = env;
326+ context.view = p_view;
327+ context.browser = nil;
328+
329+ MCBrowserBase::BrowserListIterate (__browser_find_with_java_view_callback, &context);
330+
331+ if (context.browser == nil)
332+ return false ;
333+
334+ r_browser = context.browser ;
335+ return true ;
336+ }
337+
301338extern " C" JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doJSExecutionResult (JNIEnv *env, jobject object, jstring tag, jstring result) __attribute__((visibility(" default" )));
302339JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doJSExecutionResult (JNIEnv *env, jobject object, jstring tag, jstring result)
303340{
@@ -308,7 +345,7 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doJSE
308345 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, result, t_result);
309346
310347 MCBrowser *t_browser;
311- if (MCBrowserBase::BrowserListFindWithView ( object, t_browser))
348+ if (MCBrowserFindWithJavaView (env, object, t_browser))
312349 ((MCAndroidWebViewBrowser*)t_browser)->SetJavaScriptResult (t_tag, t_result);
313350
314351 MCCStringFree (t_tag);
@@ -323,7 +360,7 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doSta
323360 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, url, t_url);
324361
325362 MCBrowser *t_browser;
326- if (MCBrowserBase::BrowserListFindWithView ( object, t_browser))
363+ if (MCBrowserFindWithJavaView (env, object, t_browser))
327364 ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadBegin (false , t_url);
328365
329366 MCCStringFree (t_url);
@@ -337,7 +374,7 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doFin
337374 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, url, t_url);
338375
339376 MCBrowser *t_browser;
340- if (MCBrowserBase::BrowserListFindWithView ( object, t_browser))
377+ if (MCBrowserFindWithJavaView (env, object, t_browser))
341378 ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadComplete (false , t_url);
342379
343380 MCCStringFree (t_url);
@@ -355,7 +392,7 @@ JNIEXPORT void JNICALL Java_com_runrev_android_libraries_LibBrowserWebView_doLoa
355392 /* UNCHECKED */ MCBrowserJavaStringToUtf8String (env, error, t_error);
356393
357394 MCBrowser *t_browser;
358- if (MCBrowserBase::BrowserListFindWithView ( object, t_browser))
395+ if (MCBrowserFindWithJavaView (env, object, t_browser))
359396 ((MCAndroidWebViewBrowser*)t_browser)->OnDocumentLoadFailed (false , t_url, t_error);
360397
361398 MCCStringFree (t_url);
0 commit comments