Register protocol handler dynamically
Fixes reader but not reports yet.
This commit is contained in:
parent
2f49999a0f
commit
506482551d
3 changed files with 27 additions and 24 deletions
|
@ -66,9 +66,6 @@ skin zotero default chrome/skin/default/zotero/
|
||||||
component {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea} components/zotero-autocomplete.js
|
component {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea} components/zotero-autocomplete.js
|
||||||
contract @mozilla.org/autocomplete/search;1?name=zotero {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea}
|
contract @mozilla.org/autocomplete/search;1?name=zotero {06a2ed11-d0a4-4ff0-a56f-a44545eee6ea}
|
||||||
|
|
||||||
component {9BC3D762-9038-486A-9D70-C997AF848A7C} components/zotero-protocol-handler.js process=main
|
|
||||||
contract @mozilla.org/network/protocol;1?name=zotero {9BC3D762-9038-486A-9D70-C997AF848A7C} process=main
|
|
||||||
|
|
||||||
# Scaffold
|
# Scaffold
|
||||||
content scaffold chrome/content/scaffold/
|
content scaffold chrome/content/scaffold/
|
||||||
locale scaffold en-US chrome/locale/en-US/scaffold/
|
locale scaffold en-US chrome/locale/en-US/scaffold/
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
***** END LICENSE BLOCK *****
|
***** END LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
const EXPORTED_SYMBOLS = ['ZoteroProtocolHandler'];
|
||||||
|
|
||||||
const ZOTERO_SCHEME = "zotero";
|
const ZOTERO_SCHEME = "zotero";
|
||||||
const ZOTERO_PROTOCOL_CID = Components.ID("{9BC3D762-9038-486A-9D70-C997AF848A7C}");
|
const ZOTERO_PROTOCOL_CID = Components.ID("{9BC3D762-9038-486A-9D70-C997AF848A7C}");
|
||||||
const ZOTERO_PROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + ZOTERO_SCHEME;
|
const ZOTERO_PROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + ZOTERO_SCHEME;
|
||||||
|
@ -44,9 +46,7 @@ const ios = Services.io;
|
||||||
// Dummy chrome URL used to obtain a valid chrome channel
|
// Dummy chrome URL used to obtain a valid chrome channel
|
||||||
const DUMMY_CHROME_URL = "chrome://zotero/content/zoteroPane.xul";
|
const DUMMY_CHROME_URL = "chrome://zotero/content/zoteroPane.xul";
|
||||||
|
|
||||||
var Zotero = Components.classes["@zotero.org/Zotero;1"]
|
var { Zotero } = ChromeUtils.importESModule("chrome://zotero/content/zotero.mjs");
|
||||||
.getService(Components.interfaces.nsISupports)
|
|
||||||
.wrappedJSObject;
|
|
||||||
|
|
||||||
function ZoteroProtocolHandler() {
|
function ZoteroProtocolHandler() {
|
||||||
this.wrappedJSObject = this;
|
this.wrappedJSObject = this;
|
||||||
|
@ -1261,22 +1261,14 @@ ZoteroProtocolHandler.prototype = {
|
||||||
get scheme() {
|
get scheme() {
|
||||||
return ZOTERO_SCHEME;
|
return ZOTERO_SCHEME;
|
||||||
},
|
},
|
||||||
get protocolFlags() {
|
protocolFlags:
|
||||||
/*Components.interfaces.nsIProtocolHandler.URI_NORELATIVE |
|
Ci.nsIProtocolHandler.URI_NORELATIVE
|
||||||
Components.interfaces.nsIProtocolHandler.URI_NOAUTH |
|
| Ci.nsIProtocolHandler.URI_NOAUTH
|
||||||
// DEBUG: This should be URI_IS_LOCAL_FILE, and MUST be if any
|
| Ci.nsIProtocolHandler.URI_INHERITS_SECURITY_CONTEXT
|
||||||
// extensions that modify data are added
|
| Ci.nsIProtocolHandler.URI_LOADABLE_BY_ANYONE
|
||||||
// - https://www.zotero.org/trac/ticket/1156
|
| Ci.nsIProtocolHandler.URI_NON_PERSISTABLE
|
||||||
//
|
|
||||||
Components.interfaces.nsIProtocolHandler.URI_IS_LOCAL_FILE,
|
|
||||||
//Components.interfaces.nsIProtocolHandler.URI_LOADABLE_BY_ANYONE,*/
|
|
||||||
|
|
||||||
return Ci.nsIProtocolHandler.URI_NORELATIVE
|
|
||||||
| Ci.nsIProtocolHandler.URI_IS_LOCAL_RESOURCE
|
| Ci.nsIProtocolHandler.URI_IS_LOCAL_RESOURCE
|
||||||
// URI_IS_UI_RESOURCE: more secure than URI_LOADABLE_BY_ANYONE, less secure than URI_DANGEROUS_TO_LOAD
|
| Ci.nsIProtocolHandler.URI_SYNC_LOAD_IS_OK,
|
||||||
// This is the security level used by the chrome:// protocol
|
|
||||||
| Ci.nsIProtocolHandler.URI_IS_UI_RESOURCE;
|
|
||||||
},
|
|
||||||
get defaultPort() {
|
get defaultPort() {
|
||||||
return -1;
|
return -1;
|
||||||
},
|
},
|
||||||
|
@ -1370,6 +1362,18 @@ ZoteroProtocolHandler.prototype = {
|
||||||
QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIProtocolHandler]),
|
QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIProtocolHandler]),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
ZoteroProtocolHandler.init = function () {
|
||||||
|
Services.io.registerProtocolHandler(
|
||||||
|
'zotero',
|
||||||
|
new ZoteroProtocolHandler(),
|
||||||
|
ZoteroProtocolHandler.prototype.protocolFlags,
|
||||||
|
ZoteroProtocolHandler.prototype.defaultPort
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nsIChannel implementation that takes a promise-yielding generator that returns a
|
* nsIChannel implementation that takes a promise-yielding generator that returns a
|
||||||
|
@ -1569,6 +1573,3 @@ AsyncChannel.prototype = {
|
||||||
/*pdf.js wants this
|
/*pdf.js wants this
|
||||||
|| iid.equals(Components.interfaces.nsIWritablePropertyBag)) {*/
|
|| iid.equals(Components.interfaces.nsIWritablePropertyBag)) {*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var NSGetFactory = ComponentUtils.generateNSGetFactory([ZoteroProtocolHandler]);
|
|
|
@ -669,6 +669,11 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { ZoteroProtocolHandler } = ChromeUtils.import(
|
||||||
|
`chrome://zotero/content/ZoteroProtocolHandler.jsm`
|
||||||
|
);
|
||||||
|
ZoteroProtocolHandler.init();
|
||||||
|
|
||||||
yield Zotero.Users.init();
|
yield Zotero.Users.init();
|
||||||
yield Zotero.Libraries.init();
|
yield Zotero.Libraries.init();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue