[
https://issues.apache.org/jira/browse/CB-8468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Shazron Abdullah reassigned CB-8468:
------------------------------------
Assignee: Shazron Abdullah
> Application freezes if breakpoint hits JavaScript callback invoked from native
> ------------------------------------------------------------------------------
>
> Key: CB-8468
> URL: https://issues.apache.org/jira/browse/CB-8468
> Project: Apache Cordova
> Issue Type: Bug
> Components: CordovaJS, iOS
> Reporter: Marcus Pridham
> Assignee: Shazron Abdullah
> Priority: Minor
> Fix For: 4.0.0
>
>
> It you attach Safari to your application and hit a breakpoint in a Cordova
> callback the application freezes and you can't step through or continue.
> This only happens in breakpoints in the native to JavaScript callbacks.
> JavaScript breakpoints in other areas work fine.
> A simple way to reproduce is to use the globalization plugin. Attach safari
> and put a breakpoint in the success callback.
> {code}
> navigator.globalization.getPreferredLanguage(function() {
> console.log("test"); // Will freeze if breakpoint set here
> }, function() {});
> {code}
> The problem seems to have to do with the webview
> stringByEvaluatingJavaScriptFromString. It is a synchronous call that can
> return the result of the JavaScript back to the native. The native code will
> crash if a breakpoint is hit while trying to execute the JavaScript. The
> workaround is to have your callback code in a setTimeout so it is not in the
> same context as the native stringByEvaluatingJavaScriptFromString call.
>
> A workaround:
>
> Open cordova.js and around line 281 replace:
> {code}
> callbackFromNative: function(callbackId, isSuccess, status, args,
> keepCallback) {
> {code}
> With:
> {code}
> callbackFromNative: function(callbackId, isSuccess, status, args,
> keepCallback) {
> setTimeout(function() {
> cordova.callbackFromNative2(callbackId, isSuccess, status, args,
> keepCallback);
> }, 0);
> },
>
> callbackFromNative2: function(callbackId, isSuccess, status, args,
> keepCallback) {
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]