2 * (C) Copyright 2008 Jeremy Maitin-Shepard
4 * Use, modification, and distribution are subject to the terms specified in the
8 // Register the Conkeror download_helper
10 const classID
= Components
.ID("{74FCB100-B972-11DC-95FF-0800200C9A66}");
11 const classDescription
= "Unknown Content Type Dialog";
12 const contractID
= "@mozilla.org/helperapplauncherdialog;1";
16 /* This firstTime trick is used to delay the registration. This
17 * is needed to ensure it overrides the built-in component for the
18 * same contractID (the built-in nsHelperAppDlg.js being
19 * overridden uses this as well, and as a result we have to). */
21 /* http://dietrich.ganx4.com/blog/?p=221#comment-14 */
22 /* https://bugzilla.mozilla.org/show_bug.cgi?id=253125 */
23 /* https://bugzilla.mozilla.org/show_bug.cgi?id=253136 */
25 /* We can't use XPCOMUtils because that doesn't provide this delay
30 // registerSelf: Register this component.
31 registerSelf: function (compMgr
, fileSpec
, location
, type
) {
32 if (this.prevTimes
< 2) {
34 throw Components
.results
.NS_ERROR_FACTORY_REGISTER_AGAIN
;
36 compMgr
= compMgr
.QueryInterface(Components
.interfaces
.nsIComponentRegistrar
);
38 compMgr
.registerFactoryLocation( classID
,
46 // getClassObject: Return this component's factory object.
47 getClassObject: function (compMgr
, cid
, iid
) {
48 if (!cid
.equals(classID
)) {
49 throw Components
.results
.NS_ERROR_NO_INTERFACE
;
52 if (!iid
.equals(Components
.interfaces
.nsIFactory
)) {
53 throw Components
.results
.NS_ERROR_NOT_IMPLEMENTED
;
61 createInstance: function (outer
, iid
) {
63 throw Components
.results
.NS_ERROR_NO_AGGREGATION
;
65 /* Return an instance of the Conkeror-scope download_helper object. */
66 var conkeror
= Components
.classes
["@conkeror.mozdev.org/application;1"].getService().wrappedJSObject
;
67 return (new conkeror
.download_helper()).QueryInterface(iid
);
71 canUnload: function(compMgr
) { return true; },
74 function NSGetModule(compMgr
, fileSpec
) {