commit c4a44294290fc96471646ae1ff39fb55d2dedf92 Author: Igor Oliveira igt0@torproject.org Date: Mon May 14 17:56:26 2018 -0300
Bug 26100: Switch from Task.spawn to async/await
Mozilla switched from Task.spawn to async/await[1] and we should follow it since it makes the code simple.
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1353542 --- src/chrome/content/tor-circuit-display.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js index 5bd02bc..7b12db0 100644 --- a/src/chrome/content/tor-circuit-display.js +++ b/src/chrome/content/tor-circuit-display.js @@ -28,7 +28,6 @@ let createTorCircuitDisplay = (function () { // Mozilla utilities const { Cu : utils , Ci : interfaces } = Components.utils; Cu.import("resource://gre/modules/Services.jsm"); -Cu.import("resource://gre/modules/Task.jsm");
// Import the controller code. let { controller } = Cu.import("resource://torbutton/modules/tor-control-port.js", {}); @@ -59,8 +58,8 @@ let trimQuotes = s => s ? s.match(/^"(.*)"$/)[1] : undefined; // __getBridge(id)__. // Gets the bridge parameters for a given node ID. If the node // is not currently used as a bridge, returns null. -let getBridge = function* (controller, id) { - let bridges = yield controller.getConf("bridge"); +let getBridge = async function (controller, id) { + let bridges = await controller.getConf("bridge"); if (bridges) { for (let bridge of bridges) { if (bridge.ID && bridge.ID.toUpperCase() === id.toUpperCase()) { @@ -75,9 +74,9 @@ let getBridge = function* (controller, id) { // Returns the type, IP and country code of a node with given ID. // Example: `nodeDataForID(controller, "20BC91DC525C3DC9974B29FBEAB51230DE024C44")` // => `{ type : "default", ip : "12.23.34.45", countryCode : "fr" }` -let nodeDataForID = function* (controller, id) { +let nodeDataForID = async function (controller, id) { let result = {}, - bridge = yield getBridge(controller, id); // type, ip, countryCode; + bridge = await getBridge(controller, id); // type, ip, countryCode; if (bridge) { result.type = "bridge"; result.bridgeType = bridge.type; @@ -89,14 +88,14 @@ let nodeDataForID = function* (controller, id) { result.type = "default"; // Get the IP address for the given node ID. try { - let statusMap = yield controller.getInfo("ns/id/" + id); + let statusMap = await controller.getInfo("ns/id/" + id); result.ip = statusMap.IP; } catch (e) { } } if (result.ip) { // Get the country code for the node's IP address. try { - let countryCode = yield controller.getInfo("ip-to-country/" + result.ip); + let countryCode = await controller.getInfo("ip-to-country/" + result.ip); result.countryCode = countryCode === "??" ? null : countryCode; } catch (e) { } } @@ -105,18 +104,18 @@ let nodeDataForID = function* (controller, id) {
// __nodeDataForCircuit(controller, circuitEvent)__. // Gets the information for a circuit. -let nodeDataForCircuit = function* (controller, circuitEvent) { +let nodeDataForCircuit = async function (controller, circuitEvent) { let rawIDs = circuitEvent.circuit.map(circ => circ[0]), // Remove the leading '$' if present. ids = rawIDs.map(id => id[0] === "$" ? id.substring(1) : id); // Get the node data for all IDs in circuit. - return [for (id of ids) yield nodeDataForID(controller, id)]; + return Promise.all(ids.map(id => nodeDataForID(controller, id))); };
// __getCircuitStatusByID(aController, circuitID)__ // Returns the circuit status for the circuit with the given ID. -let getCircuitStatusByID = function* (aController, circuitID) { - let circuitStatuses = yield aController.getInfo("circuit-status"); +let getCircuitStatusByID = async function (aController, circuitID) { + let circuitStatuses = await aController.getInfo("circuit-status"); if (circuitStatuses) { for (let circuitStatus of circuitStatuses) { if (circuitStatus.id === circuitID) { @@ -139,22 +138,22 @@ let collectIsolationData = function (aController, updateUI) { return aController.watchEvent( "STREAM", streamEvent => streamEvent.StreamStatus === "SENTCONNECT", - streamEvent => Task.spawn(function* () { + async (streamEvent) => { if (!knownCircuitIDs[streamEvent.CircuitID]) { logger.eclog(3, "streamEvent.CircuitID: " + streamEvent.CircuitID); knownCircuitIDs[streamEvent.CircuitID] = true; - let circuitStatus = yield getCircuitStatusByID(aController, streamEvent.CircuitID), + let circuitStatus = await getCircuitStatusByID(aController, streamEvent.CircuitID), credentials = circuitStatus ? (trimQuotes(circuitStatus.SOCKS_USERNAME) + "|" + trimQuotes(circuitStatus.SOCKS_PASSWORD)) : null; if (credentials) { - let nodeData = yield nodeDataForCircuit(aController, circuitStatus); + let nodeData = await nodeDataForCircuit(aController, circuitStatus); credentialsToNodeDataMap[credentials] = nodeData; updateUI(); } } - }).then(null, Cu.reportError)); + }); };
// __browserForChannel(channel)__.