diff options
author | Juan C Nuno <juancnuno@google.com> | 2022-04-12 13:36:20 -0700 |
---|---|---|
committer | Juan C Nuno <juancnuno@google.com> | 2022-04-12 13:49:13 -0700 |
commit | 99dd07bda25980ed1bfa1cd28795afd175a17ea2 (patch) | |
tree | d87047d39317fb33bd742b4ae877fa1943342105 /device-manager | |
parent | daac93d82c5b44dafa82f4b60ccc13d549161334 (diff) | |
download | idea-99dd07bda25980ed1bfa1cd28795afd175a17ea2.tar.gz |
Set the online property
Ideally ddmlib would notify Studio of devices that were already online
when Studio was started. It doesn't. This commit handles that case.
Bug: 226521009
Test: Not applicable
Change-Id: I8f4d35e6868a5c23c2426ddd4b8d3b2f67630052
Diffstat (limited to 'device-manager')
2 files changed, 36 insertions, 12 deletions
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilder.java b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilder.java index fb6d724657d..b3f177c1205 100644 --- a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilder.java +++ b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilder.java @@ -21,6 +21,7 @@ import com.android.sdklib.AndroidVersion; import com.android.sdklib.internal.avd.AvdInfo; import com.android.sdklib.repository.IdDisplay; import com.android.sdklib.repository.targets.SystemImage; +import com.android.tools.idea.avdmanager.AvdManagerConnection; import com.android.tools.idea.devicemanager.DeviceManagerFutures; import com.android.tools.idea.devicemanager.DeviceType; import com.android.tools.idea.devicemanager.Resolution; @@ -37,16 +38,22 @@ import org.jetbrains.annotations.VisibleForTesting; final class AsyncVirtualDeviceBuilder { private final @NotNull AvdInfo myDevice; + private final @NotNull ListenableFuture<@NotNull Boolean> myOnlineFuture; private final @NotNull ListenableFuture<@NotNull Long> mySizeOnDiskFuture; @UiThread AsyncVirtualDeviceBuilder(@NotNull AvdInfo device, @NotNull ListeningExecutorService service) { - this(device, service.submit(() -> recursiveSize(device))); + this(device, + service.submit(() -> AvdManagerConnection.getDefaultAvdManagerConnection().isAvdRunning(device)), + service.submit(() -> recursiveSize(device))); } @VisibleForTesting - AsyncVirtualDeviceBuilder(@NotNull AvdInfo device, @NotNull ListenableFuture<@NotNull Long> sizeOnDiskFuture) { + AsyncVirtualDeviceBuilder(@NotNull AvdInfo device, + @NotNull ListenableFuture<@NotNull Boolean> onlineFuture, + @NotNull ListenableFuture<@NotNull Long> sizeOnDiskFuture) { myDevice = device; + myOnlineFuture = onlineFuture; mySizeOnDiskFuture = sizeOnDiskFuture; } @@ -63,7 +70,7 @@ final class AsyncVirtualDeviceBuilder { @UiThread @NotNull ListenableFuture<@NotNull VirtualDevice> buildAsync() { // noinspection UnstableApiUsage - return Futures.whenAllComplete(mySizeOnDiskFuture).call(this::build, EdtExecutorService.getInstance()); + return Futures.whenAllComplete(myOnlineFuture, mySizeOnDiskFuture).call(this::build, EdtExecutorService.getInstance()); } @UiThread @@ -75,6 +82,7 @@ final class AsyncVirtualDeviceBuilder { .setKey(new VirtualDeviceName(myDevice.getName())) .setType(getType(tag)) .setName(myDevice.getDisplayName()) + .setOnline(DeviceManagerFutures.getDoneOrElse(myOnlineFuture, false)) .setTarget(Targets.toString(version, tag)) .setCpuArchitecture(myDevice.getCpuArch()) .setAndroidVersion(version) diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilderTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilderTest.java index ea9d0c9221f..5b3a2cede8c 100644 --- a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilderTest.java +++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilderTest.java @@ -46,7 +46,7 @@ public final class AsyncVirtualDeviceBuilderTest { null, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(0L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(false), Futures.immediateFuture(0L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -69,7 +69,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -92,7 +94,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -116,7 +120,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -138,7 +144,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -158,7 +166,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -178,7 +188,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -198,7 +210,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); @@ -218,7 +232,9 @@ public final class AsyncVirtualDeviceBuilderTest { properties, AvdStatus.OK); - AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, Futures.immediateFuture(1_024L)); + AsyncVirtualDeviceBuilder builder = new AsyncVirtualDeviceBuilder(avdInfo, + Futures.immediateFuture(false), + Futures.immediateFuture(1_024L)); Future<VirtualDevice> future = builder.buildAsync(); VirtualDevice device = TestDeviceManagerFutures.get(future); |