From 62c42a3513efe9013944e5d149785d1b1b695e0d Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 18 Jun 2018 20:47:13 -0700 Subject: [PATCH] Fix disappearing message corner case. We never properly registered the ExpirationListener, meaning we were relying on the wait-notify loop of ExpirationManager to delete things. This normally works, but fails when your phone goes to sleep. So I properly registered the receiver, and then added a failsafe to re-run the ExpirationManager if we're about to render an expired message. Fixes #7906 --- AndroidManifest.xml | 2 ++ src/org/thoughtcrime/securesms/ConversationItem.java | 4 ++++ .../thoughtcrime/securesms/service/ExpirationListener.java | 2 +- .../securesms/service/ExpiringMessageManager.java | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7478ebc6c..68b20722a 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -526,6 +526,8 @@ + + () { @Override diff --git a/src/org/thoughtcrime/securesms/service/ExpirationListener.java b/src/org/thoughtcrime/securesms/service/ExpirationListener.java index 97513bcde..4a83707dd 100644 --- a/src/org/thoughtcrime/securesms/service/ExpirationListener.java +++ b/src/org/thoughtcrime/securesms/service/ExpirationListener.java @@ -21,6 +21,6 @@ public class ExpirationListener extends BroadcastReceiver { AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(pendingIntent); - alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + waitTimeMillis, pendingIntent); + alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + waitTimeMillis, pendingIntent); } } diff --git a/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java b/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java index 2cc4674fe..b43cf0e7d 100644 --- a/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java +++ b/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java @@ -46,7 +46,7 @@ public class ExpiringMessageManager { } } - void checkSchedule() { + public void checkSchedule() { synchronized (expiringMessageReferences) { expiringMessageReferences.notifyAll(); }