mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 04:15:43 +00:00
Bug 917176 - 0002. DOM API implementation. r=mrbkap, r=briansmith
This commit is contained in:
parent
08dca0c901
commit
5ba363afb4
@ -95,6 +95,7 @@ DOMWifiManager.prototype = {
|
||||
"WifiManager:setHttpProxy:Return:OK", "WifiManager:setHttpProxy:Return:NO",
|
||||
"WifiManager:setStaticIpMode:Return:OK", "WifiManager:setStaticIpMode:Return:NO",
|
||||
"WifiManager:importCert:Return:OK", "WifiManager:importCert:Return:NO",
|
||||
"WifiManager:getImportedCerts:Return:OK", "WifiManager:getImportedCerts:Return:NO",
|
||||
"WifiManager:wifiDown", "WifiManager:wifiUp",
|
||||
"WifiManager:onconnecting", "WifiManager:onassociate",
|
||||
"WifiManager:onconnect", "WifiManager:ondisconnect",
|
||||
@ -175,6 +176,19 @@ DOMWifiManager.prototype = {
|
||||
return info;
|
||||
},
|
||||
|
||||
_convertWifiCertificateList: function(aList) {
|
||||
let propList = {};
|
||||
for (let k in aList) {
|
||||
propList[k] = this._genReadonlyPropDesc(aList[k]);
|
||||
}
|
||||
|
||||
let list = Cu.createObjectIn(this._window);
|
||||
Object.defineProperties(list, propList);
|
||||
Cu.makeObjectPropsNormal(list);
|
||||
|
||||
return list;
|
||||
},
|
||||
|
||||
_sendMessageForRequest: function(name, data, request) {
|
||||
let id = this.getRequestId(request);
|
||||
this._mm.sendAsyncMessage(name, { data: data, rid: id, mid: this._id });
|
||||
@ -266,6 +280,14 @@ DOMWifiManager.prototype = {
|
||||
Services.DOMRequest.fireError(request, msg.data);
|
||||
break;
|
||||
|
||||
case "WifiManager:getImportedCerts:Return:OK":
|
||||
Services.DOMRequest.fireSuccess(request, this._convertWifiCertificateList(msg.data));
|
||||
break;
|
||||
|
||||
case "WifiManager:getImportedCerts:Return:NO":
|
||||
Services.DOMRequest.fireError(request, msg.data);
|
||||
break;
|
||||
|
||||
case "WifiManager:wifiDown":
|
||||
this._enabled = false;
|
||||
this._currentNetwork = null;
|
||||
@ -424,6 +446,12 @@ DOMWifiManager.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getImportedCerts: function nsIDOMWifiManager_getImportedCerts() {
|
||||
var request = this.createRequest();
|
||||
this._sendMessageForRequest("WifiManager:getImportedCerts", null, request);
|
||||
return request;
|
||||
},
|
||||
|
||||
get enabled() {
|
||||
return this._enabled;
|
||||
},
|
||||
|
@ -1646,6 +1646,7 @@ function WifiWorker() {
|
||||
"WifiManager:setHttpProxy",
|
||||
"WifiManager:setStaticIpMode",
|
||||
"WifiManager:importCert",
|
||||
"WifiManager:getImportedCerts",
|
||||
"child-process-shutdown"];
|
||||
|
||||
messages.forEach((function(msgName) {
|
||||
@ -2601,6 +2602,9 @@ WifiWorker.prototype = {
|
||||
case "WifiManager:importCert":
|
||||
this.importCert(msg);
|
||||
break;
|
||||
case "WifiManager:getImportedCerts":
|
||||
this.getImportedCerts(msg);
|
||||
break;
|
||||
case "WifiManager:getState": {
|
||||
let i;
|
||||
if ((i = this._domManagers.indexOf(msg.manager)) === -1) {
|
||||
@ -3115,6 +3119,44 @@ WifiWorker.prototype = {
|
||||
});
|
||||
},
|
||||
|
||||
getImportedCerts: function getImportedCerts(msg) {
|
||||
const message = "WifiManager:getImportedCerts:Return";
|
||||
let self = this;
|
||||
|
||||
let certDB2 = Cc["@mozilla.org/security/x509certdb;1"]
|
||||
.getService(Ci.nsIX509CertDB2);
|
||||
if (!certDB2) {
|
||||
self._sendMessage(message, false, "Failed to query NSS DB service", msg);
|
||||
}
|
||||
|
||||
let certList = certDB2.getCerts();
|
||||
if (!certList) {
|
||||
self._sendMessage(message, false, "Failed to get certificate List", msg);
|
||||
}
|
||||
|
||||
let certListEnum = certList.getEnumerator();
|
||||
if (!certListEnum) {
|
||||
self._sendMessage(message, false, "Failed to get certificate List enumerator", msg);
|
||||
}
|
||||
let importedCerts = {
|
||||
ServerCert: [],
|
||||
};
|
||||
let UsageMapping = {
|
||||
SERVERCERT: "ServerCert",
|
||||
};
|
||||
|
||||
while (certListEnum.hasMoreElements()) {
|
||||
let certInfo = certListEnum.getNext().QueryInterface(Ci.nsIX509Cert3);
|
||||
let certNicknameInfo = /WIFI\_([A-Z]*)\_(.*)/.exec(certInfo.nickname);
|
||||
if (!certNicknameInfo) {
|
||||
continue;
|
||||
}
|
||||
importedCerts[UsageMapping[certNicknameInfo[1]]].push(certNicknameInfo[2]);
|
||||
}
|
||||
|
||||
self._sendMessage(message, true, importedCerts, msg);
|
||||
},
|
||||
|
||||
// This is a bit ugly, but works. In particular, this depends on the fact
|
||||
// that RadioManager never actually tries to get the worker from us.
|
||||
get worker() { throw "Not implemented"; },
|
||||
|
Loading…
Reference in New Issue
Block a user