John Little created CB-8830:
-------------------------------

             Summary: application locks up when run with "cordova serve"
                 Key: CB-8830
                 URL: https://issues.apache.org/jira/browse/CB-8830
             Project: Apache Cordova
          Issue Type: Bug
          Components: Plugin Device
         Environment: windows 8.1 and OSx
Cordova 4.3.0
            Reporter: John Little


When the Device plugin is added to a cordova project and the software is tested 
using the "cordova serve" option (run a local web server for testing with a 
browser) the software locks up and fails to start.
There is an exception in the Device plugin as below
Exception calling native with command :: Device :: getDeviceInfo 
::exception=ReferenceError: 'Windows' is undefined
This is not supprising as there is no device, it's just serving the app through 
a web server.
However the software locks up because the "onCordovaInfoReady" is never fired.
A simple fix is to modify the device.js file as below
   channel.onCordovaReady.subscribe(function() {
        var callFailed = true;  // NEW assume the getInfo fails
        me.getInfo(function(info) {
            callFailed = false;  // NEW it's all good
            //ignoring info.cordova returning from native, we should use value 
from cordova.version defined in cordova.js
            //TODO: CB-5105 native implementations should not return 
info.cordova
            var buildLabel = cordova.version;
            me.available = true;
            me.platform = info.platform;
            me.version = info.version;
            me.uuid = info.uuid;
            me.cordova = buildLabel;
            me.model = info.model;
            me.manufacturer = info.manufacturer || 'unknown';
            channel.onCordovaInfoReady.fire();
        },function(e) {
            // NEW failure will be handled below
            utils.alert("[ERROR] Error initializing Cordova: " + e);
        });
      // new code to stop the system locking up
      if(callFailed) {
        me.available = false;    // NEW can't be available as getInfo failed
        channel.onCordovaInfoReady.fire();   // NEW fire event to allow system 
to work
        }

With this mod inplace the software will work, obviously the device information 
is invalid.



--
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