Merge "Sort administrator UIDs for NetworkCapabilities."

This commit is contained in:
Cody Kesting
2020-03-31 17:43:02 +00:00
committed by Gerrit Code Review
2 changed files with 24 additions and 0 deletions

View File

@@ -947,12 +947,19 @@ public final class NetworkCapabilities implements Parcelable {
* <p>The administrator UIDs are set by network agents. * <p>The administrator UIDs are set by network agents.
* *
* @param administratorUids the UIDs to be set as administrators of this Network. * @param administratorUids the UIDs to be set as administrators of this Network.
* @throws IllegalArgumentException if duplicate UIDs are contained in administratorUids
* @see #mAdministratorUids * @see #mAdministratorUids
* @hide * @hide
*/ */
@NonNull @NonNull
public NetworkCapabilities setAdministratorUids(@NonNull final int[] administratorUids) { public NetworkCapabilities setAdministratorUids(@NonNull final int[] administratorUids) {
mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); 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; return this;
} }

View File

@@ -441,6 +441,23 @@ public class NetworkCapabilitiesTest {
return range; 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 @Test
public void testCombineCapabilities() { public void testCombineCapabilities() {
NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc1 = new NetworkCapabilities();