From a11751e2b2ea0cd785a4bdb57ee672942b86dd77 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Thu, 30 Jun 2016 11:38:38 -0700 Subject: [PATCH] Exception fix on cold start from notification restoring * Fixed null exception that can happen when the app is restoring notifications when cold started. --- OneSignalSDK.jar | Bin 163640 -> 163662 bytes .../OneSignalPackagePrivateHelper.java | 7 +-- .../onesignal/GenerateNotificationRunner.java | 40 ++++++++++++------ .../NotificationBundleProcessor.java | 5 ++- .../main/java/com/onesignal/OneSignal.java | 2 +- 5 files changed, 35 insertions(+), 19 deletions(-) diff --git a/OneSignalSDK.jar b/OneSignalSDK.jar index 070d17c9ea8f073df18f1b5ed3ebd852f86092d6..007f149c31b03138138165bb6076a1b72777cc34 100644 GIT binary patch delta 21777 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 delta 21909 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 S-0TB2`B8#K3^VWp67T;|5_oC= diff --git a/OneSignalSDK/app/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java b/OneSignalSDK/app/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java index 98d9680c26..e4a354e148 100644 --- a/OneSignalSDK/app/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java +++ b/OneSignalSDK/app/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java @@ -52,12 +52,13 @@ public static Bundle createInternalPayloadBundle(Bundle bundle) { } public static void NotificationBundleProcessor_ProcessFromGCMIntentService(Context context, Bundle bundle, NotificationExtenderService.OverrideSettings overrideSettings) { - if (overrideSettings == null) - overrideSettings = new NotificationExtenderService.OverrideSettings(); - NotificationBundleProcessor.ProcessFromGCMIntentService(context, createInternalPayloadBundle(bundle), overrideSettings); } + public static void NotificationBundleProcessor_ProcessFromGCMIntentService_NoWrap(Context context, Bundle bundle, NotificationExtenderService.OverrideSettings overrideSettings) { + NotificationBundleProcessor.ProcessFromGCMIntentService(context, bundle, overrideSettings); + } + public static boolean GcmBroadcastReceiver_processBundle(Context context, Bundle bundle) { return GcmBroadcastReceiver.processBundle(context, bundle); } diff --git a/OneSignalSDK/app/src/test/java/com/test/onesignal/GenerateNotificationRunner.java b/OneSignalSDK/app/src/test/java/com/test/onesignal/GenerateNotificationRunner.java index 6f65b45a22..24cb84028f 100644 --- a/OneSignalSDK/app/src/test/java/com/test/onesignal/GenerateNotificationRunner.java +++ b/OneSignalSDK/app/src/test/java/com/test/onesignal/GenerateNotificationRunner.java @@ -43,7 +43,6 @@ import com.onesignal.NotificationExtenderService; import com.onesignal.NotificationOpenedProcessor; import com.onesignal.OSNotificationPayload; -import com.onesignal.OneSignal; import com.onesignal.OneSignalDbHelper; import com.onesignal.OneSignalPackagePrivateHelper; import com.onesignal.ShadowBadgeCountUpdater; @@ -70,9 +69,12 @@ import org.robolectric.util.ServiceController; import java.util.Iterator; -import java.util.List; import java.util.Map; +import static com.onesignal.OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService; +import static com.onesignal.OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService_NoWrap; +import static com.onesignal.OneSignalPackagePrivateHelper.createInternalPayloadBundle; + @Config(packageName = "com.onesignal.example", constants = BuildConfig.class, shadows = { ShadowRoboNotificationManager.class, ShadowOneSignalRestClient.class, ShadowBadgeCountUpdater.class }, @@ -129,23 +131,33 @@ private Intent createOpenIntent(Bundle bundle) { public void shouldSetTitleCorrectly() throws Exception { // Should use app's Title by default Bundle bundle = getBaseNotifBundle(); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); Assert.assertEquals("UnitTestApp", ShadowRoboNotificationManager.lastNotif.getContentTitle()); Assert.assertEquals(1, ShadowBadgeCountUpdater.lastCount); // Should allow title from GCM payload. bundle = getBaseNotifBundle("UUID2"); bundle.putString("title", "title123"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); Assert.assertEquals("title123", ShadowRoboNotificationManager.lastNotif.getContentTitle()); Assert.assertEquals(2, ShadowBadgeCountUpdater.lastCount); } + @Test + public void shouldProcessRestore() throws Exception { + Bundle bundle = createInternalPayloadBundle(getBaseNotifBundle()); + bundle.putInt("android_notif_id", 0); + bundle.putBoolean("restoring", true); + + NotificationBundleProcessor_ProcessFromGCMIntentService_NoWrap(blankActivity, bundle, null); + Assert.assertEquals("UnitTestApp", ShadowRoboNotificationManager.lastNotif.getContentTitle()); + } + @Test public void shouldHandleBasicNotifications() throws Exception { // Make sure the notification got posted and the content is correct. Bundle bundle = getBaseNotifBundle(); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); Assert.assertEquals(notifMessage, ShadowRoboNotificationManager.lastNotif.getContentText()); Assert.assertEquals(1, ShadowBadgeCountUpdater.lastCount); @@ -167,14 +179,14 @@ public void shouldHandleBasicNotifications() throws Exception { int firstNotifId = cursor.getInt(1); // Should not display a duplicate notification, count should still be 1 - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); cursor = readableDb.query(NotificationTable.TABLE_NAME, null, null, null, null, null, null); Assert.assertEquals(1, cursor.getCount()); Assert.assertEquals(0, ShadowBadgeCountUpdater.lastCount); // Display a second notification bundle = getBaseNotifBundle("UUID2"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); cursor = readableDb.query(NotificationTable.TABLE_NAME, new String[] { "android_notification_id" }, "android_notification_id <> " + firstNotifId, null, null, null, null); cursor.moveToFirst(); int secondNotifId = cursor.getInt(0); @@ -186,7 +198,7 @@ public void shouldHandleBasicNotifications() throws Exception { // Should of been added for a total of 2 records now. // First opened should of been cleaned up, 1 week old non opened notification should stay, and one new record. bundle = getBaseNotifBundle("UUID3"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); cursor = readableDb.query(NotificationTable.TABLE_NAME, new String[] { "android_notification_id" }, null, null, null, null, null); Assert.assertEquals(2, cursor.getCount()); Assert.assertEquals(2, ShadowBadgeCountUpdater.lastCount); @@ -208,7 +220,7 @@ public void shouldGenerate2BasicGroupNotifications() throws Exception { // Make sure the notification got posted and the content is correct. Bundle bundle = getBaseNotifBundle(); bundle.putString("grp", "test1"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); Map postedNotifs = ShadowRoboNotificationManager.notifications; Assert.assertEquals(2, postedNotifs.size()); @@ -240,7 +252,7 @@ public void shouldGenerate2BasicGroupNotifications() throws Exception { bundle.putString("alert", "Notif test 2"); bundle.putString("custom", "{\"i\": \"UUID2\"}"); bundle.putString("grp", "test1"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); postedNotifs = ShadowRoboNotificationManager.notifications; Assert.assertEquals(2, postedNotifs.size()); @@ -275,7 +287,7 @@ public void shouldGenerate2BasicGroupNotifications() throws Exception { bundle.putString("alert", "Notif test 3"); bundle.putString("custom", "{\"i\": \"UUID3\"}"); bundle.putString("grp", "test1"); - OneSignalPackagePrivateHelper.NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); + NotificationBundleProcessor_ProcessFromGCMIntentService(blankActivity, bundle, null); postedNotifsIterator = postedNotifs.entrySet().iterator(); postedNotification = postedNotifsIterator.next().getValue(); @@ -336,7 +348,7 @@ public void shouldFireNotificationExtenderService() throws Exception { ServiceController controller = Robolectric.buildService(NotificationExtenderServiceTest.class); NotificationExtenderServiceTest service = controller.attach().create().get(); Intent testIntent = new Intent(RuntimeEnvironment.application, NotificationExtenderServiceTest.class); - testIntent.putExtras(OneSignalPackagePrivateHelper.createInternalPayloadBundle(getBundleWithAllOptionsSet())); + testIntent.putExtras(createInternalPayloadBundle(getBundleWithAllOptionsSet())); controller.withIntent(testIntent).startCommand(0, 0); OSNotificationPayload notification = service.notification; @@ -372,7 +384,7 @@ public void shouldFireNotificationExtenderService() throws Exception { // Test a basic notification without anything special. testIntent = new Intent(RuntimeEnvironment.application, NotificationExtenderServiceTest.class); - testIntent.putExtras(OneSignalPackagePrivateHelper.createInternalPayloadBundle(getBaseNotifBundle())); + testIntent.putExtras(createInternalPayloadBundle(getBaseNotifBundle())); controller.withIntent(testIntent).startCommand(0, 0); Assert.assertFalse(ShadowOneSignal.messages.contains("Error assigning")); @@ -380,7 +392,7 @@ public void shouldFireNotificationExtenderService() throws Exception { // Test that a notification is still displayed if the developer's code in onNotificationProcessing throws an Exception. NotificationExtenderServiceTest.throwInAppCode = true; testIntent = new Intent(RuntimeEnvironment.application, NotificationExtenderServiceTest.class); - testIntent.putExtras(OneSignalPackagePrivateHelper.createInternalPayloadBundle(getBaseNotifBundle("NewUUID1"))); + testIntent.putExtras(createInternalPayloadBundle(getBaseNotifBundle("NewUUID1"))); controller.withIntent(testIntent).startCommand(0, 0); Assert.assertTrue(ShadowOneSignal.messages.contains("onNotificationProcessing throw an exception")); diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/NotificationBundleProcessor.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/NotificationBundleProcessor.java index ed2cb0dd5b..b9cf081d99 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/NotificationBundleProcessor.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/NotificationBundleProcessor.java @@ -53,8 +53,11 @@ static void ProcessFromGCMIntentService(Context context, Bundle bundle, Notifica if (!restoring && OneSignal.notValidOrDuplicated(context, jsonPayload)) return; - if (bundle.containsKey("android_notif_id")) + if (bundle.containsKey("android_notif_id")) { + if (overrideSettings == null) + overrideSettings = new NotificationExtenderService.OverrideSettings(); overrideSettings.androidNotificationId = bundle.getInt("android_notif_id"); + } Process(context, restoring, jsonPayload, overrideSettings); } catch (JSONException e) { diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java index 9f1f1d77fa..12810d905d 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java @@ -160,7 +160,7 @@ public void init() { private static TrackGooglePurchase trackGooglePurchase; private static TrackAmazonPurchase trackAmazonPurchase; - public static final String VERSION = "020500"; + public static final String VERSION = "020501"; private static AdvertisingIdentifierProvider mainAdIdProvider = new AdvertisingIdProviderGPS();