summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authordsmyers@chromium.org <dsmyers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-30 08:07:54 +0000
committerdsmyers@chromium.org <dsmyers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-30 08:07:54 +0000
commit43af73ecf29dc030607254a75cba0b43b10bbc02 (patch)
tree5f597b69dfe4a6f13cc5abf768736dd7ede3f788 /sync
parent86be9d22527d01bdf255a87b26218b6bd2eb5a47 (diff)
downloadchromium_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.java5
-rw-r--r--sync/android/javatests/src/org/chromium/sync/notifier/InvalidationServiceTest.java25
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);