diff options
-rw-r--r-- | core/java/android/os/WorkSource.java | 19 | ||||
-rw-r--r-- | core/tests/coretests/src/android/os/WorkSourceTest.java | 17 |
2 files changed, 32 insertions, 4 deletions
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java index bb043b0109d5..d0c2870bfefb 100644 --- a/core/java/android/os/WorkSource.java +++ b/core/java/android/os/WorkSource.java @@ -7,7 +7,6 @@ import android.util.proto.ProtoOutputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.Objects; /** * Describes the source of some work that may be done by someone else. @@ -162,9 +161,21 @@ public class WorkSource implements Parcelable { @Override public boolean equals(Object o) { - return o instanceof WorkSource - && !diff((WorkSource) o) - && Objects.equals(mChains, ((WorkSource) o).mChains); + if (o instanceof WorkSource) { + WorkSource other = (WorkSource) o; + + if (diff(other)) { + return false; + } + + if (mChains != null && !mChains.isEmpty()) { + return mChains.equals(other.mChains); + } else { + return other.mChains == null || other.mChains.isEmpty(); + } + } + + return false; } @Override diff --git a/core/tests/coretests/src/android/os/WorkSourceTest.java b/core/tests/coretests/src/android/os/WorkSourceTest.java index 566ac4daf950..a427a2fe8f66 100644 --- a/core/tests/coretests/src/android/os/WorkSourceTest.java +++ b/core/tests/coretests/src/android/os/WorkSourceTest.java @@ -128,6 +128,23 @@ public class WorkSourceTest extends TestCase { assertFalse(ws3.equals(ws1)); } + public void testEquals_workChains_nullEmptyAreEquivalent() { + // Construct a WorkSource that has no WorkChains, but whose workChains list + // is non-null. + WorkSource ws1 = new WorkSource(); + ws1.add(100); + ws1.createWorkChain().addNode(100, null); + ws1.getWorkChains().clear(); + + WorkSource ws2 = new WorkSource(); + ws2.add(100); + + assertEquals(ws1, ws2); + + ws2.createWorkChain().addNode(100, null); + assertFalse(ws1.equals(ws2)); + } + public void testWorkSourceParcelling() { WorkSource ws = new WorkSource(); |