diff options
4 files changed, 29 insertions, 17 deletions
diff --git a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java index f7e1f7293ac6..83acc47d637f 100644 --- a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java +++ b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java @@ -726,26 +726,11 @@ public class PackageImpl implements ParsedPackage, AndroidPackageInternal, this.usesSdkLibrariesVersionsMajor, versionMajor, true); this.usesSdkLibrariesCertDigests = ArrayUtils.appendElement(String[].class, this.usesSdkLibrariesCertDigests, certSha256Digests, true); - this.usesSdkLibrariesOptional = appendBoolean(this.usesSdkLibrariesOptional, + this.usesSdkLibrariesOptional = ArrayUtils.appendBoolean(this.usesSdkLibrariesOptional, usesSdkLibrariesOptional); return this; } - /** - * Adds value to given array if not already present, providing set-like - * behavior. - */ - public static boolean[] appendBoolean(@Nullable boolean[] cur, boolean val) { - if (cur == null) { - return new boolean[] { val }; - } - final int N = cur.length; - boolean[] ret = new boolean[N + 1]; - System.arraycopy(cur, 0, ret, 0, N); - ret[N] = val; - return ret; - } - @Override public PackageImpl addUsesStaticLibrary(String libraryName, long version, String[] certSha256Digests) { diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java index 9d0be4bf8ee6..8f00f79e7179 100644 --- a/core/java/com/android/internal/util/ArrayUtils.java +++ b/core/java/com/android/internal/util/ArrayUtils.java @@ -623,6 +623,21 @@ public class ArrayUtils { * Adds value to given array if not already present, providing set-like * behavior. */ + public static boolean[] appendBoolean(@Nullable boolean[] cur, boolean val) { + if (cur == null) { + return new boolean[] { val }; + } + final int N = cur.length; + boolean[] ret = new boolean[N + 1]; + System.arraycopy(cur, 0, ret, 0, N); + ret[N] = val; + return ret; + } + + /** + * Adds value to given array if not already present, providing set-like + * behavior. + */ public static @NonNull long[] appendLong(@Nullable long[] cur, long val) { return appendLong(cur, val, false); } diff --git a/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java index 0c5e9664bbde..fc233fba082e 100644 --- a/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java +++ b/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java @@ -161,6 +161,18 @@ public class ArrayUtilsTest { } @Test + public void testAppendBoolean() throws Exception { + assertArrayEquals(new boolean[] { true }, + ArrayUtils.appendBoolean(null, true)); + assertArrayEquals(new boolean[] { true }, + ArrayUtils.appendBoolean(new boolean[] { }, true)); + assertArrayEquals(new boolean[] { true, false }, + ArrayUtils.appendBoolean(new boolean[] { true }, false)); + assertArrayEquals(new boolean[] { true, true }, + ArrayUtils.appendBoolean(new boolean[] { true }, true)); + } + + @Test public void testRemoveLong() throws Exception { assertNull(ArrayUtils.removeLong(null, 1)); assertArrayEquals(new long[] { }, diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index cfbaae3d0f30..460bbb7e4b41 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -2556,7 +2556,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile outPs.getUsesSdkLibraries(), libName)); outPs.setUsesSdkLibrariesVersionsMajor(ArrayUtils.appendLong( outPs.getUsesSdkLibrariesVersionsMajor(), libVersion)); - outPs.setUsesSdkLibrariesOptional(PackageImpl.appendBoolean( + outPs.setUsesSdkLibrariesOptional(ArrayUtils.appendBoolean( outPs.getUsesSdkLibrariesOptional(), optional)); } |