summaryrefslogtreecommitdiff
path: root/device-manager
diff options
context:
space:
mode:
authorJuan C Nuno <juancnuno@google.com>2022-04-12 13:36:20 -0700
committerJuan C Nuno <juancnuno@google.com>2022-04-12 13:49:13 -0700
commit99dd07bda25980ed1bfa1cd28795afd175a17ea2 (patch)
treed87047d39317fb33bd742b4ae877fa1943342105 /device-manager
parentdaac93d82c5b44dafa82f4b60ccc13d549161334 (diff)
downloadidea-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')
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilder.java14
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/AsyncVirtualDeviceBuilderTest.java34
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);