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/01/29 21:15:56 UTC
[4/4] js commit: [win] Move plugin logic out of platform.js
Updated Branches:
refs/heads/symbolmapping abf515d3e -> 8fd64160d
[win] Move plugin logic out of platform.js
Moves notification, DOMStorage and XHRPatch out via plugininit.js files.
Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/8fd64160
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/8fd64160
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/8fd64160
Branch: refs/heads/symbolmapping
Commit: 8fd64160d926de0135d1cd1123e043cb5df30cd4
Parents: 95d6eb2
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Jan 29 15:11:42 2013 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Jan 29 15:11:42 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, 507 insertions(+), 486 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-js/blob/8fd64160/lib/windows8/platform.js
----------------------------------------------------------------------
diff --git a/lib/windows8/platform.js b/lib/windows8/platform.js
index cda44ea..6ff5df3 100755
--- a/lib/windows8/platform.js
+++ b/lib/windows8/platform.js
@@ -25,36 +25,21 @@ var cordova = require('cordova'),
/*
* Define native implementations ( there is no native layer, so need to make sure the proxies are there )
-*/
-
-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');
-
-
+ */
+modulemapper.loadMatchingModules(/cordova.*\/windows\/.*Proxy$/);
module.exports = {
id: "windows8",
initialize:function() {
var modulemapper = require('cordova/modulemapper');
+ modulemapper.loadMatchingModules(/cordova.*\/plugininit$/);
+
modulemapper.loadMatchingModules(/cordova.*\/symbols$/);
modulemapper.clobbers('/cordova/commandProxy', 'cordova.commandProxy');
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/8fd64160/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
new file mode 100644
index 0000000..38ba60f
--- /dev/null
+++ b/lib/windows8/plugin/windows8/notification/plugininit.js
@@ -0,0 +1,23 @@
+/*
+ * 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/8fd64160/lib/windowsphone/platform.js
----------------------------------------------------------------------
diff --git a/lib/windowsphone/platform.js b/lib/windowsphone/platform.js
index c88a9b9..5501b47 100644
--- a/lib/windowsphone/platform.js
+++ b/lib/windowsphone/platform.js
@@ -22,28 +22,18 @@
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.clobbers('/cordova/plugin/windowsphone/CordovaCommandResult', 'CordovaCommandResult');
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/8fd64160/lib/windowsphone/plugin/windowsphone/DOMStorage.js
----------------------------------------------------------------------
diff --git a/lib/windowsphone/plugin/windowsphone/DOMStorage.js b/lib/windowsphone/plugin/windowsphone/DOMStorage.js
deleted file mode 100644
index c546c0f..0000000
--- a/lib/windowsphone/plugin/windowsphone/DOMStorage.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/8fd64160/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
new file mode 100644
index 0000000..c546c0f
--- /dev/null
+++ b/lib/windowsphone/plugin/windowsphone/DOMStorage/plugininit.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/8fd64160/lib/windowsphone/plugin/windowsphone/XHRPatch.js
----------------------------------------------------------------------
diff --git a/lib/windowsphone/plugin/windowsphone/XHRPatch.js b/lib/windowsphone/plugin/windowsphone/XHRPatch.js
deleted file mode 100644
index 27fd21d..0000000
--- a/lib/windowsphone/plugin/windowsphone/XHRPatch.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/8fd64160/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
new file mode 100644
index 0000000..27fd21d
--- /dev/null
+++ b/lib/windowsphone/plugin/windowsphone/XHRPatch/plugininit.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/8fd64160/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
new file mode 100644
index 0000000..38ba60f
--- /dev/null
+++ b/lib/windowsphone/plugin/windowsphone/notification/plugininit.js
@@ -0,0 +1,23 @@
+/*
+ * 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;
+