diff options
3 files changed, 25 insertions, 4 deletions
diff --git a/core/java/android/hardware/display/WifiDisplay.java b/core/java/android/hardware/display/WifiDisplay.java index 2fd52b8f4e7a..339fd6b246cc 100644 --- a/core/java/android/hardware/display/WifiDisplay.java +++ b/core/java/android/hardware/display/WifiDisplay.java @@ -33,6 +33,7 @@ public final class WifiDisplay implements Parcelable { private final String mDeviceAddress; private final String mDeviceName; private final String mDeviceAlias; + private final boolean mCanConnect; public static final WifiDisplay[] EMPTY_ARRAY = new WifiDisplay[0]; @@ -41,7 +42,9 @@ public final class WifiDisplay implements Parcelable { String deviceAddress = in.readString(); String deviceName = in.readString(); String deviceAlias = in.readString(); - return new WifiDisplay(deviceAddress, deviceName, deviceAlias); + boolean canConnect = (in.readInt() != 0); + return new WifiDisplay(deviceAddress, deviceName, + deviceAlias, canConnect); } public WifiDisplay[] newArray(int size) { @@ -50,6 +53,11 @@ public final class WifiDisplay implements Parcelable { }; public WifiDisplay(String deviceAddress, String deviceName, String deviceAlias) { + this(deviceAddress, deviceName, deviceAlias, false); + } + + public WifiDisplay(String deviceAddress, String deviceName, + String deviceAlias, boolean canConnect) { if (deviceAddress == null) { throw new IllegalArgumentException("deviceAddress must not be null"); } @@ -60,6 +68,7 @@ public final class WifiDisplay implements Parcelable { mDeviceAddress = deviceAddress; mDeviceName = deviceName; mDeviceAlias = deviceAlias; + mCanConnect = canConnect; } /** @@ -88,6 +97,13 @@ public final class WifiDisplay implements Parcelable { } /** + * Gets the availability of the Wifi display device. + */ + public boolean canConnect() { + return mCanConnect; + } + + /** * Gets the name to show in the UI. * Uses the device alias if available, otherwise uses the device name. */ @@ -104,7 +120,8 @@ public final class WifiDisplay implements Parcelable { return other != null && mDeviceAddress.equals(other.mDeviceAddress) && mDeviceName.equals(other.mDeviceName) - && Objects.equal(mDeviceAlias, other.mDeviceAlias); + && Objects.equal(mDeviceAlias, other.mDeviceAlias) + && (mCanConnect == other.mCanConnect); } /** @@ -127,6 +144,7 @@ public final class WifiDisplay implements Parcelable { dest.writeString(mDeviceAddress); dest.writeString(mDeviceName); dest.writeString(mDeviceAlias); + dest.writeInt(mCanConnect ? 1 : 0); } @Override @@ -141,6 +159,7 @@ public final class WifiDisplay implements Parcelable { if (mDeviceAlias != null) { result += ", alias " + mDeviceAlias; } + result += ", canConnect " + mCanConnect; return result; } } diff --git a/services/java/com/android/server/display/PersistentDataStore.java b/services/java/com/android/server/display/PersistentDataStore.java index 105c2534c574..d5d71322f4a9 100644 --- a/services/java/com/android/server/display/PersistentDataStore.java +++ b/services/java/com/android/server/display/PersistentDataStore.java @@ -105,7 +105,8 @@ final class PersistentDataStore { alias = mRememberedWifiDisplays.get(index).getDeviceAlias(); } if (!Objects.equal(display.getDeviceAlias(), alias)) { - return new WifiDisplay(display.getDeviceAddress(), display.getDeviceName(), alias); + return new WifiDisplay(display.getDeviceAddress(), display.getDeviceName(), + alias, display.canConnect()); } } return display; diff --git a/services/java/com/android/server/display/WifiDisplayController.java b/services/java/com/android/server/display/WifiDisplayController.java index 8c8b360c480e..e595df400d59 100644 --- a/services/java/com/android/server/display/WifiDisplayController.java +++ b/services/java/com/android/server/display/WifiDisplayController.java @@ -897,7 +897,8 @@ final class WifiDisplayController implements DumpUtils.Dump { } private static WifiDisplay createWifiDisplay(WifiP2pDevice device) { - return new WifiDisplay(device.deviceAddress, device.deviceName, null); + return new WifiDisplay(device.deviceAddress, device.deviceName, null, + device.wfdInfo.isSessionAvailable()); } private final BroadcastReceiver mWifiP2pReceiver = new BroadcastReceiver() { |