Sort administrator UIDs for NetworkCapabilities.
Administrator UIDs stored in NetworkCapabilities should be sorted. This allows for easier equals checks and hashCode computation. Additionally, duplicate UIDs should be prevented. Bug: 147903575 Test: atest FrameworksNetTests Change-Id: Ia5387ca2ce7c3fcbd04dc7fbff5266f7bcc71694
This commit is contained in:
@@ -909,6 +909,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* <p>The administrator UIDs are set by network agents.
|
||||
*
|
||||
* @param administratorUids the UIDs to be set as administrators of this Network.
|
||||
* @throws IllegalArgumentException if duplicate UIDs are contained in administratorUids
|
||||
* @see #mAdministratorUids
|
||||
* @hide
|
||||
*/
|
||||
@@ -916,6 +917,12 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
@SystemApi
|
||||
public NetworkCapabilities setAdministratorUids(@NonNull final int[] administratorUids) {
|
||||
mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length);
|
||||
Arrays.sort(mAdministratorUids);
|
||||
for (int i = 0; i < mAdministratorUids.length - 1; i++) {
|
||||
if (mAdministratorUids[i] >= mAdministratorUids[i + 1]) {
|
||||
throw new IllegalArgumentException("All administrator UIDs must be unique");
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -441,6 +441,23 @@ public class NetworkCapabilitiesTest {
|
||||
return range;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdministratorUids() {
|
||||
NetworkCapabilities nc =
|
||||
new NetworkCapabilities().setAdministratorUids(new int[] {2, 1, 3});
|
||||
|
||||
assertArrayEquals(new int[] {1, 2, 3}, nc.getAdministratorUids());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAdministratorUidsWithDuplicates() {
|
||||
try {
|
||||
new NetworkCapabilities().setAdministratorUids(new int[] {1, 1});
|
||||
fail("Expected IllegalArgumentException for duplicate uids");
|
||||
} catch (IllegalArgumentException expected) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCombineCapabilities() {
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
|
||||
Reference in New Issue
Block a user