Fix XML-based import, export, and search translators on Firefox 36
This commit is contained in:
parent
1afa1ffea6
commit
aeada8032c
1 changed files with 14 additions and 7 deletions
|
@ -401,14 +401,17 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||||
this.sandbox.DOMParser = sandboxLocation.DOMParser;
|
this.sandbox.DOMParser = sandboxLocation.DOMParser;
|
||||||
} else {
|
} else {
|
||||||
this.sandbox.DOMParser = function() {
|
this.sandbox.DOMParser = function() {
|
||||||
this.__exposedProps__ = {"parseFromString":"r"};
|
var obj = new sandbox.Object();
|
||||||
this.parseFromString = function(str, contentType) {
|
var wrappedObj = obj.wrappedJSObject || obj;
|
||||||
|
wrappedObj.__exposedProps__ = {"parseFromString":"r"};
|
||||||
|
wrappedObj.parseFromString = function(str, contentType) {
|
||||||
var xhr = sandbox.XMLHttpRequest();
|
var xhr = sandbox.XMLHttpRequest();
|
||||||
xhr.open("GET", "data:"+contentType+";charset=utf-8,"+encodeURIComponent(str), false);
|
xhr.open("GET", "data:"+contentType+";charset=utf-8,"+encodeURIComponent(str), false);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
if (!xhr.responseXML) throw new Error("error parsing XML");
|
if (!xhr.responseXML) throw new Error("error parsing XML");
|
||||||
return xhr.responseXML;
|
return xhr.responseXML;
|
||||||
}
|
}
|
||||||
|
return obj;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
this.sandbox.DOMParser.__exposedProps__ = {"prototype":"r"};
|
this.sandbox.DOMParser.__exposedProps__ = {"prototype":"r"};
|
||||||
|
@ -416,9 +419,12 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||||
this.sandbox.XMLSerializer = function() {
|
this.sandbox.XMLSerializer = function() {
|
||||||
var s = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"]
|
var s = Components.classes["@mozilla.org/xmlextras/xmlserializer;1"]
|
||||||
.createInstance(Components.interfaces.nsIDOMSerializer);
|
.createInstance(Components.interfaces.nsIDOMSerializer);
|
||||||
this.serializeToString = function(doc) {
|
var obj = new sandbox.Object();
|
||||||
|
var wrappedObj = obj.wrappedJSObject || obj;
|
||||||
|
wrappedObj.serializeToString = function(doc) {
|
||||||
return s.serializeToString(Zotero.Translate.DOMWrapper.unwrap(doc));
|
return s.serializeToString(Zotero.Translate.DOMWrapper.unwrap(doc));
|
||||||
};
|
};
|
||||||
|
return obj;
|
||||||
};
|
};
|
||||||
this.sandbox.XMLSerializer.__exposedProps__ = {"prototype":"r"};
|
this.sandbox.XMLSerializer.__exposedProps__ = {"prototype":"r"};
|
||||||
this.sandbox.XMLSerializer.prototype = {"__exposedProps__":{"serializeToString":"r"}};
|
this.sandbox.XMLSerializer.prototype = {"__exposedProps__":{"serializeToString":"r"}};
|
||||||
|
@ -443,10 +449,11 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||||
target = new XPCNativeWrapper(target);
|
target = new XPCNativeWrapper(target);
|
||||||
}
|
}
|
||||||
var ret = new sandbox.Object();
|
var ret = new sandbox.Object();
|
||||||
ret.wrappedJSObject.has = function(x, prop) {
|
var wrappedRet = ret.wrappedJSObject || ret;
|
||||||
|
wrappedRet.has = function(x, prop) {
|
||||||
return overrides.hasOwnProperty(prop) || prop in target;
|
return overrides.hasOwnProperty(prop) || prop in target;
|
||||||
};
|
};
|
||||||
ret.wrappedJSObject.get = function(x, prop, receiver) {
|
wrappedRet.get = function(x, prop, receiver) {
|
||||||
if (prop === "__wrappedObject") return target;
|
if (prop === "__wrappedObject") return target;
|
||||||
if (prop === "__wrappingManager") return me;
|
if (prop === "__wrappingManager") return me;
|
||||||
var y = overrides.hasOwnProperty(prop) ? overrides[prop] : target[prop];
|
var y = overrides.hasOwnProperty(prop) ? overrides[prop] : target[prop];
|
||||||
|
@ -461,10 +468,10 @@ Zotero.Translate.SandboxManager = function(sandboxLocation) {
|
||||||
return wrap(y.apply(target, args));
|
return wrap(y.apply(target, args));
|
||||||
} : new sandbox.Object());
|
} : new sandbox.Object());
|
||||||
};
|
};
|
||||||
ret.wrappedJSObject.ownKeys = function(x) {
|
wrappedRet.ownKeys = function(x) {
|
||||||
return Components.utils.cloneInto(target.getOwnPropertyNames(), sandbox);
|
return Components.utils.cloneInto(target.getOwnPropertyNames(), sandbox);
|
||||||
};
|
};
|
||||||
ret.wrappedJSObject.enumerate = function(x) {
|
wrappedRet.enumerate = function(x) {
|
||||||
var y = new sandbox.Array();
|
var y = new sandbox.Array();
|
||||||
for (var i in target) y.wrappedJSObject.push(i);
|
for (var i in target) y.wrappedJSObject.push(i);
|
||||||
return y;
|
return y;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue