cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tony Homer (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CB-10774) CDVUIWebView performs javascript synchronous, but command queue expects it to be async
Date Thu, 03 Mar 2016 21:14:18 GMT

     [ https://issues.apache.org/jira/browse/CB-10774?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Tony Homer updated CB-10774:
----------------------------
    Assignee: Shazron Abdullah

> CDVUIWebView performs javascript synchronous, but command queue expects it to be async
> --------------------------------------------------------------------------------------
>
>                 Key: CB-10774
>                 URL: https://issues.apache.org/jira/browse/CB-10774
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 4.1.0
>            Reporter: Torsten Freyhall
>            Assignee: Shazron Abdullah
>              Labels: cordova-ios-4.1.0
>
> From https://issues.apache.org/jira/browse/CB-10530 regarding app freezing at launch.
> ...
> However I was not sure about why the timer resolves due to long script execution times
though. It seems like the intention is that whenever gap://ready is loaded in the iframe,
the immediate response from the native side should be to call nativeFetchMessages() which
should clear the timeout.
> Therefore I dug a little deeper in the native side, and found that the evaluateJavaScript:completionHandler:
in CDVCommandQueue expects implementation to to be async (a comment in the code says so),
but the CDVUIWebViewEngine method actually is implemented synchronous.
> I wrapped the entire method in a dispatch_async call (maybe a very naive solution, it
might mess with references?):
> dispatch_async(dispatch_get_main_queue(), ^{
>   NSString* ret = [(UIWebView*)_engineWebView stringByEvaluatingJavaScriptFromString:javaScriptString];
> if (completionHandler)
> { completionHandler(ret, nil); }
> });
> This also solves the original issue on cordova-ios 4.0.1 as the timeout never resolves,
so maybe asyncing this method should also be a part of the proper fix?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message