summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pDevice.java9
-rw-r--r--wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java73
2 files changed, 78 insertions, 4 deletions
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
index 22dc2ed32083..ab7bb688f5ea 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pDevice.java
@@ -17,14 +17,13 @@
package android.net.wifi.p2p;
import android.annotation.UnsupportedAppUsage;
-import android.os.Parcelable;
import android.os.Parcel;
+import android.os.Parcelable;
import android.util.Log;
import java.util.Objects;
-
-import java.util.regex.Pattern;
import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* A class representing a Wi-Fi p2p device
@@ -360,7 +359,9 @@ public class WifiP2pDevice implements Parcelable {
deviceCapability = source.deviceCapability;
groupCapability = source.groupCapability;
status = source.status;
- wfdInfo = new WifiP2pWfdInfo(source.wfdInfo);
+ if (source.wfdInfo != null) {
+ wfdInfo = new WifiP2pWfdInfo(source.wfdInfo);
+ }
}
}
diff --git a/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java b/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
index f61e6b759085..17ee75594c2f 100644
--- a/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
+++ b/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
@@ -30,6 +30,31 @@ import org.junit.Test;
public class WifiP2pDeviceTest {
/**
+ * Compare two p2p devices.
+ *
+ * @param devA is the first device to be compared
+ * @param devB is the second device to be compared
+ */
+ private void compareWifiP2pDevices(WifiP2pDevice devA, WifiP2pDevice devB) {
+ assertEquals(devA.deviceName, devB.deviceName);
+ assertEquals(devA.deviceAddress, devB.deviceAddress);
+ assertEquals(devA.primaryDeviceType, devB.primaryDeviceType);
+ assertEquals(devA.secondaryDeviceType, devB.secondaryDeviceType);
+ assertEquals(devA.wpsConfigMethodsSupported, devB.wpsConfigMethodsSupported);
+ assertEquals(devA.deviceCapability, devB.deviceCapability);
+ assertEquals(devA.groupCapability, devB.groupCapability);
+ assertEquals(devA.status, devB.status);
+ if (devA.wfdInfo != null) {
+ assertEquals(devA.wfdInfo.isWfdEnabled(), devB.wfdInfo.isWfdEnabled());
+ assertEquals(devA.wfdInfo.getDeviceInfoHex(), devB.wfdInfo.getDeviceInfoHex());
+ assertEquals(devA.wfdInfo.getControlPort(), devB.wfdInfo.getControlPort());
+ assertEquals(devA.wfdInfo.getMaxThroughput(), devB.wfdInfo.getMaxThroughput());
+ } else {
+ assertEquals(devA.wfdInfo, devB.wfdInfo);
+ }
+ }
+
+ /**
* Check equals and hashCode consistency
*/
@Test
@@ -42,4 +67,52 @@ public class WifiP2pDeviceTest {
assertTrue(dev_a.equals(dev_b));
assertEquals(dev_a.hashCode(), dev_b.hashCode());
}
+
+ /**
+ * Check the copy constructor with default values.
+ */
+ @Test
+ public void testCopyConstructorWithDefaultValues() throws Exception {
+ WifiP2pDevice device = new WifiP2pDevice();
+ WifiP2pDevice copy = new WifiP2pDevice(device);
+ compareWifiP2pDevices(device, copy);
+ }
+
+ /**
+ * Check the copy constructor with updated values.
+ */
+ @Test
+ public void testCopyConstructorWithUpdatedValues() throws Exception {
+ WifiP2pDevice device = new WifiP2pDevice();
+ device.deviceName = "deviceName";
+ device.deviceAddress = "11:22:33:44:55:66";
+ device.primaryDeviceType = "primaryDeviceType";
+ device.secondaryDeviceType = "secondaryDeviceType";
+ device.wpsConfigMethodsSupported = 0x0008;
+ device.deviceCapability = 1;
+ device.groupCapability = 1;
+ device.status = WifiP2pDevice.CONNECTED;
+ device.wfdInfo = new WifiP2pWfdInfo();
+ WifiP2pDevice copy = new WifiP2pDevice(device);
+ compareWifiP2pDevices(device, copy);
+ }
+
+ /**
+ * Check the copy constructor when the wfdInfo of the source object is null.
+ */
+ @Test
+ public void testCopyConstructorWithNullWfdInfo() throws Exception {
+ WifiP2pDevice device = new WifiP2pDevice();
+ device.deviceName = "deviceName";
+ device.deviceAddress = "11:22:33:44:55:66";
+ device.primaryDeviceType = "primaryDeviceType";
+ device.secondaryDeviceType = "secondaryDeviceType";
+ device.wpsConfigMethodsSupported = 0x0008;
+ device.deviceCapability = 1;
+ device.groupCapability = 1;
+ device.status = WifiP2pDevice.CONNECTED;
+ device.wfdInfo = null;
+ WifiP2pDevice copy = new WifiP2pDevice(device);
+ compareWifiP2pDevices(device, copy);
+ }
}