fix for a last-minute Fx 4 API change. this at least gets the translator infrastructure working, but the API change may result in a good amount of translator breakage as well.

This commit is contained in:
Simon Kornblith 2011-02-02 04:39:42 +00:00
parent 623e2dd150
commit 0a91608268
3 changed files with 57 additions and 16 deletions

View File

@ -64,13 +64,11 @@ Zotero.Translate.SandboxManager.prototype = {
*/
"importObject":function(object, passAsFirstArgument, attachTo) {
if(!attachTo) attachTo = this.sandbox.Zotero;
for(var key in (object.__exposedProps__ ? object.__exposedProps__ : object)) {
let localKey;
if(object.__exposedProps__) {
localKey = object.__exposedProps__[key];
} else {
localKey = key;
}
var newExposedProps = false;
if(!object.__exposedProps__) newExposedProps = {};
for(var key in (newExposedProps ? object : object.__exposedProps__)) {
let localKey = key;
if(newExposedProps) newExposedProps[localKey] = "r";
// magical XPCSafeJSObjectWrappers for sandbox
if(typeof object[localKey] === "function" || typeof object[localKey] === "object") {
@ -90,9 +88,15 @@ Zotero.Translate.SandboxManager.prototype = {
this.importObject(object[localKey], passAsFirstArgument ? passAsFirstArgument : null, attachTo[localKey]);
}
} else {
object[localKey] = object[localKey];
attachTo[localKey] = object[localKey];
}
}
if(newExposedProps) {
attachTo.__exposedProps__ = newExposedProps;
} else {
attachTo.__exposedProps__ = object.__exposedProps__;
}
}
}
@ -243,7 +247,12 @@ Zotero.Translate.IO.Read = function(file, mode) {
}
Zotero.Translate.IO.Read.prototype = {
"__exposedProps__":["_getXML", "RDF", "read", "setCharacterSet"],
"__exposedProps__":{
"_getXML":"r",
"RDF":"r",
"read":"r",
"setCharacterSet":"r"
},
"_seekToStart":function() {
this._rawStream.QueryInterface(Components.interfaces.nsISeekableStream)
@ -351,7 +360,11 @@ Zotero.Translate.IO.Write = function(file, mode, charset) {
}
Zotero.Translate.IO.Write.prototype = {
"__exposedProps__":["RDF", "write", "setCharacterSet"],
"__exposedProps__":{
"RDF":"r",
"write":"r",
"setCharacterSet":"r"
},
"_initRDF":function() {
Zotero.debug("Translate: Initializing RDF data store");

View File

@ -150,6 +150,16 @@ Zotero.Translate.Sandbox = {
// for security reasons, safeTranslator wraps the translator object.
// note that setLocation() is not allowed
var safeTranslator = new Object();
safeTranslator.__exposedProps__ = {
"setSearch":"r",
"setDocument":"r",
"setHandler":"r",
"setString":"r",
"setTranslator":"r",
"getTranslators":"r",
"translate":"r",
"getTranslatorObject":"r"
};
safeTranslator.setSearch = function(arg) {
if(Zotero.isFx4) arg = JSON.parse(JSON.stringify(arg));
return translation.setSearch(arg);
@ -1379,7 +1389,13 @@ Zotero.Translate.IO.String = function(string, uri, mode) {
}
Zotero.Translate.IO.String.prototype = {
"__exposedProps__":["RDF", "read", "write", "setCharacterSet", "_getXML"],
"__exposedProps__":{
"RDF":"r",
"read":"r",
"write":"r",
"setCharacterSet":"r",
"_getXML":"r"
},
"_initRDF":function() {
Zotero.debug("Translate: Initializing RDF data store");
@ -1488,9 +1504,21 @@ Zotero.Translate.IO._RDFSandbox = function(dataStore) {
Zotero.Translate.IO._RDFSandbox.prototype = {
"_containerCounts":[],
"__exposedProps__":["addStatement", "newResource", "newContainer", "addContainerElement",
"getContainerElements", "addNamespace", "getAllResources", "getResourceURI", "getArcsIn",
"getArcsOut", "getSources", "getTargets", "getStatementsMatching"],
"__exposedProps__":{
"addStatement":"r",
"newResource":"r",
"newContainer":"r",
"addContainerElement":"r",
"getContainerElements":"r",
"addNamespace":"r",
"getAllResources":"r",
"getResourceURI":"r",
"getArcsIn":"r",
"getArcsOut":"r",
"getSources":"r",
"getTargets":"r",
"getStatementsMatching":"r"
},
/**
* Gets a resource as a Zotero.RDF.AJAW.RDFSymbol, rather than a string

View File

@ -906,10 +906,10 @@ Zotero.Utilities.Translate.prototype._convertURL = function(url) {
}
}
Zotero.Utilities.Translate.prototype.__exposedProps__ = [];
Zotero.Utilities.Translate.prototype.__exposedProps__ = {};
for(var j in Zotero.Utilities.Translate.prototype) {
if(typeof Zotero.Utilities.Translate.prototype[j] === "function" && j[0] !== "_" && j != "Translate") {
Zotero.Utilities.Translate.prototype.__exposedProps__.push(j);
Zotero.Utilities.Translate.prototype.__exposedProps__[j] = "r";
}
}