summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/WorkSource.java63
-rw-r--r--core/tests/coretests/src/android/os/WorkSourceParcelTest.java5
2 files changed, 29 insertions, 39 deletions
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index 65528e306943..bc80c8b20b86 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -12,11 +12,11 @@ import android.util.Log;
import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Preconditions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Objects;
/**
* Describes the source of some work that may be done by someone else.
@@ -29,9 +29,13 @@ public class WorkSource implements Parcelable {
@UnsupportedAppUsage
int mNum;
+
@UnsupportedAppUsage
- int[] mUids;
+ @NonNull
+ int[] mUids = new int[0];
+
@UnsupportedAppUsage
+ @Nullable
String[] mNames;
private ArrayList<WorkChain> mChains;
@@ -73,13 +77,8 @@ public class WorkSource implements Parcelable {
return;
}
mNum = orig.mNum;
- if (orig.mUids != null) {
- mUids = orig.mUids.clone();
- mNames = orig.mNames != null ? orig.mNames.clone() : null;
- } else {
- mUids = null;
- mNames = null;
- }
+ mUids = orig.mUids.clone();
+ mNames = orig.mNames != null ? orig.mNames.clone() : null;
if (orig.mChains != null) {
// Make a copy of all WorkChains that exist on |orig| since they are mutable.
@@ -114,7 +113,7 @@ public class WorkSource implements Parcelable {
*/
@SystemApi
public WorkSource(int uid, @NonNull String packageName) {
- Preconditions.checkNotNull(packageName, "packageName can't be null");
+ Objects.requireNonNull(packageName, "packageName can't be null");
mNum = 1;
mUids = new int[] { uid, 0 };
mNames = new String[] { packageName, null };
@@ -124,7 +123,7 @@ public class WorkSource implements Parcelable {
@UnsupportedAppUsage
WorkSource(Parcel in) {
mNum = in.readInt();
- mUids = in.createIntArray();
+ mUids = Objects.requireNonNullElse(in.createIntArray(), new int[0]);
mNames = in.createStringArray();
int numChains = in.readInt();
@@ -318,30 +317,22 @@ public class WorkSource implements Parcelable {
*/
public void set(WorkSource other) {
if (other == null) {
- mNum = 0;
- if (mChains != null) {
- mChains.clear();
- }
+ clear();
return;
}
mNum = other.mNum;
- if (other.mUids != null) {
- if (mUids != null && mUids.length >= mNum) {
- System.arraycopy(other.mUids, 0, mUids, 0, mNum);
- } else {
- mUids = other.mUids.clone();
- }
- if (other.mNames != null) {
- if (mNames != null && mNames.length >= mNum) {
- System.arraycopy(other.mNames, 0, mNames, 0, mNum);
- } else {
- mNames = other.mNames.clone();
- }
+ if (mUids.length >= mNum) { // this has more data than other
+ System.arraycopy(other.mUids, 0, mUids, 0, mNum);
+ } else {
+ mUids = other.mUids.clone();
+ }
+ if (other.mNames != null) {
+ if (mNames != null && mNames.length >= mNum) {
+ System.arraycopy(other.mNames, 0, mNames, 0, mNum);
} else {
- mNames = null;
+ mNames = other.mNames.clone();
}
} else {
- mUids = null;
mNames = null;
}
@@ -361,7 +352,7 @@ public class WorkSource implements Parcelable {
/** @hide */
public void set(int uid) {
mNum = 1;
- if (mUids == null) mUids = new int[2];
+ if (mUids.length == 0) mUids = new int[2];
mUids[0] = uid;
mNames = null;
if (mChains != null) {
@@ -375,7 +366,7 @@ public class WorkSource implements Parcelable {
throw new NullPointerException("Name can't be null");
}
mNum = 1;
- if (mUids == null) {
+ if (mUids.length == 0) {
mUids = new int[2];
mNames = new String[2];
}
@@ -727,7 +718,7 @@ public class WorkSource implements Parcelable {
if (DEBUG) Log.d(TAG, "i1=" + i1 + " i2=" + i2 + " N1=" + N1
+ ": insert " + uids2[i2]);
changed = true;
- if (uids1 == null) {
+ if (uids1.length == 0) {
uids1 = new int[4];
uids1[0] = uids2[i2];
} else if (N1 >= uids1.length) {
@@ -866,7 +857,7 @@ public class WorkSource implements Parcelable {
private void insert(int index, int uid) {
if (DEBUG) Log.d(TAG, "Insert in " + this + " @ " + index + " uid " + uid);
- if (mUids == null) {
+ if (mUids.length == 0) {
mUids = new int[4];
mUids[0] = uid;
mNum = 1;
@@ -891,7 +882,7 @@ public class WorkSource implements Parcelable {
}
private void insert(int index, int uid, String name) {
- if (mUids == null) {
+ if (mNum == 0) {
mUids = new int[4];
mUids[0] = uid;
mNames = new String[4];
@@ -1244,8 +1235,8 @@ public class WorkSource implements Parcelable {
proto.end(workSourceToken);
}
- public static final @android.annotation.NonNull Parcelable.Creator<WorkSource> CREATOR
- = new Parcelable.Creator<WorkSource>() {
+ @NonNull
+ public static final Parcelable.Creator<WorkSource> CREATOR = new Parcelable.Creator<>() {
public WorkSource createFromParcel(Parcel in) {
return new WorkSource(in);
}
diff --git a/core/tests/coretests/src/android/os/WorkSourceParcelTest.java b/core/tests/coretests/src/android/os/WorkSourceParcelTest.java
index 6dcc3a6dfb3c..483160687723 100644
--- a/core/tests/coretests/src/android/os/WorkSourceParcelTest.java
+++ b/core/tests/coretests/src/android/os/WorkSourceParcelTest.java
@@ -55,7 +55,6 @@ public class WorkSourceParcelTest {
unparcelWorkSourceFromNativeAndVerify(/* uids= */ null , /* names= */ null);
unparcelWorkSourceFromNativeAndVerify(uids1, /* names= */ null);
unparcelWorkSourceFromNativeAndVerify(uids2, /* names= */ null);
- //TODO(b/273752423)
unparcelWorkSourceFromNativeAndVerify(/* uids= */ null , names1);
unparcelWorkSourceFromNativeAndVerify(uids1, names1);
unparcelWorkSourceFromNativeAndVerify(uids2, names2);
@@ -70,8 +69,8 @@ public class WorkSourceParcelTest {
final int[] uids2 = {1000, 2000};
final String[] names1 = {"testGetWorkSource1"};
final String[] names2 = {"testGetWorkSource1", "testGetWorkSource2"};
- //TODO(b/273752423)
- //parcelWorkSourceToNativeAndVerify(/* uids= */ null , /* names= */ null );
+
+ parcelWorkSourceToNativeAndVerify(/* uids= */ null , /* names= */ null);
parcelWorkSourceToNativeAndVerify(uids1, /* names= */ null);
parcelWorkSourceToNativeAndVerify(uids2, /* names= */ null);
parcelWorkSourceToNativeAndVerify(uids1, names1);