Update for new wrapping code and complain on attempts to activate E4X

This commit is contained in:
Simon Kornblith 2012-07-01 15:53:55 -04:00
parent d780350d24
commit 8963dc7d97

View File

@ -2136,7 +2136,7 @@ Zotero.Translate.IO = {
/** /**
* @class Translate backend for translating from a string * @class Translate backend for translating from a string
*/ */
Zotero.Translate.IO.String = function(string, uri, mode) { Zotero.Translate.IO.String = function(string, uri) {
if(string && typeof string === "string") { if(string && typeof string === "string") {
this.string = string; this.string = string;
} else { } else {
@ -2228,17 +2228,13 @@ Zotero.Translate.IO.String.prototype = {
}, },
"_getXML":function() { "_getXML":function() {
if(this._mode == "xml/dom") { try {
try { var xml = Zotero.Translate.IO.parseDOMXML(this.string);
var xml = Zotero.Translate.IO.parseDOMXML(this.string); } catch(e) {
} catch(e) { this._xmlInvalid = true;
this._xmlInvalid = true; throw e;
throw e;
}
return (Zotero.isFx5 ? Zotero.Translate.SandboxManager.Fx5DOMWrapper(xml) : xml);
} else {
return this.string.replace(/<\?xml[^>]+\?>/, "");
} }
return (Zotero.isFx ? Zotero.Translate.DOMWrapper.wrap(xml) : xml);
}, },
"init":function(newMode, callback) { "init":function(newMode, callback) {
@ -2246,8 +2242,10 @@ Zotero.Translate.IO.String.prototype = {
this._noCR = undefined; this._noCR = undefined;
this._mode = newMode; this._mode = newMode;
if(newMode && (Zotero.Translate.IO.rdfDataModes.indexOf(newMode) !== -1 if(newMode === "xml/e4x") {
|| newMode.substr(0, 3) === "xml") && this._xmlInvalid) { throw "E4X is not supported";
} else if(newMode && (Zotero.Translate.IO.rdfDataModes.indexOf(newMode) !== -1
|| newMode.substr(0, 3) === "xml/dom") && this._xmlInvalid) {
throw "XML known invalid"; throw "XML known invalid";
} else if(Zotero.Translate.IO.rdfDataModes.indexOf(this._mode) !== -1) { } else if(Zotero.Translate.IO.rdfDataModes.indexOf(this._mode) !== -1) {
this._initRDF(callback); this._initRDF(callback);