You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2013/09/13 03:20:05 UTC
[30/31] git commit: CB-4421 Fix for XHR to local files,
can now be relative to current page, as expected
CB-4421 Fix for XHR to local files, can now be relative to current page, as expected
Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/84c1395b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/84c1395b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/84c1395b
Branch: refs/heads/master
Commit: 84c1395b490d1a9212b9ca96fe35dae91c0c1ae6
Parents: b76752e
Author: purplecabbage <pu...@gmail.com>
Authored: Thu Aug 22 13:03:55 2013 -0700
Committer: purplecabbage <pu...@gmail.com>
Committed: Thu Aug 22 13:07:13 2013 -0700
----------------------------------------------------------------------
wp7/template/cordovalib/XHRHelper.cs | 61 +++++++++++++++++++++----------
wp8/template/cordovalib/XHRHelper.cs | 61 +++++++++++++++++++++----------
2 files changed, 84 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/84c1395b/wp7/template/cordovalib/XHRHelper.cs
----------------------------------------------------------------------
diff --git a/wp7/template/cordovalib/XHRHelper.cs b/wp7/template/cordovalib/XHRHelper.cs
index 7c2fe10..35b8bd3 100644
--- a/wp7/template/cordovalib/XHRHelper.cs
+++ b/wp7/template/cordovalib/XHRHelper.cs
@@ -16,7 +16,7 @@ namespace WPCordovaClassLib.CordovaLib
public WebBrowser Browser { get; set; }
public PhoneApplicationPage Page { get; set; }
- public void InjectScript()
+ public void InjectScript()
{
@@ -111,8 +111,7 @@ namespace WPCordovaClassLib.CordovaLib
{
this.isAsync = isAsync;
this.reqType = reqType;
- var newUrl = uri;
- this._url = newUrl;
+ this._url = uri;
}
},
statusText: '',
@@ -133,6 +132,9 @@ namespace WPCordovaClassLib.CordovaLib
getAllResponseHeaders: function() {
return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : '';
},
+ overrideMimeType: function(mimetype) {
+ return this.wrappedXHR ? this.wrappedXHR.overrideMimeType(mimetype) : '';
+ },
responseText: '',
responseXML: '',
onResult: function(res) {
@@ -160,6 +162,37 @@ namespace WPCordovaClassLib.CordovaLib
else {
this.changeReadyState(XHRShim.OPENED);
var alias = this;
+ var root = window.location.href;
+ var basePath = root.substr(0,root.lastIndexOf('/')) + '/';
+
+
+ var resolvedUrl = this._url.split('//').join('/');
+
+ var wwwFolderPath = navigator.userAgent.indexOf('MSIE 9.0') > -1 ? 'app/www/' : 'www/';
+
+ console.log('original resolvedUrl = ' + resolvedUrl);
+
+ if(resolvedUrl.indexOf('/') == 0) {
+ console.log('removing leading /');
+ resolvedUrl = resolvedUrl.substr(1);
+ }
+
+ if( resolvedUrl.indexOf('app/www') == 0 ) {
+
+ resolvedUrl = window.location.protocol + wwwFolderPath + resolvedUrl.substr(7);
+ }
+ else if( resolvedUrl.indexOf('www') == 0) {
+
+ resolvedUrl = window.location.protocol + wwwFolderPath + resolvedUrl.substr(4);
+ }
+
+ if(resolvedUrl.indexOf(':') < 0) {
+ resolvedUrl = basePath + resolvedUrl; // consider it relative
+ }
+
+ console.log('sanitized resolvedUrl = ' + resolvedUrl);
+
+
var funk = function () {
window.__onXHRLocalCallback = function (responseCode, responseText) {
alias.status = responseCode;
@@ -175,7 +208,7 @@ namespace WPCordovaClassLib.CordovaLib
}
alias.changeReadyState(XHRShim.LOADING);
- window.external.Notify('XHRLOCAL/' + alias._url);
+ window.external.Notify('XHRLOCAL/' + resolvedUrl);
}
if (this.isAsync) {
setTimeout(funk, 0);
@@ -185,16 +218,6 @@ namespace WPCordovaClassLib.CordovaLib
}
}
},
- 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
};
}
@@ -204,7 +227,7 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("execScript", new string[] { script });
}
- public bool HandleCommand(string commandStr)
+ public bool HandleCommand(string commandStr)
{
if (commandStr.IndexOf("XHRLOCAL") == 0)
{
@@ -222,11 +245,11 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("__onXHRLocalCallback", new string[] { "200", text });
return true;
}
- }
+ }
}
- Uri relUri = new Uri(uri.AbsolutePath,UriKind.Relative);
-
+ Uri relUri = new Uri(uri.AbsolutePath, UriKind.Relative);
+
var resource = Application.GetResourceStream(relUri);
if (resource == null)
@@ -235,7 +258,7 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("__onXHRLocalCallback", new string[] { "404" });
return true;
}
- else
+ else
{
using (StreamReader streamReader = new StreamReader(resource.Stream))
{
http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/84c1395b/wp8/template/cordovalib/XHRHelper.cs
----------------------------------------------------------------------
diff --git a/wp8/template/cordovalib/XHRHelper.cs b/wp8/template/cordovalib/XHRHelper.cs
index 7c2fe10..35b8bd3 100644
--- a/wp8/template/cordovalib/XHRHelper.cs
+++ b/wp8/template/cordovalib/XHRHelper.cs
@@ -16,7 +16,7 @@ namespace WPCordovaClassLib.CordovaLib
public WebBrowser Browser { get; set; }
public PhoneApplicationPage Page { get; set; }
- public void InjectScript()
+ public void InjectScript()
{
@@ -111,8 +111,7 @@ namespace WPCordovaClassLib.CordovaLib
{
this.isAsync = isAsync;
this.reqType = reqType;
- var newUrl = uri;
- this._url = newUrl;
+ this._url = uri;
}
},
statusText: '',
@@ -133,6 +132,9 @@ namespace WPCordovaClassLib.CordovaLib
getAllResponseHeaders: function() {
return this.wrappedXHR ? this.wrappedXHR.getAllResponseHeaders() : '';
},
+ overrideMimeType: function(mimetype) {
+ return this.wrappedXHR ? this.wrappedXHR.overrideMimeType(mimetype) : '';
+ },
responseText: '',
responseXML: '',
onResult: function(res) {
@@ -160,6 +162,37 @@ namespace WPCordovaClassLib.CordovaLib
else {
this.changeReadyState(XHRShim.OPENED);
var alias = this;
+ var root = window.location.href;
+ var basePath = root.substr(0,root.lastIndexOf('/')) + '/';
+
+
+ var resolvedUrl = this._url.split('//').join('/');
+
+ var wwwFolderPath = navigator.userAgent.indexOf('MSIE 9.0') > -1 ? 'app/www/' : 'www/';
+
+ console.log('original resolvedUrl = ' + resolvedUrl);
+
+ if(resolvedUrl.indexOf('/') == 0) {
+ console.log('removing leading /');
+ resolvedUrl = resolvedUrl.substr(1);
+ }
+
+ if( resolvedUrl.indexOf('app/www') == 0 ) {
+
+ resolvedUrl = window.location.protocol + wwwFolderPath + resolvedUrl.substr(7);
+ }
+ else if( resolvedUrl.indexOf('www') == 0) {
+
+ resolvedUrl = window.location.protocol + wwwFolderPath + resolvedUrl.substr(4);
+ }
+
+ if(resolvedUrl.indexOf(':') < 0) {
+ resolvedUrl = basePath + resolvedUrl; // consider it relative
+ }
+
+ console.log('sanitized resolvedUrl = ' + resolvedUrl);
+
+
var funk = function () {
window.__onXHRLocalCallback = function (responseCode, responseText) {
alias.status = responseCode;
@@ -175,7 +208,7 @@ namespace WPCordovaClassLib.CordovaLib
}
alias.changeReadyState(XHRShim.LOADING);
- window.external.Notify('XHRLOCAL/' + alias._url);
+ window.external.Notify('XHRLOCAL/' + resolvedUrl);
}
if (this.isAsync) {
setTimeout(funk, 0);
@@ -185,16 +218,6 @@ namespace WPCordovaClassLib.CordovaLib
}
}
},
- 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
};
}
@@ -204,7 +227,7 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("execScript", new string[] { script });
}
- public bool HandleCommand(string commandStr)
+ public bool HandleCommand(string commandStr)
{
if (commandStr.IndexOf("XHRLOCAL") == 0)
{
@@ -222,11 +245,11 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("__onXHRLocalCallback", new string[] { "200", text });
return true;
}
- }
+ }
}
- Uri relUri = new Uri(uri.AbsolutePath,UriKind.Relative);
-
+ Uri relUri = new Uri(uri.AbsolutePath, UriKind.Relative);
+
var resource = Application.GetResourceStream(relUri);
if (resource == null)
@@ -235,7 +258,7 @@ namespace WPCordovaClassLib.CordovaLib
Browser.InvokeScript("__onXHRLocalCallback", new string[] { "404" });
return true;
}
- else
+ else
{
using (StreamReader streamReader = new StreamReader(resource.Stream))
{