Bug 979841 - [Tarako]Wifi stay on searching status even scan results available. r=chulee

This commit is contained in:
Vincent Chang 2014-03-12 18:25:32 +08:00
parent 0be933a4a8
commit 58bfd850d9
2 changed files with 36 additions and 16 deletions

View File

@ -135,84 +135,75 @@ DOMWifiManager.prototype = {
return;
let request;
if (msg.rid) {
request = this.takeRequest(msg.rid);
if (!request) {
return;
}
}
switch (aMessage.name) {
case "WifiManager:getNetworks:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:getNetworks:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, "Unable to scan for networks");
break;
case "WifiManager:getKnownNetworks:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:getKnownNetworks:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, "Unable to get known networks");
break;
case "WifiManager:associate:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, true);
break;
case "WifiManager:associate:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, "Unable to add the network");
break;
case "WifiManager:forget:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, true);
break;
case "WifiManager:forget:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, msg.data);
break;
case "WifiManager:wps:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:wps:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, msg.data);
break;
case "WifiManager:setPowerSavingMode:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:setPowerSavingMode:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, msg.data);
break;
case "WifiManager:setHttpProxy:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:setHttpProxy:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, msg.data);
break;
case "WifiManager:setStaticIpMode:Return:OK":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireSuccess(request, exposeReadOnly(msg.data));
break;
case "WifiManager:setStaticIpMode:Return:NO":
request = this.takeRequest(msg.rid);
Services.DOMRequest.fireError(request, msg.data);
break;

View File

@ -2402,6 +2402,25 @@ WifiWorker.prototype = {
_sendMessage: function(message, success, data, msg) {
msg.manager.sendAsyncMessage(message + (success ? ":OK" : ":NO"),
{ data: data, rid: msg.rid, mid: msg.mid });
this._splicePendingRequest(msg);
},
_domRequest: [],
_splicePendingRequest: function(msg) {
for (let i = 0; i < this._domRequest.length; i++) {
if (this._domRequest[i].msg === msg) {
this._domRequest.splice(i, 1);
return;
}
}
},
_clearPendingRequest: function() {
if (this._domRequest.length === 0) return;
this._domRequest.forEach(function(req) {
this._sendMessage(req.name + ":Return", false, "Wifi is disabled", req.msg);
});
},
receiveMessage: function MessageManager_receiveMessage(aMessage) {
@ -2433,6 +2452,11 @@ WifiWorker.prototype = {
return;
}
// We are interested in DOMRequests only.
if (aMessage.name != "WifiManager:getState") {
this._domRequest.push({name: aMessage.name, msg:msg});
}
switch (aMessage.name) {
case "WifiManager:getNetworks":
this.getNetworks(msg);
@ -2612,6 +2636,11 @@ WifiWorker.prototype = {
},
setWifiEnabled: function(enabled, callback) {
// Reply error to pending requests.
if (!enabled) {
this._clearPendingRequest();
}
WifiManager.setWifiEnabled(enabled, callback);
},