Updated Branches: refs/heads/master 1254b239e -> d78fafbb9
updated phonegap.js to include XHR updates Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/commit/d78fafbb Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/tree/d78fafbb Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/diff/d78fafbb Branch: refs/heads/master Commit: d78fafbb9a6eaeb23170ffc456e6678aa739b8ed Parents: 164b6c8 Author: Jesse MacFadyen <purplecabb...@gmail.com> Authored: Wed Jan 25 13:24:26 2012 -0800 Committer: Jesse MacFadyen <purplecabb...@gmail.com> Committed: Wed Jan 25 13:24:26 2012 -0800 ---------------------------------------------------------------------- framework/js/BuildJSConcat.js | 2 +- framework/js/phonegap-1.3.0-core.js | 236 ++- framework/js/phonegap-1.3.0.js | 362 ++- framework/js/phonegap-1.4.0-core.js | 2579 ++++++++++++++++++++ framework/js/phonegap-1.4.0.js | 3794 ++++++++++++++++++++++++++++++ 5 files changed, 6770 insertions(+), 203 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/d78fafbb/framework/js/BuildJSConcat.js ---------------------------------------------------------------------- diff --git a/framework/js/BuildJSConcat.js b/framework/js/BuildJSConcat.js index 2efa1be..c8943e3 100644 --- a/framework/js/BuildJSConcat.js +++ b/framework/js/BuildJSConcat.js @@ -1,6 +1,6 @@ // JSConcat -var versionStr = "1.3.0"; +var versionStr = "1.4.0"; var allSourceFiles = [ "disclaimer.txt", "phonegap.js.base", http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/d78fafbb/framework/js/phonegap-1.3.0-core.js ---------------------------------------------------------------------- diff --git a/framework/js/phonegap-1.3.0-core.js b/framework/js/phonegap-1.3.0-core.js index 0c76250..e22fd86 100644 --- a/framework/js/phonegap-1.3.0-core.js +++ b/framework/js/phonegap-1.3.0-core.js @@ -718,14 +718,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("device")) { PhoneGap.addResource("device"); @@ -794,7 +799,20 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } - +/* + Licensed 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. +*/ + // this is a WP7 Only implementation of the Storage API for use in webpages loaded from the local file system // inside phonegap application. // there is a native implementation which is backing this and providing the persistance of values. @@ -1002,14 +1020,19 @@ if(!window.localStorage) })();}; -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("file")) { PhoneGap.addResource("file"); @@ -2044,14 +2067,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function () { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("filetransfer")) { PhoneGap.addResource("filetransfer"); @@ -2141,14 +2169,19 @@ var FileUploadOptions = function(fileKey, fileName, mimeType, params) { }; } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("network")) { PhoneGap.addResource("network"); @@ -2208,6 +2241,7 @@ Connection.CELL_2G = "2g"; Connection.CELL_3G = "3g"; Connection.CELL_4G = "4g"; Connection.NONE = "none"; +Connection.CELL = "cellular"; /** * Get connection info @@ -2230,14 +2264,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2011, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("notification")) { PhoneGap.addResource("notification"); @@ -2359,12 +2398,27 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } -/** +/* + Licensed 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. +*/ + +/** * @author purplecabbage */ (function(win,doc){ + doc.addEventListener("DOMContentLoaded",function() { var docDomain = null; @@ -2384,26 +2438,34 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { win.XMLHttpRequest = function(){}; - var UNSENT = 0; - var OPENED = 1; - var HEADERS_RECEIVED = 2; - var LOADING = 3; - var DONE = 4; + 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:UNSENT, + readyState:0, + _url:"", open:function(reqType,uri,isAsync,user,password) { - //console.log("XMLHttpRequest.open " + uri); + console.log("XMLHttpRequest.open " + uri); if(uri && uri.indexOf("http") == 0) { if(!this.wrappedXHR) { - //console.log("using wrapped XHR"); this.wrappedXHR = new aliasXHR(); + var self = this; + Object.defineProperty( this, "status", { get: function() { return this.wrappedXHR.status; }}); @@ -2413,32 +2475,40 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { Object.defineProperty( this, "statusText", { get: function() { return this.wrappedXHR.statusText; }}); - Object.defineProperty( this, "responseXML", { get: function() { + + Object.defineProperty( this, "responseXML", { get: function() { return this.wrappedXHR.responseXML; - }}); - - this.getResponseHeader = function() { - return this.wrappedXHR.getResponseHeader.apply(this.wrappedXHR,arguments); + }}); + + this.getResponseHeader = function(header) { + return this.wrappedXHR.getResponseHeader(header); }; this.getAllResponseHeaders = function() { - return this.wrappedXHR.getAllResponseHeaders.apply(this.wrappedXHR,arguments); + return this.wrappedXHR.getAllResponseHeaders(); }; - this.wrappedXHR.onreadystatechange = this.onreadystatechange; + 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 lastFileSlash = uri.lastIndexOf("\\"); - var newUrl = "app/" + uri.substr(lastFileSlash + 1); + var newUrl = uri; + if(newUrl.indexOf(":/") > -1) + { + newUrl = newUrl.split(":/")[1]; + } + if(newUrl.lastIndexOf("/") === newUrl.length - 1) { - newUrl += "index.html"; // default page is index.html, when call is to a dir/ + newUrl += "index.html"; // default page is index.html, when call is to a dir/ ( why not ...? ) } - navigator.fileMgr.readAsText(newUrl,"UTF-8",this.onResult.bind(this),this.onError.bind(this)); - this.changeReadyState(OPENED); + this._url = newUrl; } }, statusText:"", @@ -2450,41 +2520,55 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { this.onreadystatechange(); } }, - getResponseHeader:function() + getResponseHeader:function(header) { - return ""; + return this.wrappedXHR ? this.wrappedXHR.getResponseHeader(header) : ""; }, getAllResponseHeaders:function() { - return ""; + return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : ""; }, responseText:"", - responseXML:function() - { - return new Document(this.responseText); - }, + responseXML:"", onResult:function(res) { this.status = 200; this.responseText = res; - this.changeReadyState(DONE); + + Object.defineProperty( this, "responseXML", { get: function() { + var parser = new DOMParser(); + return parser.parseFromString(this.responseText,"text/xml"); + }}); + this.changeReadyState(this.DONE); }, onError:function(err) { - //console.log("Received Error from FileAPI :: " + err); + console.log("Wrapped XHR received Error from FileAPI :: " + err); this.status = 404; - this.changeReadyState(DONE); + this.changeReadyState(this.DONE); }, + + abort:function() + { + if(this.wrappedXHR) + { + return this.wrappedXHR.abort(); + } + }, send:function(data) { if(this.wrappedXHR) { - return this.wrappedXHR.send.apply(this.wrappedXHR,arguments); + return this.wrappedXHR.send(data); } + else + { + this.changeReadyState(this.OPENED); + navigator.fileMgr.readAsText(this._url,"UTF-8",this.onResult.bind(this),this.onError.bind(this)); + } }, - status:404, - responseText:"empty" + status:404 }; } // if doc domain @@ -2493,5 +2577,3 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { })(window,document); - - http://git-wip-us.apache.org/repos/asf/incubator-cordova-wp7/blob/d78fafbb/framework/js/phonegap-1.3.0.js ---------------------------------------------------------------------- diff --git a/framework/js/phonegap-1.3.0.js b/framework/js/phonegap-1.3.0.js index 70876df..9a997bb 100644 --- a/framework/js/phonegap-1.3.0.js +++ b/framework/js/phonegap-1.3.0.js @@ -656,14 +656,19 @@ PhoneGap.fireEvent = function(_targ,evtName) } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2011, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("accelerometer")) { @@ -801,14 +806,19 @@ function() }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("camera")) { PhoneGap.addResource("camera"); @@ -948,14 +958,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("capture")) { PhoneGap.addResource("capture"); @@ -1150,14 +1165,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function () { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("compass")) { PhoneGap.addResource("compass"); @@ -1300,14 +1320,19 @@ function() }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("contact")) { PhoneGap.addResource("contact"); @@ -1675,14 +1700,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("device")) { PhoneGap.addResource("device"); @@ -1751,7 +1781,20 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } - +/* + Licensed 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. +*/ + // this is a WP7 Only implementation of the Storage API for use in webpages loaded from the local file system // inside phonegap application. // there is a native implementation which is backing this and providing the persistance of values. @@ -1959,14 +2002,19 @@ if(!window.localStorage) })();}; -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("file")) { PhoneGap.addResource("file"); @@ -3001,14 +3049,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function () { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("filetransfer")) { PhoneGap.addResource("filetransfer"); @@ -3098,14 +3151,19 @@ var FileUploadOptions = function(fileKey, fileName, mimeType, params) { }; } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("media")) { PhoneGap.addResource("media"); @@ -3326,14 +3384,19 @@ PhoneGapMediaonStatus = function (args) { } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2010, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("network")) { PhoneGap.addResource("network"); @@ -3393,6 +3456,7 @@ Connection.CELL_2G = "2g"; Connection.CELL_3G = "3g"; Connection.CELL_4G = "4g"; Connection.NONE = "none"; +Connection.CELL = "cellular"; /** * Get connection info @@ -3415,14 +3479,19 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } -/* - * PhoneGap is available under *either* the terms of the modified BSD license *or* the - * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. - * - * Copyright (c) 2005-2011, Nitobi Software Inc. - * Copyright (c) 2010-2011, IBM Corporation - * Copyright (c) 2011, Microsoft Corporation - */ +/* + Licensed 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. +*/ if (!PhoneGap.hasResource("notification")) { PhoneGap.addResource("notification"); @@ -3544,12 +3613,27 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { }); } -/** +/* + Licensed 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. +*/ + +/** * @author purplecabbage */ (function(win,doc){ + doc.addEventListener("DOMContentLoaded",function() { var docDomain = null; @@ -3569,26 +3653,34 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { win.XMLHttpRequest = function(){}; - var UNSENT = 0; - var OPENED = 1; - var HEADERS_RECEIVED = 2; - var LOADING = 3; - var DONE = 4; + 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:UNSENT, + readyState:0, + _url:"", open:function(reqType,uri,isAsync,user,password) { - //console.log("XMLHttpRequest.open " + uri); + console.log("XMLHttpRequest.open " + uri); if(uri && uri.indexOf("http") == 0) { if(!this.wrappedXHR) { - //console.log("using wrapped XHR"); this.wrappedXHR = new aliasXHR(); + var self = this; + Object.defineProperty( this, "status", { get: function() { return this.wrappedXHR.status; }}); @@ -3598,32 +3690,40 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { Object.defineProperty( this, "statusText", { get: function() { return this.wrappedXHR.statusText; }}); - Object.defineProperty( this, "responseXML", { get: function() { + + Object.defineProperty( this, "responseXML", { get: function() { return this.wrappedXHR.responseXML; - }}); - - this.getResponseHeader = function() { - return this.wrappedXHR.getResponseHeader.apply(this.wrappedXHR,arguments); + }}); + + this.getResponseHeader = function(header) { + return this.wrappedXHR.getResponseHeader(header); }; this.getAllResponseHeaders = function() { - return this.wrappedXHR.getAllResponseHeaders.apply(this.wrappedXHR,arguments); + return this.wrappedXHR.getAllResponseHeaders(); }; - this.wrappedXHR.onreadystatechange = this.onreadystatechange; + 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 lastFileSlash = uri.lastIndexOf("\\"); - var newUrl = "app/" + uri.substr(lastFileSlash + 1); + var newUrl = uri; + if(newUrl.indexOf(":/") > -1) + { + newUrl = newUrl.split(":/")[1]; + } + if(newUrl.lastIndexOf("/") === newUrl.length - 1) { - newUrl += "index.html"; // default page is index.html, when call is to a dir/ + newUrl += "index.html"; // default page is index.html, when call is to a dir/ ( why not ...? ) } - navigator.fileMgr.readAsText(newUrl,"UTF-8",this.onResult.bind(this),this.onError.bind(this)); - this.changeReadyState(OPENED); + this._url = newUrl; } }, statusText:"", @@ -3635,41 +3735,55 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { this.onreadystatechange(); } }, - getResponseHeader:function() + getResponseHeader:function(header) { - return ""; + return this.wrappedXHR ? this.wrappedXHR.getResponseHeader(header) : ""; }, getAllResponseHeaders:function() { - return ""; + return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : ""; }, responseText:"", - responseXML:function() - { - return new Document(this.responseText); - }, + responseXML:"", onResult:function(res) { this.status = 200; this.responseText = res; - this.changeReadyState(DONE); + + Object.defineProperty( this, "responseXML", { get: function() { + var parser = new DOMParser(); + return parser.parseFromString(this.responseText,"text/xml"); + }}); + this.changeReadyState(this.DONE); }, onError:function(err) { - //console.log("Received Error from FileAPI :: " + err); + console.log("Wrapped XHR received Error from FileAPI :: " + err); this.status = 404; - this.changeReadyState(DONE); + this.changeReadyState(this.DONE); }, + + abort:function() + { + if(this.wrappedXHR) + { + return this.wrappedXHR.abort(); + } + }, send:function(data) { if(this.wrappedXHR) { - return this.wrappedXHR.send.apply(this.wrappedXHR,arguments); + return this.wrappedXHR.send(data); } + else + { + this.changeReadyState(this.OPENED); + navigator.fileMgr.readAsText(this._url,"UTF-8",this.onResult.bind(this),this.onError.bind(this)); + } }, - status:404, - responseText:"empty" + status:404 }; } // if doc domain @@ -3678,5 +3792,3 @@ PhoneGap.onPhoneGapInit.subscribeOnce(function() { })(window,document); - -