Bug 482178 - Clean up services -> lazy services. r=thunder

This commit is contained in:
Edward Lee 2009-03-10 06:30:30 -05:00
parent f81547db69
commit e7a623aaec
8 changed files with 37 additions and 110 deletions

View File

@ -58,23 +58,6 @@ function CryptoSvc() {
CryptoSvc.prototype = {
_logName: "Crypto",
__os: null,
get _os() {
if (!this.__os)
this.__os = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
return this.__os;
},
__crypto: null,
get _crypto() {
if (!this.__crypto)
this.__crypto = Cc["@labs.mozilla.com/Weave/Crypto;1"].
createInstance(Ci.IWeaveCrypto);
return this.__crypto;
},
get defaultAlgorithm() {
return Utils.prefs.getCharPref("encryption");
},
@ -113,7 +96,7 @@ CryptoSvc.prototype = {
return; // otherwise we'll send the alg changed event twice
}
// FIXME: listen to this bad boy somewhere
this._os.notifyObservers(null, "weave:encryption:algorithm-changed", "");
Svc.Observer.notifyObservers(null, "weave:encryption:algorithm-changed", "");
} break;
default:
this._log.warn("Unknown encryption preference changed - ignoring");
@ -149,7 +132,7 @@ CryptoSvc.prototype = {
} else {
let symkey = identity.bulkKey;
let iv = identity.bulkIV;
ret = this._crypto.encrypt(data, symkey, iv);
ret = Svc.Crypto.encrypt(data, symkey, iv);
}
self.done(ret);
@ -167,7 +150,7 @@ CryptoSvc.prototype = {
} else {
let symkey = identity.bulkKey;
let iv = identity.bulkIV;
ret = this._crypto.decrypt(data, symkey, iv);
ret = Svc.Crypto.decrypt(data, symkey, iv);
}
self.done(ret);
@ -184,8 +167,8 @@ CryptoSvc.prototype = {
this._log.trace("randomKeyGen called. [id=" + identity.realm + "]");
let symkey = this._crypto.generateRandomKey();
let iv = this._crypto.generateRandomIV();
let symkey = Svc.Crypto.generateRandomKey();
let iv = Svc.Crypto.generateRandomIV();
identity.bulkKey = symkey;
identity.bulkIV = iv;
@ -206,12 +189,10 @@ CryptoSvc.prototype = {
// Generate a blob of random data for salting the passphrase used to
// encrypt the private key.
let salt = this._crypto.generateRandomBytes(32);
let iv = this._crypto.generateRandomIV();
let salt = Svc.Crypto.generateRandomBytes(32);
let iv = Svc.Crypto.generateRandomIV();
this._crypto.generateKeypair(identity.password,
salt, iv,
pubOut, privOut);
Svc.Crypto.generateKeypair(identity.password, salt, iv, pubOut, privOut);
identity.keypairAlg = "RSA";
identity.pubkey = pubOut.value;
@ -224,7 +205,7 @@ CryptoSvc.prototype = {
let self = yield;
this._log.trace("wrapKey called. [id=" + identity.realm + "]");
let ret = this._crypto.wrapSymmetricKey(data, identity.pubkey);
let ret = Svc.Crypto.wrapSymmetricKey(data, identity.pubkey);
self.done(ret);
},
@ -233,11 +214,8 @@ CryptoSvc.prototype = {
let self = yield;
this._log.trace("upwrapKey called. [id=" + identity.realm + "]");
let ret = this._crypto.unwrapSymmetricKey(data,
identity.privkey,
identity.password,
identity.passphraseSalt,
identity.privkeyWrapIV);
let ret = Svc.Crypto.unwrapSymmetricKey(data, identity.privkey,
identity.password, identity.passphraseSalt, identity.privkeyWrapIV);
self.done(ret);
},

View File

@ -99,12 +99,6 @@ PasswordStore.prototype = {
__proto__: Store.prototype,
_logName: "PasswordStore",
get _loginManager() {
let loginManager = Utils.getLoginManager();
this.__defineGetter__("_loginManager", function() loginManager);
return loginManager;
},
_nsLoginInfo: null,
_init: function PasswordStore_init() {
Store.prototype._init.call(this);
@ -140,7 +134,7 @@ PasswordStore.prototype = {
getAllIDs: function PasswordStore__getAllIDs() {
let items = {};
let logins = this._loginManager.getAllLogins({});
let logins = Svc.Login.getAllLogins({});
for (let i = 0; i < logins.length; i++) {
let metaInfo = logins[i].QueryInterface(Ci.nsILoginMetaInfo);
@ -166,7 +160,7 @@ PasswordStore.prototype = {
createInstance(Ci.nsIWritablePropertyBag2);
prop.setPropertyAsAUTF8String("guid", newID);
this._loginManager.modifyLogin(this._loginItems[oldID], prop);
Svc.Login.modifyLogin(this._loginItems[oldID], prop);
},
itemExists: function PasswordStore__itemExists(id) {
@ -195,13 +189,13 @@ PasswordStore.prototype = {
create: function PasswordStore__create(record) {
this._log.debug("Adding login for " + record.hostname);
this._loginManager.addLogin(this._nsLoginInfoFromRecord(record));
Svc.Login.addLogin(this._nsLoginInfoFromRecord(record));
},
remove: function PasswordStore__remove(record) {
this._log.debug("Removing login " + record.id);
if (record.id in this._loginItems) {
this._loginManager.removeLogin(this._loginItems[record.id]);
Svc.Login.removeLogin(this._loginItems[record.id]);
return;
}
@ -219,11 +213,11 @@ PasswordStore.prototype = {
this._log.trace("Updating " + record.id + " (" + itemId + ")");
let newinfo = this._nsLoginInfoFromRecord(record);
this._loginManager.modifyLogin(login, newinfo);
Svc.Login.modifyLogin(login, newinfo);
},
wipe: function PasswordStore_wipe() {
this._loginManager.removeAllLogins();
Svc.Login.removeAllLogins();
}
};

View File

@ -145,9 +145,7 @@ Resource.prototype = {
},
_createRequest: function Res__createRequest() {
let ios = Cc["@mozilla.org/network/io-service;1"].
getService(Ci.nsIIOService);
this._lastChannel = ios.newChannel(this.spec, null, null).
this._lastChannel = Svc.IO.newChannel(this.spec, null, null).
QueryInterface(Ci.nsIRequest);
// Always validate the cache:
let loadFlags = this._lastChannel.loadFlags;
@ -268,6 +266,8 @@ function ChannelListener(onComplete, onProgress, logger) {
}
ChannelListener.prototype = {
onStartRequest: function Channel_onStartRequest(channel) {
// XXX Bug 482179 Some reason xpconnect makes |channel| only nsIRequest
channel.QueryInterface(Ci.nsIHttpChannel);
this._log.debug(channel.requestMethod + " request for " +
channel.URI.spec);
this._data = '';

View File

@ -125,30 +125,6 @@ WeaveSvc.prototype = {
_keyGenEnabled: true,
_mostRecentError: null,
__os: null,
get _os() {
if (!this.__os)
this.__os = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
return this.__os;
},
__dirSvc: null,
get _dirSvc() {
if (!this.__dirSvc)
this.__dirSvc = Cc["@mozilla.org/file/directory_service;1"].
getService(Ci.nsIProperties);
return this.__dirSvc;
},
__json: null,
get _json() {
if (!this.__json)
this.__json = Cc["@mozilla.org/dom/json;1"].
createInstance(Ci.nsIJSON);
return this.__json;
},
// object for caching public and private keys
_keyPair: {},
@ -291,7 +267,7 @@ WeaveSvc.prototype = {
}
Utils.prefs.addObserver("", this, false);
this._os.addObserver(this, "quit-application", true);
Svc.Observer.addObserver(this, "quit-application", true);
FaultTolerance.Service; // initialize FT service
if (!this.enabled)
@ -335,7 +311,7 @@ WeaveSvc.prototype = {
dapp.level = Log4Moz.Level[Svc.Prefs.get("log.appender.dump")];
root.addAppender(dapp);
let brief = this._dirSvc.get("ProfD", Ci.nsIFile);
let brief = Svc.Directory.get("ProfD", Ci.nsIFile);
brief.QueryInterface(Ci.nsILocalFile);
brief.append("weave");
brief.append("logs");
@ -513,7 +489,7 @@ WeaveSvc.prototype = {
// Cancel the sync timer now that we're logged out
this._checkSync();
this._os.notifyObservers(null, "weave:service:logout:finish", "");
Svc.Observer.notifyObservers(null, "weave:service:logout:finish", "");
},
// stuff we need to to after login, before we can really do
@ -863,7 +839,7 @@ WeaveSvc.prototype = {
// XXX Bug 480448: Delete any snapshots from old code
try {
let cruft = this._dirSvc.get("ProfD", Ci.nsIFile);
let cruft = Svc.Directory.get("ProfD", Ci.nsIFile);
cruft.QueryInterface(Ci.nsILocalFile);
cruft.append("weave");
cruft.append("snapshots");

View File

@ -64,14 +64,6 @@ Store.prototype = {
// set this property in child object's wrap()!
_lookup: null,
__os: null,
get _os() {
if (!this.__os)
this.__os = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
return this.__os;
},
__json: null,
get _json() {
if (!this.__json)

View File

@ -78,9 +78,7 @@ let Utils = {
arg = {path: arg};
let pathParts = arg.path.split("/");
let dirSvc = Cc["@mozilla.org/file/directory_service;1"].
getService(Ci.nsIProperties);
let file = dirSvc.get("ProfD", Ci.nsIFile);
let file = Svc.Directory.get("ProfD", Ci.nsIFile);
file.QueryInterface(Ci.nsILocalFile);
for (let i = 0; i < pathParts.length; i++)
file.append(pathParts[i]);
@ -89,17 +87,10 @@ let Utils = {
return file;
},
getLoginManager: function getLoginManager() {
return Cc["@mozilla.org/login-manager;1"].
getService(Ci.nsILoginManager);
},
findPassword: function findPassword(realm, username) {
// fixme: make a request and get the realm ?
let password;
let lm = Cc["@mozilla.org/login-manager;1"]
.getService(Ci.nsILoginManager);
let logins = lm.findLogins({}, 'chrome://weave', null, realm);
let logins = Svc.Login.findLogins({}, 'chrome://weave', null, realm);
for (let i = 0; i < logins.length; i++) {
if (logins[i].username == username) {
@ -112,8 +103,7 @@ let Utils = {
setPassword: function setPassword(realm, username, password) {
// cleanup any existing passwords
let lm = Cc["@mozilla.org/login-manager;1"]
.getService(Ci.nsILoginManager);
let lm = Svc.Login;
let logins = lm.findLogins({}, 'chrome://weave', null, realm);
for (let i = 0; i < logins.length; i++)
lm.removeLogin(logins[i]);
@ -370,10 +360,7 @@ let Utils = {
},
getTmp: function Weave_getTmp(name) {
let ds = Cc["@mozilla.org/file/directory_service;1"].
getService(Ci.nsIProperties);
let tmp = ds.get("ProfD", Ci.nsIFile);
let tmp = Svc.Directory.get("ProfD", Ci.nsIFile);
tmp.QueryInterface(Ci.nsILocalFile);
tmp.append("weave");
@ -509,8 +496,11 @@ Utils.EventListener.prototype = {
let Svc = {};
Svc.Prefs = new Preferences(PREFS_BRANCH);
Utils.lazyInstance(Svc, 'Json', "@mozilla.org/dom/json;1", Ci.nsIJSON);
Utils.lazySvc(Svc, 'IO', "@mozilla.org/network/io-service;1", Ci.nsIIOService);
Utils.lazySvc(Svc, 'Crypto', "@labs.mozilla.com/Weave/Crypto;1", Ci.IWeaveCrypto);
Utils.lazySvc(Svc, 'Directory', "@mozilla.org/file/directory_service;1", Ci.nsIProperties);
Utils.lazySvc(Svc, 'IO', "@mozilla.org/network/io-service;1", Ci.nsIIOService);
Utils.lazySvc(Svc, 'Login', "@mozilla.org/login-manager;1", Ci.nsILoginManager);
Utils.lazySvc(Svc, 'Memory', "@mozilla.org/xpcom/memory-service;1", Ci.nsIMemory);
Utils.lazySvc(Svc, 'Observer', "@mozilla.org/observer-service;1", Ci.nsIObserverService);
Utils.lazySvc(Svc, 'Version',
"@mozilla.org/xpcom/version-comparator;1", Ci.nsIVersionComparator);

View File

@ -122,8 +122,7 @@ let Wrap = {
if (!ret)
throw "Could not acquire lock";
this._os.notifyObservers(null,
this._osPrefix + "local-lock:acquired", "");
Svc.Observer.notifyObservers(null, this._osPrefix + "local-lock:acquired", "");
try {
args = savedArgs.concat(args);
@ -135,8 +134,7 @@ let Wrap = {
} finally {
this.unlock();
this._os.notifyObservers(null,
this._osPrefix + "local-lock:released", "");
Svc.Observer.notifyObservers(null, this._osPrefix + "local-lock:released", "");
}
self.done(ret);

View File

@ -24,9 +24,9 @@ function FakeLoginManager(fakeLogins) {
let self = this;
Utils.getLoginManager = function fake_getLoginManager() {
// Return a fake nsILoginManager object.
return {
// Use a fake nsILoginManager object.
delete Svc.Login;
Svc.Login = {
removeAllLogins: function() { self.fakeLogins = []; },
getAllLogins: function() { return self.fakeLogins; },
addLogin: function(login) {
@ -34,6 +34,5 @@ function FakeLoginManager(fakeLogins) {
"with hostname '" + login.hostname + "'.");
self.fakeLogins.push(login);
}
};
};
}