From 8a2206656d7d8547860812c8ccc36afd45d6b7fd Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Fri, 29 Jan 2010 22:31:34 -0800 Subject: [PATCH] Fix for responseXML not working correctly from remote. Reviewed by me. --- Objective-J/HTTPRequest.js | 20 +++++++++++++++----- Objective-J/StaticResourceNode.js | 8 ++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Objective-J/HTTPRequest.js b/Objective-J/HTTPRequest.js index 6d8e7ce20..d2e49ea86 100644 --- a/Objective-J/HTTPRequest.js +++ b/Objective-J/HTTPRequest.js @@ -97,17 +97,24 @@ HTTPRequest.prototype.responseXML = function() { var responseXML = this._nativeRequest.responseXML; - if (!responseXML && window.ActiveXObject) + if (responseXML) + return responseXML; + + var responseText = this.responseText(); + + if (window.ActiveXObject) { - var responseText = this.responseText(), - XMLData = new ActiveXObject("Microsoft.XMLDOM"); + var XMLData = new ActiveXObject("Microsoft.XMLDOM"); XMLData.loadXML(responseText.substr(responseText.indexOf(".dtd\">") + 6)); return XMLData; } - return responseXML; + if (window.DOMParser) + return new DOMParser().parseFromString(responseText, "text/xml"); + + return NULL; } HTTPRequest.prototype.responsePropertyList = function() @@ -125,7 +132,7 @@ HTTPRequest.prototype.responseText = function() return this._nativeRequest.responseText; } -var methods = ["open", "send", "abort", "setRequestHeader", "getResponseHeader", "getAllResponseHeaders"], +var methods = ["open", "send", "abort", "setRequestHeader", "getResponseHeader", "getAllResponseHeaders", "overrideMimeType"], count = methods.length; while (count--) @@ -182,6 +189,9 @@ function FileRequest(/*String*/ aFilePath, onsuccess, onfailure) request.onsuccess = onsuccess; request.onfailure = onfailure; + if (request.overrideMimeType && FILE.extension(aFilePath) === ".plist") + request.overrideMimeType("text/xml"); + request.open("GET", aFilePath, YES); request.send(""); #else diff --git a/Objective-J/StaticResourceNode.js b/Objective-J/StaticResourceNode.js index e8f9c42cd..28119ed0d 100644 --- a/Objective-J/StaticResourceNode.js +++ b/Objective-J/StaticResourceNode.js @@ -21,6 +21,14 @@ require("file"); return components[components.length - 1]; }, + extension: function(/*String*/ aPath) + { + aPath = FILE.basename(aPath); + aPath = aPath.replace(/^\.*/, ''); + var index = aPath.lastIndexOf("."); + return index <= 0 ? "" : aPath.substring(index); + }, + cwd: function() { return FILE.dirname(window.location.pathname);