diff options
author | dsmyers@chromium.org <dsmyers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-30 08:07:54 +0000 |
---|---|---|
committer | dsmyers@chromium.org <dsmyers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-30 08:07:54 +0000 |
commit | 43af73ecf29dc030607254a75cba0b43b10bbc02 (patch) | |
tree | 5f597b69dfe4a6f13cc5abf768736dd7ede3f788 /sync | |
parent | 86be9d22527d01bdf255a87b26218b6bd2eb5a47 (diff) | |
download | chromium_src-43af73ecf29dc030607254a75cba0b43b10bbc02.zip chromium_src-43af73ecf29dc030607254a75cba0b43b10bbc02.tar.gz chromium_src-43af73ecf29dc030607254a75cba0b43b10bbc02.tar.bz2 |
Fix an NPE in InvalidationService.
Fix a NullPointerException in InvalidationService when handling
invalidations without payloads.
BUG=159221
Review URL: https://chromiumcodereview.appspot.com/12086050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179564 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r-- | sync/android/java/src/org/chromium/sync/notifier/InvalidationService.java | 5 | ||||
-rw-r--r-- | sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java | 25 |
2 files changed, 22 insertions, 8 deletions
diff --git a/sync/android/java/src/org/chromium/sync/notifier/InvalidationService.java b/sync/android/java/src/org/chromium/sync/notifier/InvalidationService.java index 8adbd4b..e7f1d82 100644 --- a/sync/android/java/src/org/chromium/sync/notifier/InvalidationService.java +++ b/sync/android/java/src/org/chromium/sync/notifier/InvalidationService.java @@ -104,8 +104,9 @@ public class InvalidationService extends AndroidListener { @Override public void invalidate(Invalidation invalidation, byte[] ackHandle) { - requestSync(invalidation.getObjectId(), invalidation.getVersion(), - new String(invalidation.getPayload())); + byte[] payload = invalidation.getPayload(); + String payloadStr = (payload == null) ? null : new String(payload); + requestSync(invalidation.getObjectId(), invalidation.getVersion(), payloadStr); acknowledge(ackHandle); } diff --git a/sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java b/sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java index a66f238..0cff98e 100644 --- a/sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java +++ b/sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java @@ -311,16 +311,29 @@ public class InvalidationServiceTest extends ServiceTestCase<TestableInvalidatio @SmallTest @Feature({"Sync"}) - public void testInvalidate() { + public void testInvalidateWithPayload() { + doTestInvalidate(true); + } + + @SmallTest + @Feature({"Sync"}) + public void testInvalidateWithoutPayload() { + doTestInvalidate(false); + } + + private void doTestInvalidate(boolean hasPayload) { /* - * Test plan: call invalidate(). Verify the produced bundle has the correct fields. + * Test plan: call invalidate() with an invalidation that may or may not have a payload. + * Verify the produced bundle has the correct fields. */ // Call invalidate. - String payload = "payload"; int version = 4747; ObjectId objectId = ModelType.BOOKMARK.toObjectId(); - Invalidation invalidation = Invalidation.newInstance(objectId, version, payload.getBytes()); - byte[] ackHandle = "testInvalidate".getBytes(); + final String payload = "testInvalidate-" + hasPayload; + Invalidation invalidation = hasPayload ? + Invalidation.newInstance(objectId, version, payload.getBytes()) : + Invalidation.newInstance(objectId, version); + byte[] ackHandle = ("testInvalidate-" + hasPayload).getBytes(); getService().invalidate(invalidation, ackHandle); // Validate bundle. @@ -328,7 +341,7 @@ public class InvalidationServiceTest extends ServiceTestCase<TestableInvalidatio Bundle syncBundle = getService().mRequestedSyncs.get(0); assertEquals("BOOKMARK", syncBundle.getString("objectId")); assertEquals(version, syncBundle.getLong("version")); - assertEquals(payload, syncBundle.getString("payload")); + assertEquals(hasPayload ? payload : "", syncBundle.getString("payload")); // Ensure acknowledged. assertSingleAcknowledgement(ackHandle); |