You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/10/22 17:45:16 UTC

[06/25] js commit: [All][CB-4016] plugin loading uses script injection to load cordova_plugins.js (cherry picked from commit 0ce47184000f9187654e1532265b9c9ae0c93330)

[All][CB-4016] plugin loading uses script injection to load cordova_plugins.js
(cherry picked from commit 0ce47184000f9187654e1532265b9c9ae0c93330)


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

Branch: refs/heads/2.9.x
Commit: af01151cba7824d974e0277cb48dd7d1d241a962
Parents: 931e771
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Tue Jul 9 18:43:26 2013 -0700
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Oct 22 11:35:13 2013 -0400

----------------------------------------------------------------------
 lib/common/pluginloader.js | 38 +++++---------------------------------
 1 file changed, 5 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/af01151c/lib/common/pluginloader.js
----------------------------------------------------------------------
diff --git a/lib/common/pluginloader.js b/lib/common/pluginloader.js
index f160312..4b5955d 100644
--- a/lib/common/pluginloader.js
+++ b/lib/common/pluginloader.js
@@ -33,11 +33,12 @@ function scriptLoadedCallback() {
 }
 
 // Helper function to inject a <script> tag.
-function injectScript(url, onload) {
+function injectScript(url, onload, onerror) {
     scriptCounter++;
     var script = document.createElement("script");
     // onload fires even when script fails loads with an error.
     script.onload = onload;
+    script.onerror = onerror; 
     script.src = url;
     document.head.appendChild(script);
 }
@@ -104,7 +105,7 @@ function injectPluginScript(pathPrefix) {
             // this is an acceptable error, pre-3.0.0, so we just move on.
             finishPluginLoading();
         }
-    });
+    },finishPluginLoading); // also, add script load error handler for file not found
 }
 
 function findCordovaPath() {
@@ -127,38 +128,9 @@ function findCordovaPath() {
 exports.load = function() {
     var pathPrefix = findCordovaPath();
     if (pathPrefix === null) {
-        console.warn('Could not find cordova.js script tag. Plugin loading may fail.');
+        console.log('Could not find cordova.js script tag. Plugin loading may fail.');
         pathPrefix = '';
     }
-
-    // Try to XHR the cordova_plugins.json file asynchronously.
-    var xhr = new XMLHttpRequest();
-    xhr.onload = function() {
-        // If the response is a JSON string which composes an array, call handlePluginsObject.
-        // If the request fails, or the response is not a JSON array, just call finishPluginLoading.
-        var obj;
-        try {
-            obj = (this.status === 0 || this.status === 200) && this.responseText && JSON.parse(this.responseText);
-        } catch (err) {
-            // obj will be undefined.
-        }
-        if (Array.isArray(obj) && obj.length > 0) {
-            moduleList = obj;
-            handlePluginsObject(pathPrefix);
-        } else {
-            finishPluginLoading();
-        }
-    };
-    xhr.onerror = function() {
-        // One some phones (Windows) this xhr.open throws an Access Denied exception
-        // So lets keep trying, but with a script tag injection technique instead of XHR
-        injectPluginScript(pathPrefix);
-    };
-    try {
-        xhr.open('GET', pathPrefix + 'cordova_plugins.json', true); // Async
-        xhr.send();
-    } catch(err){
-        injectPluginScript(pathPrefix);
-    }
+    injectPluginScript(pathPrefix);
 };