diff options
| -rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 3 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/content/SyncManagerTest.java | 18 |
2 files changed, 21 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index ac7e01ed4d72..1786a51e0f7f 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -3978,6 +3978,9 @@ public class SyncManager { * @return true if the provided key is used by the SyncManager in scheduling the sync. */ private static boolean isSyncSetting(String key) { + if (key == null) { + return false; + } if (key.equals(ContentResolver.SYNC_EXTRAS_EXPEDITED)) { return true; } diff --git a/services/tests/servicestests/src/com/android/server/content/SyncManagerTest.java b/services/tests/servicestests/src/com/android/server/content/SyncManagerTest.java index d093e7961b22..c2a81d9453e4 100644 --- a/services/tests/servicestests/src/com/android/server/content/SyncManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/content/SyncManagerTest.java @@ -16,6 +16,7 @@ package com.android.server.content; +import android.content.ContentResolver; import android.os.Bundle; import android.test.suitebuilder.annotation.SmallTest; @@ -57,6 +58,23 @@ public class SyncManagerTest extends TestCase { SyncManager.syncExtrasEquals(b1, b2, false /* don't care about system extras */)); } + public void testSyncExtrasEqualsFails_WithNull() throws Exception { + Bundle b1 = new Bundle(); + b1.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); + b1.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); + + Bundle b2 = new Bundle(); + b2.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); + b2.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); + b2.putString(null, "Hello NPE!"); + b2.putString("a", "b"); + b2.putString("c", "d"); + b2.putString("e", "f"); + + assertFalse("Extras not properly compared between bundles.", + SyncManager.syncExtrasEquals(b1, b2, false /* don't care about system extras */)); + } + public void testSyncExtrasEqualsFails_differentValues() throws Exception { Bundle b1 = new Bundle(); Bundle b2 = new Bundle(); |