Marcus Pridham created CB-8468:
----------------------------------

             Summary: Applications 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: iOS
            Reporter: Marcus Pridham
            Priority: Minor


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.

navigator.globalization.getPreferredLanguage(function() {
        console.log("test"); // Will freeze if breakpoint set here
    }, function() {});


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:
 
callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) 
{
 
With:
 
    callbackFromNative: function(callbackId, isSuccess, status, args, 
keepCallback) {
       setTimeout(function() {
            cordova.callbackFromNative2(callbackId, isSuccess, status, args, 
keepCallback);
        }, 0);
    },
       
    callbackFromNative2: function(callbackId, isSuccess, status, args, 
keepCallback) {





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

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

Reply via email to