You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by gt...@apache.org on 2012/11/13 03:00:20 UTC

webworks commit: Updated javascript and added a debug-simulator command

Updated Branches:
  refs/heads/master 7e385cb50 -> 30c933afc


Updated javascript and added a debug-simulator command


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/commit/30c933af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/tree/30c933af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/diff/30c933af

Branch: refs/heads/master
Commit: 30c933afcd44084eb3e32080c91c2f7165c97726
Parents: 7e385cb
Author: Gord Tanner <gt...@gmail.com>
Authored: Mon Nov 12 20:57:15 2012 -0500
Committer: Gord Tanner <gt...@gmail.com>
Committed: Mon Nov 12 20:57:15 2012 -0500

----------------------------------------------------------------------
 bin/templates/project/blackberry.xml |   95 ++++++++++++
 bin/templates/project/build.xml      |    6 +
 bin/templates/project/playbook.xml   |   15 ++
 bin/templates/project/qnx.xml        |   17 ++
 javascript/cordova.blackberry.js     |  230 ++++++++++++++++++-----------
 5 files changed, 274 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/30c933af/bin/templates/project/blackberry.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/blackberry.xml b/bin/templates/project/blackberry.xml
index e34ba69..ce3099f 100644
--- a/bin/templates/project/blackberry.xml
+++ b/bin/templates/project/blackberry.xml
@@ -165,6 +165,101 @@
             </then>
         </if>
     </target>
+
+    <target name="debug-simulator" depends="package-app">
+        <bbwp code-sign="false" debug="true" />
+    
+        <!-- Find the simulator directory -->
+        <set-simulator-dir />
+
+        <!-- Locate BBWP simulator directory. There may be multiple, so choose the first. -->
+        <path id="bbwp.sim.path">
+            <first>
+                <fileset dir="${properties.blackberry.bbwp.dir}/simpack">
+                    <include name="**/handhelds.manifest.txt" />
+                </fileset>
+            </first>
+        </path>
+        <dirname property="bbwp.sim.dir" file="${toString:bbwp.sim.path}" />
+
+        <!-- Simulator directory: Use sim.dir property if set in project.properties file. 
+             Otherwise, use bbwp simulator directory. -->
+        <condition 
+            property="simulator.dir" 
+            value="${properties.blackberry.sim.dir}" 
+            else="${bbwp.sim.dir}">
+                <available file="${properties.blackberry.sim.dir}" type="dir" />
+        </condition>
+        <echo message="Simulator directory=${simulator.dir}" />
+
+        <!-- Simulator binary: Use sim.bin property if set in project.properties file  
+             or try setting to 'defaultSimulator.bat' in simulator directory. -->
+        <condition 
+            property="sim.bin" 
+            value="${properties.blackberry.sim.bin}" 
+            else="defaultSimulator.bat">
+                <available file="${simulator.dir}/${properties.blackberry.sim.bin}"/>
+        </condition>
+
+        <!-- If simulator executable does not exist, use the first device listed 
+             in the 'handhelds.manifest.txt' file in the simulator directory. -->
+        <loadfile 
+            property="device.list"
+            srcFile="${simulator.dir}/handhelds.manifest.txt">
+            <filterchain>
+                <tokenFilter>
+                    <stringtokenizer/>
+                </tokenFilter>
+            </filterchain>
+        </loadfile>
+
+        <propertyregex property="device"
+            input="${device.list}"
+            regexp="^\d{4}"
+            select="\0"
+            override="true" />
+        <property name="device.bin" value="${device}.bat" />
+
+        <condition
+            property="simulator.bin" 
+            value="${sim.bin}"
+            else="${device.bin}">
+                <available file="${simulator.dir}/${sim.bin}" />
+        </condition>
+        
+        <echo message="Simulator executable=${simulator.dir}/${simulator.bin}" />
+
+        <!-- Close running simulators -->
+        <echo message="Closing all running simulators..." />
+        <exec executable="${simulator.dir}/fledgecontroller.exe" dir="${simulator.dir}" spawn="false">
+            <arg value="/execute=kill" />
+        </exec>
+
+        <!-- MDS directory: Use mds.dir property if set in project.properties file. 
+             Otherwise, use bbwp MDS directory. -->
+        <condition 
+            property="mds.dir" 
+            value="${properties.blackberry.mds.dir}" 
+            else="${properties.blackberry.bbwp.dir}/mds">
+                <available file="${properties.blackberry.mds.dir}" type="dir" />
+        </condition>
+        <echo message="MDS directory=${mds.dir}" />
+        
+        <copy todir="${simulator.dir}">
+            <fileset dir="${build.dir}/StandardInstall" includes="*.cod, *.cso, *.csl, *.alx" />
+        </copy>
+        <exec executable="${mds.dir}/run.bat" dir="${mds.dir}" spawn="true" />
+        <exec executable="${simulator.dir}/${simulator.bin}" dir="${simulator.dir}" spawn="true" />
+
+        <!-- Only invoke FledgeHook.exe if it is found. Newer versions of the
+             WebWorks SDK do not include it. -->
+        <if>
+            <available file="${properties.blackberry.bbwp.dir}/FledgeHook.exe" />
+            <then>
+                <exec executable="${properties.blackberry.bbwp.dir}/FledgeHook.exe" dir="${properties.blackberry.bbwp.dir}" spawn="true" />
+            </then>
+        </if>
+    </target>
     
     <!-- PACKAGE-APP -->
     

http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/30c933af/bin/templates/project/build.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/build.xml b/bin/templates/project/build.xml
index cab5c8c..610929b 100644
--- a/bin/templates/project/build.xml
+++ b/bin/templates/project/build.xml
@@ -57,6 +57,12 @@
         </subant>
     </target>
 
+    <target name="debug-simulator">
+        <subant target="debug-simulator">
+            <fileset dir="." includes="${subant.file}"/>
+        </subant>
+    </target>
+
     <target name="debug-device">
         <subant target="debug-device">
             <fileset dir="." includes="${subant.file}"/>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/30c933af/bin/templates/project/playbook.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/playbook.xml b/bin/templates/project/playbook.xml
index 6ee2af4..b0b087a 100644
--- a/bin/templates/project/playbook.xml
+++ b/bin/templates/project/playbook.xml
@@ -97,6 +97,21 @@
         </exec>
     </target>
     
+    <target name="debug-simulator" depends="package-app">
+        <bbwp code-sign="false" debug="true" />
+        <echo>This tool will not open the simulator for you </echo>
+
+        <exec executable="${blackberry-deploy}" dir="." failonerror="true">
+            <arg value="-installApp" />
+            <arg value="-launchApp" />
+            <arg value="-device" />
+            <arg value="${properties.playbook.sim.ip}" />
+            <arg value="-password" />
+            <arg value="${properties.playbook.sim.password}" />
+            <arg value="-package" />
+            <arg file="${build.dir}/${cod.name}.bar" />
+        </exec>
+    </target>
     <!-- PACKAGE-APP -->
     
     <target name="package-app" depends="generate-cod-name, clean">

http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/30c933af/bin/templates/project/qnx.xml
----------------------------------------------------------------------
diff --git a/bin/templates/project/qnx.xml b/bin/templates/project/qnx.xml
index 544511c..d63ae5d 100644
--- a/bin/templates/project/qnx.xml
+++ b/bin/templates/project/qnx.xml
@@ -97,6 +97,23 @@
         </exec>
     </target>
     
+    <target name="debug-simulator" depends="package-app">
+
+        <bbwp code-sign="false" debug="true" />
+        <echo>This tool will not open the simulator for you </echo>
+
+        <exec executable="${blackberry-deploy}" dir="." failonerror="true">
+            <arg value="-installApp" />
+            <arg value="-launchApp" />
+            <arg value="-device" />
+            <arg value="${properties.qnx.sim.ip}" />
+            <arg value="-password" />
+            <arg value="${properties.qnx.sim.password}" />
+            <arg value="-package" />
+            <arg file="${build.dir}/simulator/${cod.name}.bar" />
+        </exec>
+    </target>
+
     <!-- PACKAGE-APP -->
     
     <target name="package-app" depends="generate-cod-name, clean">

http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/30c933af/javascript/cordova.blackberry.js
----------------------------------------------------------------------
diff --git a/javascript/cordova.blackberry.js b/javascript/cordova.blackberry.js
index 7890da6..3ed2e15 100644
--- a/javascript/cordova.blackberry.js
+++ b/javascript/cordova.blackberry.js
@@ -1,6 +1,6 @@
-// commit 0919268c22c87e3b2640999d963ae074a33d445e
+// commit 759bd701e4557921913da13555fdd4661dd98cf6
 
-// File generated at :: Fri Nov 02 2012 09:45:24 GMT-0400 (EDT)
+// File generated at :: Mon Nov 12 2012 20:30:55 GMT-0500 (EST)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -329,14 +329,24 @@ function each(objects, func, context) {
     }
 }
 
+function clobber(obj, key, value) {
+    obj[key] = value;
+    // Getters can only be overridden by getters.
+    if (obj[key] !== value) {
+        utils.defineGetter(obj, key, function() {
+            return value;
+        });
+    }
+}
+
 function assignOrWrapInDeprecateGetter(obj, key, value, message) {
     if (message) {
         utils.defineGetter(obj, key, function() {
-            window.console && console.log(message);
+            console.log(message);
             return value;
         });
     } else {
-        obj[key] = value;
+        clobber(obj, key, value);
     }
 }
 
@@ -395,8 +405,11 @@ function recursiveMerge(target, src) {
                 // If the target object is a constructor override off prototype.
                 target.prototype[prop] = src[prop];
             } else {
-                target[prop] = typeof src[prop] === 'object' ? recursiveMerge(
-                        target[prop], src[prop]) : src[prop];
+                if (typeof src[prop] === 'object') {
+                    target[prop] = recursiveMerge(target[prop], src[prop]);
+                } else {
+                    clobber(target, prop, src[prop]);
+                }
             }
         }
     }
@@ -737,9 +750,6 @@ module.exports = {
                 compass:{
                     path: 'cordova/plugin/compass'
                 },
-                connection: {
-                    path: 'cordova/plugin/network'
-                },
                 contacts: {
                     path: 'cordova/plugin/contacts'
                 },
@@ -907,6 +917,15 @@ module.exports = {
         resolveLocalFileSystemURI:{
             path: 'cordova/plugin/resolveLocalFileSystemURI'
         }
+    },
+    clobbers: {
+        navigator: {
+            children: {
+                connection: {
+                    path: 'cordova/plugin/network'
+                }
+            },
+        }
     }
 };
 
@@ -950,7 +969,6 @@ module.exports = function(success, fail, service, action, args) {
                 catch (e) {
                     console.log("Error in success callback: "+cordova.callbackId+" = "+e);
                 }
-
             }
             return v.message;
         } else if (v.status == cordova.callbackStatus.NO_RESULT) {
@@ -983,15 +1001,17 @@ define("cordova/platform", function(require, exports, module) {
 module.exports = {
     id: "blackberry",
     runtime: function () {
-        var version = blackberry.system.softwareVersion;
-        window.wtf = version;
-        if (version.match(/^10/)) {
+        if (navigator.userAgent.indexOf("BB10") > -1) {
             return 'qnx';
         }
-        else if (version.match(/^BlackBerry/)) {
+        else if (navigator.userAgent.indexOf("PlayBook") > -1) {
             return 'air';
         }
+        else if (navigator.userAgent.indexOf("BlackBerry") > -1) {
+            return 'java';
+        }
         else {
+            console.log("Unknown user agent?!?!? defaulting to java");
             return 'java';
         }
     },
@@ -7940,7 +7960,7 @@ module.exports = {
 // file: lib/blackberry/plugin/java/app.js
 define("cordova/plugin/java/app", function(require, exports, module) {
 
-var exec = require('cordova/exec');
+var exec = require('cordova/exec'),
     platform = require('cordova/platform'),
     manager = require('cordova/plugin/' + platform.runtime() + '/manager');
 
@@ -8612,49 +8632,9 @@ if (typeof navigator != 'undefined') {
     });
 }
 
-var NetworkConnection = function () {
-    this.type = null;
-    this._firstRun = true;
-    this._timer = null;
-    this.timeout = 500;
-
-    var me = this;
-
-    channel.onCordovaReady.subscribe(function() {
-        me.getInfo(function (info) {
-            me.type = info;
-            if (info === "none") {
-                // set a timer if still offline at the end of timer send the offline event
-                me._timer = setTimeout(function(){
-                    cordova.fireDocumentEvent("offline");
-                    me._timer = null;
-                    }, me.timeout);
-            } else {
-                // If there is a current offline event pending clear it
-                if (me._timer !== null) {
-                    clearTimeout(me._timer);
-                    me._timer = null;
-                }
-                cordova.fireDocumentEvent("online");
-            }
-
-            // should only fire this once
-            if (me._firstRun) {
-                me._firstRun = false;
-                channel.onCordovaConnectionReady.fire();
-            }
-        },
-        function (e) {
-            // If we can't get the network info we should still tell Cordova
-            // to fire the deviceready event.
-            if (me._firstRun) {
-                me._firstRun = false;
-                channel.onCordovaConnectionReady.fire();
-            }
-            console.log("Error initializing Network Connection: " + e);
-        });
-    });
-};
+function NetworkConnection() {
+    this.type = 'unknown';
+}
 
 /**
  * Get connection info
@@ -8662,12 +8642,48 @@ var NetworkConnection = function () {
  * @param {Function} successCallback The function to call when the Connection data is available
  * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
  */
-NetworkConnection.prototype.getInfo = function (successCallback, errorCallback) {
-    // Get info
+NetworkConnection.prototype.getInfo = function(successCallback, errorCallback) {
     exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []);
 };
 
-module.exports = new NetworkConnection();
+var me = new NetworkConnection();
+var timerId = null;
+var timeout = 500;
+
+channel.onCordovaReady.subscribe(function() {
+    me.getInfo(function(info) {
+        me.type = info;
+        if (info === "none") {
+            // set a timer if still offline at the end of timer send the offline event
+            timerId = setTimeout(function(){
+                cordova.fireDocumentEvent("offline");
+                timerId = null;
+            }, timeout);
+        } else {
+            // If there is a current offline event pending clear it
+            if (timerId !== null) {
+                clearTimeout(timerId);
+                timerId = null;
+            }
+            cordova.fireDocumentEvent("online");
+        }
+
+        // should only fire this once
+        if (channel.onCordovaConnectionReady.state !== 2) {
+            channel.onCordovaConnectionReady.fire();
+        }
+    },
+    function (e) {
+        // If we can't get the network info we should still tell Cordova
+        // to fire the deviceready event.
+        if (channel.onCordovaConnectionReady.state !== 2) {
+            channel.onCordovaConnectionReady.fire();
+        }
+        console.log("Error initializing Network Connection: " + e);
+    });
+});
+
+module.exports = me;
 
 });
 
@@ -8743,15 +8759,16 @@ module.exports = {
     start: function (args, win, fail) {
         interval = window.setInterval(function () {
             win({
-                level: 0,
-                isPlugged: false
+                level: navigator.webkitBattery.level * 100,
+                isPlugged: navigator.webkitBattery.charging
             });
         }, 500);
         return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
     },
 
     stop: function (args, win, fail) {
-        window.stopInterval(interval);
+        window.clearInterval(interval);
+        return { "status" : cordova.callbackStatus.OK, "message" : "stopped" };
     }
 };
 
@@ -8785,7 +8802,7 @@ function capture(action, win, fail) {
     blackberry.invoke.card.invokeCamera(action, function (path) {
         var sb = blackberry.io.sandbox;
         blackberry.io.sandbox = false;
-        webkitRequestFileSystem(PERSISTENT, 1024, function (fs) {
+        window.webkitRequestFileSystem(window.PERSISTENT, 1024, function (fs) {
             fs.root.getFile(path, {}, function (fe) {
                 fe.file(function (file) {
                     file.fullPath = fe.fullPath;
@@ -9112,8 +9129,7 @@ module.exports = {
 // file: lib/blackberry/plugin/qnx/network.js
 define("cordova/plugin/qnx/network", function(require, exports, module) {
 
-var cordova = require('cordova'),
-    connection = require('cordova/plugin/Connection');
+var cordova = require('cordova');
 
 module.exports = {
     getConnectionInfo: function (args, win, fail) {
@@ -9323,7 +9339,7 @@ module.exports = {
     },
     stop: function (args, win, fail) {
         window.removeEventListener("devicemotion", callback);
-        return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
+        return { "status" : cordova.callbackStatus.OK, "message" : "removed" };
     }
 };
 
@@ -9426,7 +9442,6 @@ module.exports = {
 
             result = {"status" : 1, "message" : "Seek to audio succeeded" };
         }
-
         return result;
     },
     pausePlayingAudio: function (args, win, fail) {
@@ -9570,6 +9585,30 @@ utils.defineGetter = function(obj, key, func) {
     }
 };
 
+utils.arrayIndexOf = function(a, item) {
+    if (a.indexOf) {
+        return a.indexOf(item);
+    }
+    var len = a.length;
+    for (var i = 0; i < len; ++i) {
+        if (a[i] == item) {
+            return i;
+        }
+    }
+    return -1;
+};
+
+/**
+ * Returns whether the item was found in the array.
+ */
+utils.arrayRemove = function(a, item) {
+    var index = utils.arrayIndexOf(a, item);
+    if (index != -1) {
+        a.splice(index, 1);
+    }
+    return index != -1;
+};
+
 /**
  * Returns an indication of whether the argument is an array or not
  */
@@ -9765,10 +9804,10 @@ window.cordova = require('cordova');
 (function (context) {
     // Replace navigator before any modules are required(), to ensure it happens as soon as possible.
     // We replace it so that properties that can't be clobbered can instead be overridden.
-    if (typeof navigator != 'undefined') {
-        var CordovaNavigator = function () {};
-        CordovaNavigator.prototype = navigator;
-        navigator = new CordovaNavigator();
+    if (context.navigator) {
+        function CordovaNavigator() {}
+        CordovaNavigator.prototype = context.navigator;
+        context.navigator = new CordovaNavigator();
     }
 
     var channel = require("cordova/channel"),
@@ -9783,15 +9822,27 @@ window.cordova = require('cordova');
                         platform = require('cordova/platform');
 
                     // Drop the common globals into the window object, but be nice and don't overwrite anything.
-                    builder.build(base.objects).intoButDoNotClobber(window);
+                    builder.build(base.objects).intoButDoNotClobber(context);
+
+                    if (base.merges) {
+                        builder.build(base.merges).intoAndMerge(context);
+                    }
+
+                    if (base.clobbers) {
+                        builder.build(base.clobbers).intoAndClobber(context);
+                    }
 
                     // Drop the platform-specific globals into the window object
                     // and clobber any existing object.
-                    builder.build(platform.objects).intoAndClobber(window);
+                    if (platform.object) {
+                        builder.build(platform.objects).intoAndClobber(context);
+                    }
 
                     // Merge the platform-specific overrides/enhancements into
                     // the window object.
-                    builder.build(platform.merges).intoAndMerge(window);
+                    if (platform.merges) {
+                        builder.build(platform.merges).intoAndMerge(context);
+                    }
 
                     // Call the platform-specific initialization
                     platform.initialize();
@@ -9823,20 +9874,21 @@ window.cordova = require('cordova');
 
 // file: lib/scripts/bootstrap-blackberry.js
 
-switch(require('cordova/platform').runtime()) {
-case 'qnx':
-    console.log('booting!');
-    document.addEventListener("webworksready", function () {
+document.addEventListener("DOMContentLoaded", function () {
+    switch(require('cordova/platform').runtime()) {
+    case 'qnx':
+        document.addEventListener("webworksready", function () {
+            require('cordova/channel').onNativeReady.fire();
+        });
+        break;
+    case 'air':
         require('cordova/channel').onNativeReady.fire();
-    });
-    break;
-case 'air':
-    require('cordova/channel').onNativeReady.fire();
-    break;
-case 'java':
-    //nothing to do for java
-    break;
-}
+        break;
+    case 'java':
+        //nothing to do for java
+        break;
+    }
+});
 
 
 })();
\ No newline at end of file