1 // Register the Conkeror download_helper
3 const classID = Components.ID("{74FCB100-B972-11DC-95FF-0800200C9A66}");
4 const classDescription = "Unknown Content Type Dialog";
5 const contractID = "@mozilla.org/helperapplauncherdialog;1";
9 /* This firstTime trick is used to delay the registration. This
10 * is needed to ensure it overrides the built-in component for the
11 * same contractID (the built-in nsHelperAppDlg.js being
12 * overridden uses this as well, and as a result we have to). */
14 /* http://dietrich.ganx4.com/blog/?p=221#comment-14 */
15 /* https://bugzilla.mozilla.org/show_bug.cgi?id=253125 */
16 /* https://bugzilla.mozilla.org/show_bug.cgi?id=253136 */
18 /* We can't use XPCOMUtils because that doesn't provide this delay
23 // registerSelf: Register this component.
24 registerSelf: function (compMgr, fileSpec, location, type) {
25 if (this.prevTimes < 2) {
27 throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
29 compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
31 compMgr.registerFactoryLocation( classID,
39 // getClassObject: Return this component's factory object.
40 getClassObject: function (compMgr, cid, iid) {
41 if (!cid.equals(classID)) {
42 throw Components.results.NS_ERROR_NO_INTERFACE;
45 if (!iid.equals(Components.interfaces.nsIFactory)) {
46 throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
54 createInstance: function (outer, iid) {
56 throw Components.results.NS_ERROR_NO_AGGREGATION;
58 /* Return an instance of the Conkeror-scope download_helper object. */
59 var conkeror = Components.classes["@conkeror.mozdev.org/application;1"].getService().wrappedJSObject;
60 return (new conkeror.download_helper()).QueryInterface(iid);
64 canUnload: function(compMgr) { return true; },
67 function NSGetModule(compMgr, fileSpec) {