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 96C0FE5A8 for ; Wed, 27 Feb 2013 21:09:58 +0000 (UTC) Received: (qmail 20740 invoked by uid 500); 27 Feb 2013 21:09:57 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 20677 invoked by uid 500); 27 Feb 2013 21:09:57 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 20074 invoked by uid 99); 27 Feb 2013 21:09:56 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Feb 2013 21:09:56 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 9196B10352; Wed, 27 Feb 2013 21:09:56 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: gtanner@apache.org To: commits@cordova.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [18/31] js commit: Revert "[win] Move plugin logic out of platform.js" Message-Id: <20130227210956.9196B10352@tyr.zones.apache.org> Date: Wed, 27 Feb 2013 21:09:56 +0000 (UTC) Revert "[win] Move plugin logic out of platform.js" This reverts commit c5865e23095547334f3f80c23d158648803f3531. Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/b5f88427 Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/b5f88427 Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/b5f88427 Branch: refs/heads/next Commit: b5f88427b0f211948bf32ad61613618eacd44c9a Parents: 2ed6452 Author: Andrew Grieve Authored: Thu Feb 21 07:54:31 2013 -0500 Committer: Andrew Grieve Committed: Thu Feb 21 07:54:31 2013 -0500 ---------------------------------------------------------------------- lib/windows8/platform.js | 23 +- .../plugin/windows8/notification/plugininit.js | 23 -- lib/windowsphone/platform.js | 14 +- lib/windowsphone/plugin/windowsphone/DOMStorage.js | 200 +++++++++++ .../plugin/windowsphone/DOMStorage/plugininit.js | 200 ----------- lib/windowsphone/plugin/windowsphone/XHRPatch.js | 255 +++++++++++++++ .../plugin/windowsphone/XHRPatch/plugininit.js | 255 --------------- .../plugin/windowsphone/notification/plugininit.js | 23 -- 8 files changed, 486 insertions(+), 507 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windows8/platform.js ---------------------------------------------------------------------- diff --git a/lib/windows8/platform.js b/lib/windows8/platform.js index 03d83bc..1eb22ed 100755 --- a/lib/windows8/platform.js +++ b/lib/windows8/platform.js @@ -25,19 +25,34 @@ var cordova = require('cordova'), /* * Define native implementations ( there is no native layer, so need to make sure the proxies are there ) - */ -modulemapper.loadMatchingModules(/cordova.*\/windows\/.*Proxy$/); +*/ + +require('cordova/plugin/windows8/DeviceProxy'); +require('cordova/plugin/windows8/NetworkStatusProxy'); +require('cordova/plugin/windows8/AccelerometerProxy'); +require('cordova/plugin/windows8/CameraProxy'); +require('cordova/plugin/windows8/CaptureProxy'); +require('cordova/plugin/windows8/CompassProxy'); +require('cordova/plugin/windows8/ContactsProxy'); +require('cordova/plugin/windows8/FileProxy'); + +require('cordova/plugin/windows8/FileTransferProxy'); +require('cordova/plugin/windows8/MediaProxy'); +require('cordova/plugin/windows8/NotificationProxy'); + + module.exports = { id: "windows8", initialize:function() { var modulemapper = require('cordova/modulemapper'); - modulemapper.loadMatchingModules(/cordova.*\/plugininit$/); - modulemapper.loadMatchingModules(/cordova.*\/symbols$/); modulemapper.mapModules(window); + window.alert = window.alert || require("cordova/plugin/notification").alert; + window.confirm = window.confirm || require("cordova/plugin/notification").confirm; + var onWinJSReady = function () { var app = WinJS.Application; var checkpointHandler = function checkpointHandler() { http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windows8/plugin/windows8/notification/plugininit.js ---------------------------------------------------------------------- diff --git a/lib/windows8/plugin/windows8/notification/plugininit.js b/lib/windows8/plugin/windows8/notification/plugininit.js deleted file mode 100644 index 38ba60f..0000000 --- a/lib/windows8/plugin/windows8/notification/plugininit.js +++ /dev/null @@ -1,23 +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. - * -*/ - -window.alert = window.alert || require("cordova/plugin/notification").alert; -window.confirm = window.confirm || require("cordova/plugin/notification").confirm; - http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/platform.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/platform.js b/lib/windowsphone/platform.js index e36f21a..a407413 100644 --- a/lib/windowsphone/platform.js +++ b/lib/windowsphone/platform.js @@ -22,16 +22,26 @@ var cordova = require('cordova'), exec = require('cordova/exec'); +// specifically require the following patches : + +// localStorage+SessionStorage APIs +require("cordova/plugin/windowsphone/DOMStorage"); + +// Fix XHR calls to local file-system +require("cordova/plugin/windowsphone/XHRPatch"); + + module.exports = { id: "windowsphone", initialize:function() { var modulemapper = require('cordova/modulemapper'); - modulemapper.loadMatchingModules(/cordova.*\/plugininit$/); - modulemapper.loadMatchingModules(/cordova.*\/symbols$/); modulemapper.mapModules(window); + window.alert = window.alert || require("cordova/plugin/notification").alert; + window.confirm = window.confirm || require("cordova/plugin/notification").confirm; + // Inject a listener for the backbutton, and tell native to override the flag (true/false) when we have 1 or more, or 0, listeners var backButtonChannel = cordova.addDocumentEventHandler('backbutton'); backButtonChannel.onHasSubscribersChange = function() { http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/plugin/windowsphone/DOMStorage.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/plugin/windowsphone/DOMStorage.js b/lib/windowsphone/plugin/windowsphone/DOMStorage.js new file mode 100644 index 0000000..c546c0f --- /dev/null +++ b/lib/windowsphone/plugin/windowsphone/DOMStorage.js @@ -0,0 +1,200 @@ +/* + * + * 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(win,doc) { + +var docDomain = null; +try { + docDomain = doc.domain; +} catch (err) { + //console.log("caught exception trying to access document.domain"); +} + +// conditionally patch the window.localStorage and window.sessionStorage objects +if (!docDomain || docDomain.length === 0) { + + var DOMStorage = function(type) { + // default type is local + if(type == "sessionStorage") { + this._type = type; + } + Object.defineProperty( this, "length", { + configurable: true, + get: function(){ return this.getLength(); } + }); + }; + + DOMStorage.prototype = { + _type:"localStorage", + _result:null, + keys:null, + + onResult:function(key,valueStr) { + if(!this.keys) { + this.keys = []; + } + this._result = valueStr; + }, + + onKeysChanged:function(jsonKeys) { + this.keys = JSON.parse(jsonKeys); + + var key; + for(var n = 0,len = this.keys.length; n < len; n++) { + key = this.keys[n]; + if(!this.hasOwnProperty(key)) { + Object.defineProperty( this, key, { + configurable: true, + get: function(){ return this.getItem(key); }, + set: function(val){ return this.setItem(key,val); } + }); + } + } + + }, + + initialize:function() { + window.external.Notify("DOMStorage/" + this._type + "/load/keys"); + }, + + /* + The length attribute must return the number of key/value pairs currently present + in the list associated with the object. + */ + getLength:function() { + if(!this.keys) { + this.initialize(); + } + return this.keys.length; + }, + + /* + The key(n) method must return the name of the nth key in the list. + The order of keys is user-agent defined, but must be consistent within an object so long as the number of keys doesn't change. + (Thus, adding or removing a key may change the order of the keys, but merely changing the value of an existing key must not.) + If n is greater than or equal to the number of key/value pairs in the object, then this method must return null. + */ + key:function(n) { + if(!this.keys) { + this.initialize(); + } + + if(n >= this.keys.length) { + return null; + } else { + return this.keys[n]; + } + }, + + /* + The getItem(key) method must return the current value associated with the given key. + If the given key does not exist in the list associated with the object then this method must return null. + */ + getItem:function(key) { + if(!this.keys) { + this.initialize(); + } + + var retVal = null; + if(this.keys.indexOf(key) > -1) { + window.external.Notify("DOMStorage/" + this._type + "/get/" + key); + retVal = window.unescape(decodeURIComponent(this._result)); + this._result = null; + } + return retVal; + }, + /* + The setItem(key, value) method must first check if a key/value pair with the given key already exists + in the list associated with the object. + If it does not, then a new key/value pair must be added to the list, with the given key and with its value set to value. + If the given key does exist in the list, then it must have its value updated to value. + If it couldn't set the new value, the method must raise an QUOTA_EXCEEDED_ERR exception. + (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.) + */ + setItem:function(key,value) { + if(!this.keys) { + this.initialize(); + } + window.external.Notify("DOMStorage/" + this._type + "/set/" + key + "/" + encodeURIComponent(window.escape(value))); + }, + + /* + The removeItem(key) method must cause the key/value pair with the given key to be removed from the list + associated with the object, if it exists. + If no item with that key exists, the method must do nothing. + */ + removeItem:function(key) { + if(!this.keys) { + this.initialize(); + } + var index = this.keys.indexOf(key); + if(index > -1) { + this.keys.splice(index,1); + // TODO: need sanity check for keys ? like 'clear','setItem', ... + window.external.Notify("DOMStorage/" + this._type + "/remove/" + key); + delete this[key]; + } + }, + + /* + The clear() method must atomically cause the list associated with the object to be emptied of all + key/value pairs, if there are any. + If there are none, then the method must do nothing. + */ + clear:function() { + if(!this.keys) { + this.initialize(); + } + + for(var n=0,len=this.keys.length; n < len;n++) { + // TODO: do we need a sanity check for keys ? like 'clear','setItem', ... + delete this[this.keys[n]]; + } + this.keys = []; + window.external.Notify("DOMStorage/" + this._type + "/clear/"); + } + }; + + // initialize DOMStorage + + if (typeof window.localStorage === "undefined") { + + Object.defineProperty(window, "localStorage", { + writable: false, + configurable: false, + value: new DOMStorage("localStorage") + }); + window.localStorage.initialize(); + } + + if (typeof window.sessionStorage === "undefined") { + Object.defineProperty(window, "sessionStorage", { + writable: false, + configurable: false, + value: new DOMStorage("sessionStorage") + }); + window.sessionStorage.initialize(); + } +} + +})(window, document); + +module.exports = null; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/plugin/windowsphone/DOMStorage/plugininit.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/plugin/windowsphone/DOMStorage/plugininit.js b/lib/windowsphone/plugin/windowsphone/DOMStorage/plugininit.js deleted file mode 100644 index c546c0f..0000000 --- a/lib/windowsphone/plugin/windowsphone/DOMStorage/plugininit.js +++ /dev/null @@ -1,200 +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(win,doc) { - -var docDomain = null; -try { - docDomain = doc.domain; -} catch (err) { - //console.log("caught exception trying to access document.domain"); -} - -// conditionally patch the window.localStorage and window.sessionStorage objects -if (!docDomain || docDomain.length === 0) { - - var DOMStorage = function(type) { - // default type is local - if(type == "sessionStorage") { - this._type = type; - } - Object.defineProperty( this, "length", { - configurable: true, - get: function(){ return this.getLength(); } - }); - }; - - DOMStorage.prototype = { - _type:"localStorage", - _result:null, - keys:null, - - onResult:function(key,valueStr) { - if(!this.keys) { - this.keys = []; - } - this._result = valueStr; - }, - - onKeysChanged:function(jsonKeys) { - this.keys = JSON.parse(jsonKeys); - - var key; - for(var n = 0,len = this.keys.length; n < len; n++) { - key = this.keys[n]; - if(!this.hasOwnProperty(key)) { - Object.defineProperty( this, key, { - configurable: true, - get: function(){ return this.getItem(key); }, - set: function(val){ return this.setItem(key,val); } - }); - } - } - - }, - - initialize:function() { - window.external.Notify("DOMStorage/" + this._type + "/load/keys"); - }, - - /* - The length attribute must return the number of key/value pairs currently present - in the list associated with the object. - */ - getLength:function() { - if(!this.keys) { - this.initialize(); - } - return this.keys.length; - }, - - /* - The key(n) method must return the name of the nth key in the list. - The order of keys is user-agent defined, but must be consistent within an object so long as the number of keys doesn't change. - (Thus, adding or removing a key may change the order of the keys, but merely changing the value of an existing key must not.) - If n is greater than or equal to the number of key/value pairs in the object, then this method must return null. - */ - key:function(n) { - if(!this.keys) { - this.initialize(); - } - - if(n >= this.keys.length) { - return null; - } else { - return this.keys[n]; - } - }, - - /* - The getItem(key) method must return the current value associated with the given key. - If the given key does not exist in the list associated with the object then this method must return null. - */ - getItem:function(key) { - if(!this.keys) { - this.initialize(); - } - - var retVal = null; - if(this.keys.indexOf(key) > -1) { - window.external.Notify("DOMStorage/" + this._type + "/get/" + key); - retVal = window.unescape(decodeURIComponent(this._result)); - this._result = null; - } - return retVal; - }, - /* - The setItem(key, value) method must first check if a key/value pair with the given key already exists - in the list associated with the object. - If it does not, then a new key/value pair must be added to the list, with the given key and with its value set to value. - If the given key does exist in the list, then it must have its value updated to value. - If it couldn't set the new value, the method must raise an QUOTA_EXCEEDED_ERR exception. - (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.) - */ - setItem:function(key,value) { - if(!this.keys) { - this.initialize(); - } - window.external.Notify("DOMStorage/" + this._type + "/set/" + key + "/" + encodeURIComponent(window.escape(value))); - }, - - /* - The removeItem(key) method must cause the key/value pair with the given key to be removed from the list - associated with the object, if it exists. - If no item with that key exists, the method must do nothing. - */ - removeItem:function(key) { - if(!this.keys) { - this.initialize(); - } - var index = this.keys.indexOf(key); - if(index > -1) { - this.keys.splice(index,1); - // TODO: need sanity check for keys ? like 'clear','setItem', ... - window.external.Notify("DOMStorage/" + this._type + "/remove/" + key); - delete this[key]; - } - }, - - /* - The clear() method must atomically cause the list associated with the object to be emptied of all - key/value pairs, if there are any. - If there are none, then the method must do nothing. - */ - clear:function() { - if(!this.keys) { - this.initialize(); - } - - for(var n=0,len=this.keys.length; n < len;n++) { - // TODO: do we need a sanity check for keys ? like 'clear','setItem', ... - delete this[this.keys[n]]; - } - this.keys = []; - window.external.Notify("DOMStorage/" + this._type + "/clear/"); - } - }; - - // initialize DOMStorage - - if (typeof window.localStorage === "undefined") { - - Object.defineProperty(window, "localStorage", { - writable: false, - configurable: false, - value: new DOMStorage("localStorage") - }); - window.localStorage.initialize(); - } - - if (typeof window.sessionStorage === "undefined") { - Object.defineProperty(window, "sessionStorage", { - writable: false, - configurable: false, - value: new DOMStorage("sessionStorage") - }); - window.sessionStorage.initialize(); - } -} - -})(window, document); - -module.exports = null; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/plugin/windowsphone/XHRPatch.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/plugin/windowsphone/XHRPatch.js b/lib/windowsphone/plugin/windowsphone/XHRPatch.js new file mode 100644 index 0000000..27fd21d --- /dev/null +++ b/lib/windowsphone/plugin/windowsphone/XHRPatch.js @@ -0,0 +1,255 @@ +/* + * + * 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. + * +*/ + +// TODO: the build process will implicitly wrap this in a define() call +// with a closure of its own; do you need this extra closure? + +var LocalFileSystem = require('cordova/plugin/LocalFileSystem'); + +(function (win, doc) { + +var docDomain = null; +try { + docDomain = doc.domain; +} catch (err) { + //console.log("caught exception trying to access document.domain"); +} + +if (!docDomain || docDomain.length === 0) { + + var aliasXHR = win.XMLHttpRequest; + + win.XMLHttpRequest = function () { }; + win.XMLHttpRequest.noConflict = aliasXHR; + win.XMLHttpRequest.UNSENT = 0; + win.XMLHttpRequest.OPENED = 1; + win.XMLHttpRequest.HEADERS_RECEIVED = 2; + win.XMLHttpRequest.LOADING = 3; + win.XMLHttpRequest.DONE = 4; + + win.XMLHttpRequest.prototype = { + UNSENT: 0, + OPENED: 1, + HEADERS_RECEIVED: 2, + LOADING: 3, + DONE: 4, + + isAsync: false, + onreadystatechange: null, + readyState: 0, + _url: "", + timeout: 0, + withCredentials: false, + _requestHeaders: null, + open: function (reqType, uri, isAsync, user, password) { + + if (uri && uri.indexOf("http") === 0) { + if (!this.wrappedXHR) { + this.wrappedXHR = new aliasXHR(); + var self = this; + + // timeout + if (this.timeout > 0) { + this.wrappedXHR.timeout = this.timeout; + } + Object.defineProperty(this, "timeout", { + set: function (val) { + this.wrappedXHR.timeout = val; + }, + get: function () { + return this.wrappedXHR.timeout; + } + }); + + + + if (this.withCredentials) { + this.wrappedXHR.withCredentials = this.withCredentials; + } + Object.defineProperty(this, "withCredentials", { + set: function (val) { + this.wrappedXHR.withCredentials = val; + }, + get: function () { + return this.wrappedXHR.withCredentials; + } + }); + + + Object.defineProperty(this, "status", { get: function () { + return this.wrappedXHR.status; + } + }); + Object.defineProperty(this, "responseText", { get: function () { + return this.wrappedXHR.responseText; + } + }); + Object.defineProperty(this, "statusText", { get: function () { + return this.wrappedXHR.statusText; + } + }); + + Object.defineProperty(this, "responseXML", { get: function () { + return this.wrappedXHR.responseXML; + } + }); + + this.getResponseHeader = function (header) { + return this.wrappedXHR.getResponseHeader(header); + }; + this.getAllResponseHeaders = function () { + return this.wrappedXHR.getAllResponseHeaders(); + }; + + this.wrappedXHR.onreadystatechange = function () { + self.changeReadyState(self.wrappedXHR.readyState); + }; + } + return this.wrappedXHR.open(reqType, uri, isAsync, user, password); + } + else { + // x-wmapp1://app/www/page2.html + // need to work some magic on the actual url/filepath + var newUrl = uri; + if (newUrl.indexOf(":/") > -1) { + newUrl = newUrl.split(":/")[1]; + } + // prefix relative urls to our physical root + if(newUrl.indexOf("app/www/") < 0 && this.getContentLocation() == this.contentLocation.ISOLATED_STORAGE) + { + newUrl = "app/www/" + newUrl; + } + + if (newUrl.lastIndexOf("/") === newUrl.length - 1) { + newUrl += "index.html"; // default page is index.html, when call is to a dir/ ( why not ...? ) + } + this._url = newUrl; + } + }, + statusText: "", + changeReadyState: function (newState) { + this.readyState = newState; + if (this.onreadystatechange) { + this.onreadystatechange(); + } + }, + setRequestHeader: function (header, value) { + if (this.wrappedXHR) { + this.wrappedXHR.setRequestHeader(header, value); + } + }, + getResponseHeader: function (header) { + return this.wrappedXHR ? this.wrappedXHR.getResponseHeader(header) : ""; + }, + getAllResponseHeaders: function () { + return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : ""; + }, + responseText: "", + responseXML: "", + onResult: function (res) { + this.status = 200; + if(typeof res == "object") + { // callback result handler may have already parsed this from a string-> a JSON object, + // if so, we need to restore its stringyness, as handlers are expecting string data. + // especially if used with jQ -> $.getJSON + res = JSON.stringify(res); + } + this.responseText = res; + this.responseXML = res; + this.changeReadyState(this.DONE); + }, + onError: function (err) { + this.status = 404; + this.changeReadyState(this.DONE); + }, + + abort: function () { + if (this.wrappedXHR) { + return this.wrappedXHR.abort(); + } + }, + + send: function (data) { + if (this.wrappedXHR) { + return this.wrappedXHR.send(data); + } + else { + this.changeReadyState(this.OPENED); + + var alias = this; + + var fail = function fail(evt) { + alias.onError(evt.code); + }; + + if (alias.getContentLocation() == this.contentLocation.RESOURCES) { + var exec = require('cordova/exec'); + exec(function(result) { + alias.onResult.apply(alias, [result]); + }, + fail, + "File", "readResourceAsText", [alias._url] + ); + } + else { + var gotFile = function gotFile(file) { + var reader = new FileReader(); + reader.onloadend = function (evt) { + alias.onResult.apply(alias,[evt.target.result]); + }; + reader.readAsText(file); + }; + + var gotEntry = function gotEntry(entry) { + entry.file(gotFile, fail); + }; + + var gotFS = function gotFS(fs) { + fs.root.getFile(alias._url, null, gotEntry, fail); + }; + + window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); + } + } + }, + + getContentLocation: function () { + if (window.contentLocation === undefined) { + window.contentLocation = (navigator.userAgent.toUpperCase().indexOf('MSIE 10') > -1) ? + this.contentLocation.RESOURCES : this.contentLocation.ISOLATED_STORAGE; + } + + return window.contentLocation; + }, + + contentLocation:{ + ISOLATED_STORAGE: 0, + RESOURCES: 1 + }, + + status: 404 + }; +} // if doc domain + +// end closure wrap +})(window, document); + +module.exports = null; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/plugin/windowsphone/XHRPatch/plugininit.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/plugin/windowsphone/XHRPatch/plugininit.js b/lib/windowsphone/plugin/windowsphone/XHRPatch/plugininit.js deleted file mode 100644 index 27fd21d..0000000 --- a/lib/windowsphone/plugin/windowsphone/XHRPatch/plugininit.js +++ /dev/null @@ -1,255 +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. - * -*/ - -// TODO: the build process will implicitly wrap this in a define() call -// with a closure of its own; do you need this extra closure? - -var LocalFileSystem = require('cordova/plugin/LocalFileSystem'); - -(function (win, doc) { - -var docDomain = null; -try { - docDomain = doc.domain; -} catch (err) { - //console.log("caught exception trying to access document.domain"); -} - -if (!docDomain || docDomain.length === 0) { - - var aliasXHR = win.XMLHttpRequest; - - win.XMLHttpRequest = function () { }; - win.XMLHttpRequest.noConflict = aliasXHR; - win.XMLHttpRequest.UNSENT = 0; - win.XMLHttpRequest.OPENED = 1; - win.XMLHttpRequest.HEADERS_RECEIVED = 2; - win.XMLHttpRequest.LOADING = 3; - win.XMLHttpRequest.DONE = 4; - - win.XMLHttpRequest.prototype = { - UNSENT: 0, - OPENED: 1, - HEADERS_RECEIVED: 2, - LOADING: 3, - DONE: 4, - - isAsync: false, - onreadystatechange: null, - readyState: 0, - _url: "", - timeout: 0, - withCredentials: false, - _requestHeaders: null, - open: function (reqType, uri, isAsync, user, password) { - - if (uri && uri.indexOf("http") === 0) { - if (!this.wrappedXHR) { - this.wrappedXHR = new aliasXHR(); - var self = this; - - // timeout - if (this.timeout > 0) { - this.wrappedXHR.timeout = this.timeout; - } - Object.defineProperty(this, "timeout", { - set: function (val) { - this.wrappedXHR.timeout = val; - }, - get: function () { - return this.wrappedXHR.timeout; - } - }); - - - - if (this.withCredentials) { - this.wrappedXHR.withCredentials = this.withCredentials; - } - Object.defineProperty(this, "withCredentials", { - set: function (val) { - this.wrappedXHR.withCredentials = val; - }, - get: function () { - return this.wrappedXHR.withCredentials; - } - }); - - - Object.defineProperty(this, "status", { get: function () { - return this.wrappedXHR.status; - } - }); - Object.defineProperty(this, "responseText", { get: function () { - return this.wrappedXHR.responseText; - } - }); - Object.defineProperty(this, "statusText", { get: function () { - return this.wrappedXHR.statusText; - } - }); - - Object.defineProperty(this, "responseXML", { get: function () { - return this.wrappedXHR.responseXML; - } - }); - - this.getResponseHeader = function (header) { - return this.wrappedXHR.getResponseHeader(header); - }; - this.getAllResponseHeaders = function () { - return this.wrappedXHR.getAllResponseHeaders(); - }; - - this.wrappedXHR.onreadystatechange = function () { - self.changeReadyState(self.wrappedXHR.readyState); - }; - } - return this.wrappedXHR.open(reqType, uri, isAsync, user, password); - } - else { - // x-wmapp1://app/www/page2.html - // need to work some magic on the actual url/filepath - var newUrl = uri; - if (newUrl.indexOf(":/") > -1) { - newUrl = newUrl.split(":/")[1]; - } - // prefix relative urls to our physical root - if(newUrl.indexOf("app/www/") < 0 && this.getContentLocation() == this.contentLocation.ISOLATED_STORAGE) - { - newUrl = "app/www/" + newUrl; - } - - if (newUrl.lastIndexOf("/") === newUrl.length - 1) { - newUrl += "index.html"; // default page is index.html, when call is to a dir/ ( why not ...? ) - } - this._url = newUrl; - } - }, - statusText: "", - changeReadyState: function (newState) { - this.readyState = newState; - if (this.onreadystatechange) { - this.onreadystatechange(); - } - }, - setRequestHeader: function (header, value) { - if (this.wrappedXHR) { - this.wrappedXHR.setRequestHeader(header, value); - } - }, - getResponseHeader: function (header) { - return this.wrappedXHR ? this.wrappedXHR.getResponseHeader(header) : ""; - }, - getAllResponseHeaders: function () { - return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : ""; - }, - responseText: "", - responseXML: "", - onResult: function (res) { - this.status = 200; - if(typeof res == "object") - { // callback result handler may have already parsed this from a string-> a JSON object, - // if so, we need to restore its stringyness, as handlers are expecting string data. - // especially if used with jQ -> $.getJSON - res = JSON.stringify(res); - } - this.responseText = res; - this.responseXML = res; - this.changeReadyState(this.DONE); - }, - onError: function (err) { - this.status = 404; - this.changeReadyState(this.DONE); - }, - - abort: function () { - if (this.wrappedXHR) { - return this.wrappedXHR.abort(); - } - }, - - send: function (data) { - if (this.wrappedXHR) { - return this.wrappedXHR.send(data); - } - else { - this.changeReadyState(this.OPENED); - - var alias = this; - - var fail = function fail(evt) { - alias.onError(evt.code); - }; - - if (alias.getContentLocation() == this.contentLocation.RESOURCES) { - var exec = require('cordova/exec'); - exec(function(result) { - alias.onResult.apply(alias, [result]); - }, - fail, - "File", "readResourceAsText", [alias._url] - ); - } - else { - var gotFile = function gotFile(file) { - var reader = new FileReader(); - reader.onloadend = function (evt) { - alias.onResult.apply(alias,[evt.target.result]); - }; - reader.readAsText(file); - }; - - var gotEntry = function gotEntry(entry) { - entry.file(gotFile, fail); - }; - - var gotFS = function gotFS(fs) { - fs.root.getFile(alias._url, null, gotEntry, fail); - }; - - window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); - } - } - }, - - getContentLocation: function () { - if (window.contentLocation === undefined) { - window.contentLocation = (navigator.userAgent.toUpperCase().indexOf('MSIE 10') > -1) ? - this.contentLocation.RESOURCES : this.contentLocation.ISOLATED_STORAGE; - } - - return window.contentLocation; - }, - - contentLocation:{ - ISOLATED_STORAGE: 0, - RESOURCES: 1 - }, - - status: 404 - }; -} // if doc domain - -// end closure wrap -})(window, document); - -module.exports = null; http://git-wip-us.apache.org/repos/asf/cordova-js/blob/b5f88427/lib/windowsphone/plugin/windowsphone/notification/plugininit.js ---------------------------------------------------------------------- diff --git a/lib/windowsphone/plugin/windowsphone/notification/plugininit.js b/lib/windowsphone/plugin/windowsphone/notification/plugininit.js deleted file mode 100644 index 38ba60f..0000000 --- a/lib/windowsphone/plugin/windowsphone/notification/plugininit.js +++ /dev/null @@ -1,23 +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. - * -*/ - -window.alert = window.alert || require("cordova/plugin/notification").alert; -window.confirm = window.confirm || require("cordova/plugin/notification").confirm; -