You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by Patrick Mueller <pm...@gmail.com> on 2012/03/30 13:56:00 UTC

internal Cordova events doc'd? was: git commit: changing plugins that rely on exec during initialization ...

Do we have these internal events like `onCordovaInfoReady` documented
anywhere?  I think if someone asked me how these work today, I'd tell them
to go look at the errgen platform, where I figured out what they all were
by debugging/code scanning.

I was kinda curious, and googled `onCordovaInfoReady`.  AND GOT HITS.  :-)

Nothing documenting the events though :-(

---------- Forwarded message ----------
From: <fi...@apache.org>
Date: Thu, Mar 29, 2012 at 19:21
Subject: [3/3] git commit: changing plugins that rely on exec during
initialization to attach first to CordovaReady, as the communication bridge
may not be fully ready before this event fires.
To: callback-commits@incubator.apache.org


changing plugins that rely on exec during initialization to attach first to
CordovaReady, as the communication bridge may not be fully ready before
this event fires.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/d2fc7133
Tree:
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/d2fc7133
Diff:
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/d2fc7133

Branch: refs/heads/master
Commit: d2fc71333c12d1b13cdcae58b50eec26a82e3b30
Parents: cddb3b8
Author: Fil Maj <ma...@gmail.com>
Authored: Thu Mar 29 16:12:25 2012 -0700
Committer: Fil Maj <ma...@gmail.com>
Committed: Thu Mar 29 16:12:25 2012 -0700

----------------------------------------------------------------------
 lib/android/plugin/android/device.js       |    9 ++-
 lib/blackberry/plugin/blackberry/device.js |   16 +++---
 lib/common/plugin/network.js               |   73 ++++++++++++-----------
 lib/playbook/plugin/playbook/device.js     |    7 +-
 4 files changed, 54 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/android/plugin/android/device.js
----------------------------------------------------------------------
diff --git a/lib/android/plugin/android/device.js
b/lib/android/plugin/android/device.js
index 44a80c6..353d0ed 100644
--- a/lib/android/plugin/android/device.js
+++ b/lib/android/plugin/android/device.js
@@ -16,8 +16,9 @@ function Device() {
    this.cordova = null;

    var me = this;
-    this.getInfo(
-        function(info) {
+
+    channel.onCordovaReady.subscribeOnce(function() {
+        this.getInfo(function(info) {
            me.available = true;
            me.platform = info.platform;
            me.version = info.version;
@@ -25,11 +26,11 @@ function Device() {
            me.uuid = info.uuid;
            me.cordova = info.cordova;
            channel.onCordovaInfoReady.fire();
-        },
-        function(e) {
+        },function(e) {
            me.available = false;
            utils.alert("[ERROR] Error initializing Cordova: " + e);
        });
+    });
 }

 /**

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/blackberry/plugin/blackberry/device.js
----------------------------------------------------------------------
diff --git a/lib/blackberry/plugin/blackberry/device.js
b/lib/blackberry/plugin/blackberry/device.js
index 42a0647..01b41e5 100644
--- a/lib/blackberry/plugin/blackberry/device.js
+++ b/lib/blackberry/plugin/blackberry/device.js
@@ -2,8 +2,8 @@ var me = {},
    channel = require('cordova/channel'),
    exec = require('cordova/exec');

-exec(
-    function (device) {
+channel.onCordovaReady.subscribeOnce(function() {
+    exec(function (device) {
        me.platform = device.platform;
        me.version  = device.version;
        me.name     = device.name;
@@ -11,13 +11,13 @@ exec(
        me.cordova  = device.cordova;

        channel.onCordovaInfoReady.fire();
-    },
-    function (e) {
+    },function (e) {
        console.log("error initializing cordova: " + e);
    },
-    "Device",
-    "getDeviceInfo",
-    []
-);
+        "Device",
+        "getDeviceInfo",
+        []
+    );
+});

 module.exports = me;

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/common/plugin/network.js
----------------------------------------------------------------------
diff --git a/lib/common/plugin/network.js b/lib/common/plugin/network.js
index 899aab5..f5b4fd4 100644
--- a/lib/common/plugin/network.js
+++ b/lib/common/plugin/network.js
@@ -3,46 +3,47 @@ var exec = require('cordova/exec'),
    channel = require('cordova/channel');

 var NetworkConnection = function () {
-        this.type = null;
-        this._firstRun = true;
-        this._timer = null;
-        this.timeout = 500;
+    this.type = null;
+    this._firstRun = true;
+    this._timer = null;
+    this.timeout = 500;

-        var me = this;
+    var me = this;

-        this.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");
+    channel.onCordovaReady.subscribeOnce(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);
-            });
+            // 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);
+        });
+    });
 };

 /**

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/playbook/plugin/playbook/device.js
----------------------------------------------------------------------
diff --git a/lib/playbook/plugin/playbook/device.js
b/lib/playbook/plugin/playbook/device.js
index 90ec376..f3d86ec 100644
--- a/lib/playbook/plugin/playbook/device.js
+++ b/lib/playbook/plugin/playbook/device.js
@@ -2,8 +2,8 @@ var me = {},
    exec = require('cordova/exec'),
    channel = require('cordova/channel');

-exec(
-    function (device) {
+channel.onCordovaReady.subscribeOnce(function() {
+    exec(function (device) {
        me.platform = device.platform;
        me.version  = device.version;
        me.name     = device.name;
@@ -18,6 +18,7 @@ exec(
    "Device",
    "getDeviceInfo",
    []
-);
+    );
+});

 module.exports = me;




-- 
Patrick Mueller
http://muellerware.org

Re: internal Cordova events doc'd? was: git commit: changing plugins that rely on exec during initialization ...

Posted by Filip Maj <fi...@adobe.com>.
Noted! Added to my todo :)

On 3/30/12 8:35 AM, "Patrick Mueller" <pm...@gmail.com> wrote:

>On Fri, Mar 30, 2012 at 09:53, Bryce Curtis <cu...@gmail.com>
>wrote:
>
>> It used to be documented in phonegap.js.base, but I don't see it in
>> cordova-js anywhere.  Probably good to put in docs though.  Here's the
>> comment that used to be there.
>>
>
>It will be good to put in the 'plugin-authoring' and 'platform-authoring'
>docs, not in the user docs.  Until we need to make it 'public API'.  But,
>yes.
>
>-- 
>Patrick Mueller
>http://muellerware.org


Re: internal Cordova events doc'd? was: git commit: changing plugins that rely on exec during initialization ...

Posted by Patrick Mueller <pm...@gmail.com>.
On Fri, Mar 30, 2012 at 09:53, Bryce Curtis <cu...@gmail.com> wrote:

> It used to be documented in phonegap.js.base, but I don't see it in
> cordova-js anywhere.  Probably good to put in docs though.  Here's the
> comment that used to be there.
>

It will be good to put in the 'plugin-authoring' and 'platform-authoring'
docs, not in the user docs.  Until we need to make it 'public API'.  But,
yes.

-- 
Patrick Mueller
http://muellerware.org

Re: internal Cordova events doc'd? was: git commit: changing plugins that rely on exec during initialization ...

Posted by Bryce Curtis <cu...@gmail.com>.
It used to be documented in phonegap.js.base, but I don't see it in
cordova-js anywhere.  Probably good to put in docs though.  Here's the
comment that used to be there.

/**
 * The order of events during page load and Cordova startup is as follows:
 *
 * onDOMContentLoaded         Internal event that is received when the web
page is loaded and parsed.
 * window.onload              Body onload event.
 * onNativeReady              Internal event that indicates the Cordova
native side is ready.
 * onCordovaInit             Internal event that kicks off creation of all
Cordova JavaScript objects (runs constructors).
 * onCordovaReady            Internal event fired when all Cordova
JavaScript objects have been created
 * onCordovaInfoReady        Internal event fired when device properties
are available
 * onCordovaConnectionReady  Internal event fired when the connection
property has been set.
 * onDeviceReady              User event fired to indicate that Cordova is
ready
 * onResume                   User event fired to indicate a start/resume
lifecycle event
 * onPause                    User event fired to indicate a pause
lifecycle event
 * onDestroy                  Internal event fired when app is being
destroyed (User should use window.onunload event, not this one).
 *
 * The only Cordova events that user code should register for are:
 *      deviceready           Cordova native code is initialized and
Cordova APIs can be called from JavaScript
 *      pause                 App has moved to background
 *      resume                App has returned to foreground
 *
 * Listeners can be registered as:
 *      document.addEventListener("deviceready", myDeviceReadyListener,
false);
 *      document.addEventListener("resume", myResumeListener, false);
 *      document.addEventListener("pause", myPauseListener, false);
 *
 * The DOM lifecycle events should be used for saving and restoring state
 *      window.onload
 *      window.onunload
 */


On Fri, Mar 30, 2012 at 6:56 AM, Patrick Mueller <pm...@gmail.com> wrote:

> Do we have these internal events like `onCordovaInfoReady` documented
> anywhere?  I think if someone asked me how these work today, I'd tell them
> to go look at the errgen platform, where I figured out what they all were
> by debugging/code scanning.
>
> I was kinda curious, and googled `onCordovaInfoReady`.  AND GOT HITS.  :-)
>
> Nothing documenting the events though :-(
>
> ---------- Forwarded message ----------
> From: <fi...@apache.org>
> Date: Thu, Mar 29, 2012 at 19:21
> Subject: [3/3] git commit: changing plugins that rely on exec during
> initialization to attach first to CordovaReady, as the communication bridge
> may not be fully ready before this event fires.
> To: callback-commits@incubator.apache.org
>
>
> changing plugins that rely on exec during initialization to attach first to
> CordovaReady, as the communication bridge may not be fully ready before
> this event fires.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/d2fc7133
> Tree:
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/d2fc7133
> Diff:
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/d2fc7133
>
> Branch: refs/heads/master
> Commit: d2fc71333c12d1b13cdcae58b50eec26a82e3b30
> Parents: cddb3b8
> Author: Fil Maj <ma...@gmail.com>
> Authored: Thu Mar 29 16:12:25 2012 -0700
> Committer: Fil Maj <ma...@gmail.com>
> Committed: Thu Mar 29 16:12:25 2012 -0700
>
> ----------------------------------------------------------------------
>  lib/android/plugin/android/device.js       |    9 ++-
>  lib/blackberry/plugin/blackberry/device.js |   16 +++---
>  lib/common/plugin/network.js               |   73 ++++++++++++-----------
>  lib/playbook/plugin/playbook/device.js     |    7 +-
>  4 files changed, 54 insertions(+), 51 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/android/plugin/android/device.js
> ----------------------------------------------------------------------
> diff --git a/lib/android/plugin/android/device.js
> b/lib/android/plugin/android/device.js
> index 44a80c6..353d0ed 100644
> --- a/lib/android/plugin/android/device.js
> +++ b/lib/android/plugin/android/device.js
> @@ -16,8 +16,9 @@ function Device() {
>    this.cordova = null;
>
>    var me = this;
> -    this.getInfo(
> -        function(info) {
> +
> +    channel.onCordovaReady.subscribeOnce(function() {
> +        this.getInfo(function(info) {
>            me.available = true;
>            me.platform = info.platform;
>            me.version = info.version;
> @@ -25,11 +26,11 @@ function Device() {
>            me.uuid = info.uuid;
>            me.cordova = info.cordova;
>            channel.onCordovaInfoReady.fire();
> -        },
> -        function(e) {
> +        },function(e) {
>            me.available = false;
>            utils.alert("[ERROR] Error initializing Cordova: " + e);
>        });
> +    });
>  }
>
>  /**
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/blackberry/plugin/blackberry/device.js
> ----------------------------------------------------------------------
> diff --git a/lib/blackberry/plugin/blackberry/device.js
> b/lib/blackberry/plugin/blackberry/device.js
> index 42a0647..01b41e5 100644
> --- a/lib/blackberry/plugin/blackberry/device.js
> +++ b/lib/blackberry/plugin/blackberry/device.js
> @@ -2,8 +2,8 @@ var me = {},
>    channel = require('cordova/channel'),
>    exec = require('cordova/exec');
>
> -exec(
> -    function (device) {
> +channel.onCordovaReady.subscribeOnce(function() {
> +    exec(function (device) {
>        me.platform = device.platform;
>        me.version  = device.version;
>        me.name     = device.name;
> @@ -11,13 +11,13 @@ exec(
>        me.cordova  = device.cordova;
>
>        channel.onCordovaInfoReady.fire();
> -    },
> -    function (e) {
> +    },function (e) {
>        console.log("error initializing cordova: " + e);
>    },
> -    "Device",
> -    "getDeviceInfo",
> -    []
> -);
> +        "Device",
> +        "getDeviceInfo",
> +        []
> +    );
> +});
>
>  module.exports = me;
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/common/plugin/network.js
> ----------------------------------------------------------------------
> diff --git a/lib/common/plugin/network.js b/lib/common/plugin/network.js
> index 899aab5..f5b4fd4 100644
> --- a/lib/common/plugin/network.js
> +++ b/lib/common/plugin/network.js
> @@ -3,46 +3,47 @@ var exec = require('cordova/exec'),
>    channel = require('cordova/channel');
>
>  var NetworkConnection = function () {
> -        this.type = null;
> -        this._firstRun = true;
> -        this._timer = null;
> -        this.timeout = 500;
> +    this.type = null;
> +    this._firstRun = true;
> +    this._timer = null;
> +    this.timeout = 500;
>
> -        var me = this;
> +    var me = this;
>
> -        this.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");
> +    channel.onCordovaReady.subscribeOnce(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);
> -            });
> +            // 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);
> +        });
> +    });
>  };
>
>  /**
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/d2fc7133/lib/playbook/plugin/playbook/device.js
> ----------------------------------------------------------------------
> diff --git a/lib/playbook/plugin/playbook/device.js
> b/lib/playbook/plugin/playbook/device.js
> index 90ec376..f3d86ec 100644
> --- a/lib/playbook/plugin/playbook/device.js
> +++ b/lib/playbook/plugin/playbook/device.js
> @@ -2,8 +2,8 @@ var me = {},
>    exec = require('cordova/exec'),
>    channel = require('cordova/channel');
>
> -exec(
> -    function (device) {
> +channel.onCordovaReady.subscribeOnce(function() {
> +    exec(function (device) {
>        me.platform = device.platform;
>        me.version  = device.version;
>        me.name     = device.name;
> @@ -18,6 +18,7 @@ exec(
>    "Device",
>    "getDeviceInfo",
>    []
> -);
> +    );
> +});
>
>  module.exports = me;
>
>
>
>
> --
> Patrick Mueller
> http://muellerware.org
>