Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C92D2DF15 for ; Tue, 14 May 2013 21:12:43 +0000 (UTC) Received: (qmail 15669 invoked by uid 500); 14 May 2013 21:12:42 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 15585 invoked by uid 500); 14 May 2013 21:12:42 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 14964 invoked by uid 99); 14 May 2013 21:12:41 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 May 2013 21:12:41 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 4277A8D10; Tue, 14 May 2013 21:12:41 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: steven@apache.org To: commits@cordova.apache.org Date: Tue, 14 May 2013 21:13:05 -0000 Message-Id: In-Reply-To: <88ae71b4ffc34ebe93bf3caed6f2fd5f@git.apache.org> References: <88ae71b4ffc34ebe93bf3caed6f2fd5f@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [26/38] js commit: [BlackBerry10] Switch module loading to cordova_plugins.json [BlackBerry10] Switch module loading to cordova_plugins.json Note: this includes a change to plugin_loader.js that should be applied to all platforms Revewied by Bryan Higgins Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/ea8515b6 Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/ea8515b6 Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/ea8515b6 Branch: refs/heads/3.0.0 Commit: ea8515b666a8710863af14a6d4abeba1f2491bfd Parents: 6d6478e Author: Hasan Ahmad Authored: Thu Apr 25 15:56:36 2013 -0400 Committer: Bryan Higgins Committed: Fri May 3 09:50:05 2013 -0400 ---------------------------------------------------------------------- lib/blackberry10/platform.js | 1 - .../plugin/blackberry10/pluginUtils.js | 88 -------- lib/scripts/bootstrap-blackberry10.js | 22 +-- test/blackberry10/test.pluginUtils.js | 156 --------------- 4 files changed, 6 insertions(+), 261 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-js/blob/ea8515b6/lib/blackberry10/platform.js ---------------------------------------------------------------------- diff --git a/lib/blackberry10/platform.js b/lib/blackberry10/platform.js index 5f11f7c..3d68cd8 100644 --- a/lib/blackberry10/platform.js +++ b/lib/blackberry10/platform.js @@ -32,6 +32,5 @@ module.exports = { modulemapper.clobbers('cordova/plugin/File', 'navigator.File'); modulemapper.merges('cordova/plugin/blackberry10/compass', 'navigator.compass'); - modulemapper.mapModules(window); } }; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/ea8515b6/lib/blackberry10/plugin/blackberry10/pluginUtils.js ---------------------------------------------------------------------- diff --git a/lib/blackberry10/plugin/blackberry10/pluginUtils.js b/lib/blackberry10/plugin/blackberry10/pluginUtils.js deleted file mode 100644 index ed41518..0000000 --- a/lib/blackberry10/plugin/blackberry10/pluginUtils.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -function build(plugins) { - var builder = require('cordova/builder'), - plugin; - for (plugin in plugins) { - if (plugins.hasOwnProperty(plugin)) { - if (plugins[plugin].clobbers) { - builder.buildIntoAndClobber(plugins[plugin].clobbers, window); - } - if (plugins[plugin].merges) { - builder.buildIntoAndMerge(plugins[plugin].merges, window); - } - } - } -} - -module.exports = { - - loadClientJs: function (plugins, callback) { - var plugin, - script, - i, - count = 0; - for (plugin in plugins) { - if (plugins.hasOwnProperty(plugin) && plugins[plugin].modules) { - for (i = 0; i < plugins[plugin].modules.length; i++) { - script = document.createElement('script'); - script.src = 'local:///plugins/' + plugin + '/' + plugins[plugin].modules[i]; - script.onload = function () { - if (--count === 0 && typeof callback === 'function') { - build(plugins); - callback(); - } - }; - count++; - document.head.appendChild(script); - } - } - } - if (count === 0) { - callback(); - } - }, - - getPlugins: function (success, error) { - var request, - response; - request = new XMLHttpRequest(); - request.open('GET', 'local:///plugins/plugins.json', true); - request.onreadystatechange = function () { - if (request.readyState === 4) { - if (request.status === 200) { - try { - response = JSON.parse(decodeURIComponent(request.responseText)); - success(response); - } - catch (e) { - error(e); - } - } - else { - error(request.status); - } - } - }; - request.send(null); - } -}; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/ea8515b6/lib/scripts/bootstrap-blackberry10.js ---------------------------------------------------------------------- diff --git a/lib/scripts/bootstrap-blackberry10.js b/lib/scripts/bootstrap-blackberry10.js index 836880f..351411c 100644 --- a/lib/scripts/bootstrap-blackberry10.js +++ b/lib/scripts/bootstrap-blackberry10.js @@ -20,8 +20,7 @@ */ (function () { - var pluginUtils = require('cordova/plugin/blackberry10/pluginUtils'), - docAddEventListener = document.addEventListener, + var docAddEventListener = document.addEventListener, webworksReady = false, alreadyFired = false, listenerRegistered = false; @@ -124,20 +123,11 @@ event: require("cordova/plugin/blackberry10/event") }; - //Fire webworks ready once plugin javascript has been loaded - pluginUtils.getPlugins( - function (plugins) { - pluginUtils.loadClientJs(plugins, function () { - webworksReady = true; - fireWebworksReadyEvent(); - }); - }, - function () { - console.log('Unable to load plugins.json'); - webworksReady = true; - fireWebworksReadyEvent(); - } - ); + require("cordova/channel").onPluginsReady.subscribe(function () { + require("cordova/modulemapper").mapModules(window); + webworksReady = true; + fireWebworksReadyEvent(); + }); }()); document.addEventListener("DOMContentLoaded", function () { http://git-wip-us.apache.org/repos/asf/cordova-js/blob/ea8515b6/test/blackberry10/test.pluginUtils.js ---------------------------------------------------------------------- diff --git a/test/blackberry10/test.pluginUtils.js b/test/blackberry10/test.pluginUtils.js deleted file mode 100644 index 3fe83bb..0000000 --- a/test/blackberry10/test.pluginUtils.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -describe('blackberry10 pluginUtils', function () { - - var pluginUtils = require('cordova/plugin/blackberry10/pluginUtils'), - builder = require('cordova/builder'); - - describe('loadClientJs', function () { - - var callback, - script; - - beforeEach(function () { - script = {}; - spyOn(document, "createElement").andCallFake(function () { - return script; - }); - spyOn(document.head, "appendChild"); - callback = jasmine.createSpy(); - spyOn(builder, "buildIntoAndClobber"); - spyOn(builder, "buildIntoAndMerge"); - }); - - it('does nothing for 0 plugins', function () { - var plugins = {}; - pluginUtils.loadClientJs(plugins, callback); - expect(document.createElement).not.toHaveBeenCalled(); - expect(document.head.appendChild).not.toHaveBeenCalled(); - expect(callback).toHaveBeenCalled(); - }); - - it('adds a script tag for 1 plugin', function () { - var plugins = { foo : { modules: ['bar.js'] } }; - pluginUtils.loadClientJs(plugins, callback); - expect(document.createElement).toHaveBeenCalled(); - expect(script.src).toEqual('local:///plugins/foo/bar.js'); - expect(document.head.appendChild).toHaveBeenCalled(); - script.onload(); - expect(callback).toHaveBeenCalled(); - }); - - it('adds multiple script tags for 1 plugin', function () { - var plugins = { foo: { modules: ['bar.js', '2.js'] } }; - pluginUtils.loadClientJs(plugins, callback); - expect(document.createElement.callCount).toBe(2); - expect(document.head.appendChild.callCount).toBe(2); - script.onload(); - script.onload(); - expect(callback.callCount).toBe(1); - }); - - it('adds script tags for multiple plugins', function () { - var plugins = { foo: { modules: ['1.js'] }, bar: { modules: ['1.js', '2.js' ] } }; - pluginUtils.loadClientJs(plugins, callback); - expect(document.createElement.callCount).toBe(3); - expect(document.head.appendChild.callCount).toBe(3); - script.onload(); - script.onload(); - script.onload(); - expect(callback.callCount).toBe(1); - }); - - it('calls clobber', function () { - var plugins = { foo: { modules : ['bar.js'], clobbers: { bar: { path: 'foo.bar' } } } }; - pluginUtils.loadClientJs(plugins, callback); - script.onload(); - expect(callback.callCount).toBe(1); - expect(builder.buildIntoAndClobber).toHaveBeenCalledWith(plugins.foo.clobbers, window); - }); - - it('calls merge', function () { - var plugins = { foo: { modules : ['bar.js'], merges: { bar: { path: 'foo.bar' } } } }; - pluginUtils.loadClientJs(plugins, callback); - script.onload(); - expect(callback.callCount).toBe(1); - expect(builder.buildIntoAndMerge).toHaveBeenCalledWith(plugins.foo.merges, window); - }); - - }); - - describe('getPlugins', function () { - - var success, - error, - xhr; - - beforeEach(function () { - GLOBAL.XMLHttpRequest = function () { - this.open = jasmine.createSpy(); - this.send = jasmine.createSpy(); - xhr = this; - }; - success = jasmine.createSpy(); - error = jasmine.createSpy(); - }); - - afterEach(function () { - delete GLOBAL.XMLHttpRequest; - }); - - it('sends XHR for plugins.json', function () { - pluginUtils.getPlugins(success, error); - expect(xhr.open).toHaveBeenCalledWith('GET', 'local:///plugins/plugins.json', true); - expect(xhr.send).toHaveBeenCalled(); - }); - - it('calls success with JSON response', function () { - pluginUtils.getPlugins(success, error); - xhr.readyState = 4; - xhr.status = 200; - xhr.responseText = '{ "hello" : "World" }'; - xhr.onreadystatechange(); - expect(success).toHaveBeenCalledWith({ hello: "World"}); - expect(error).not.toHaveBeenCalled(); - }); - - it('calls error with status', function () { - pluginUtils.getPlugins(success, error); - xhr.readyState = 4; - xhr.status = 500; - xhr.onreadystatechange(); - expect(error).toHaveBeenCalledWith(500); - expect(success).not.toHaveBeenCalled(); - }); - - it('calls error with parse exception', function () { - pluginUtils.getPlugins(success, error); - xhr.readyState = 4; - xhr.status = 200; - xhr.responseText = 'INVALID'; - xhr.onreadystatechange(); - expect(error).toHaveBeenCalled(); - expect(success).not.toHaveBeenCalled(); - }); - - }); -});