Provide a fake service for platforms that don't have the service like Private Browsing (for Fennec/Seamonkey).

This commit is contained in:
Edward Lee 2009-11-30 14:36:03 -08:00
parent 4e72f0165b
commit 9bd57f2170

View File

@ -321,15 +321,29 @@ let Utils = {
lazySvc: function Weave_lazySvc(dest, prop, cid, iface) {
let getter = function() {
delete dest[prop];
let svc = null;
// Try creating a fake service if we can handle that
if (!Cc[cid]) {
switch (cid) {
case "@mozilla.org/privatebrowsing;1":
svc = {
autoStarted: false,
privateBrowsingEnabled: false
};
break;
}
let log = Log4Moz.repository.getLogger("Service.Util");
log.warn("Component " + cid + " requested, but doesn't exist on "
+ "this platform.");
return null;
} else{
dest[prop] = Cc[cid].getService(iface);
return dest[prop];
if (svc == null)
log.warn("Component " + cid + " doesn't exist on this platform.");
else
log.debug("Using a fake svc object for " + cid);
}
else
svc = Cc[cid].getService(iface);
return dest[prop] = svc;
};
dest.__defineGetter__(prop, getter);
},