diff --git a/devtools/shared/adb/adb.js b/devtools/shared/adb/adb.js index 222b9dfe2e5a..1d990b7457b2 100644 --- a/devtools/shared/adb/adb.js +++ b/devtools/shared/adb/adb.js @@ -33,9 +33,11 @@ class Adb extends EventEmitter { this._updateAdbProcess = this._updateAdbProcess.bind(this); this._onDeviceConnected = this._onDeviceConnected.bind(this); this._onDeviceDisconnected = this._onDeviceDisconnected.bind(this); + this._onNoDevicesDetected = this._onNoDevicesDetected.bind(this); this._trackDevicesCommand.on("device-connected", this._onDeviceConnected); this._trackDevicesCommand.on("device-disconnected", this._onDeviceDisconnected); + this._trackDevicesCommand.on("no-devices-detected", this._onNoDevicesDetected); adbAddon.on("update", this._updateAdbProcess); } @@ -126,6 +128,10 @@ class Adb extends EventEmitter { this.updateRuntimes(); } + _onNoDevicesDetected() { + this.updateRuntimes(); + } + async _getDeviceRuntimes(device) { const socketPaths = [...await device.getRuntimeSocketPaths()]; return socketPaths.map(socketPath => new AdbRuntime(device, socketPath)); diff --git a/devtools/shared/adb/commands/track-devices.js b/devtools/shared/adb/commands/track-devices.js index 40a0467d1182..3c9c5dbfd829 100644 --- a/devtools/shared/adb/commands/track-devices.js +++ b/devtools/shared/adb/commands/track-devices.js @@ -123,9 +123,14 @@ class TrackDevicesCommand extends EventEmitter { } _disconnectAllDevices() { - for (const [deviceId, status] of this._devices.entries()) { - if (status !== ADB_STATUS_OFFLINE) { - this.emit("device-disconnected", deviceId); + if (this._devices.size === 0) { + // If no devices were detected, fire an event to let consumer resume. + this.emit("no-devices-detected"); + } else { + for (const [deviceId, status] of this._devices.entries()) { + if (status !== ADB_STATUS_OFFLINE) { + this.emit("device-disconnected", deviceId); + } } } this._devices = new Map();