[COMMON] cleanup Media.onStatus, handles null media case, logs errors if 
logging is available


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/4214ffe2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/4214ffe2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/4214ffe2

Branch: refs/heads/master
Commit: 4214ffe2c319608cd1065caed5e6e4ddd4720fd9
Parents: 490465b
Author: Jesse MacFadyen <purplecabb...@gmail.com>
Authored: Thu Sep 6 13:02:14 2012 -0700
Committer: Jesse MacFadyen <purplecabb...@gmail.com>
Committed: Thu Sep 6 13:02:14 2012 -0700

----------------------------------------------------------------------
 lib/common/plugin/Media.js |   51 +++++++++++++++++++++-----------------
 1 files changed, 28 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/4214ffe2/lib/common/plugin/Media.js
----------------------------------------------------------------------
diff --git a/lib/common/plugin/Media.js b/lib/common/plugin/Media.js
index 6b5310d..281ca94 100644
--- a/lib/common/plugin/Media.js
+++ b/lib/common/plugin/Media.js
@@ -153,34 +153,39 @@ Media.prototype.setVolume = function(volume) {
  * PRIVATE
  *
  * @param id            The media object id (string)
- * @param status        The status code (int)
- * @param msg           The status message (string)
+ * @param msgType       The 'type' of update this is
+ * @param value         Use of value is determined by the msgType
  */
-Media.onStatus = function(id, msg, value) {
+Media.onStatus = function(id, msgType, value) {
+
     var media = mediaObjects[id];
-    // If state update
-    if (msg === Media.MEDIA_STATE) {
-        if (media.statusCallback) {
-            media.statusCallback(value);
-        }
-        if (value === Media.MEDIA_STOPPED) {
-            if (media.successCallback) {
-                media.successCallback();
-            }
-        }
-    }
-    else if (msg === Media.MEDIA_DURATION) {
-        media._duration = value;
-    }
-    else if (msg === Media.MEDIA_ERROR) {
-        if (media.errorCallback) {
-            // value should be a MediaError object when msg == MEDIA_ERROR
-            media.errorCallback(value);
+
+    if(media) {
+        switch(msgType) {
+            case Media.MEDIA_STATE :
+                media.statusCallback && media.statusCallback(value);
+                if(value == Media.MEDIA_STOPPED) {
+                    media.successCallback && media.successCallback();
+                }
+                break;
+            case Media.MEDIA_DURATION :
+                media._duration = value;
+                break;
+            case Media.MEDIA_ERROR :
+                media.errorCallback && media.errorCallback({'code':value}); 
+                break;
+            case Media.MEDIA_POSITION :
+                media._position = Number(value);
+                break;
+            default :
+                console.error("Unhandled Media.onStatus :: " + msgType); 
+                break;
         }
     }
-    else if (msg === Media.MEDIA_POSITION) {
-        media._position = value;
+    else {
+        console.error("Received Media.onStatus callback for unknown media :: " 
+ id);
     }
+
 };
 
 module.exports = Media;
\ No newline at end of file

Reply via email to