Check if notification is valid before it finally vibrates because it can be canceled as soon as enqeued
Test: Build and run StatusBarTest/_NotifyBuilder Test: Set notification sound and vibration Test: Make notification with + button, and cancel it with - button quickly TEst: Check notification not vibrating Change-Id: Ia21f45c165f863ed4143da3707b492c89e58387c Signed-off-by: Seungho Lee <shiny.lee@samsung.com>
This commit is contained in:
committed by
Julia Reynolds
parent
55102a8ebd
commit
de93388430
@@ -5457,8 +5457,17 @@ public class NotificationManagerService extends SystemService {
|
||||
try {
|
||||
Thread.sleep(waitMs);
|
||||
} catch (InterruptedException e) { }
|
||||
mVibrator.vibrate(record.sbn.getUid(), record.sbn.getPackageName(),
|
||||
effect, "Notification (delayed)", record.getAudioAttributes());
|
||||
|
||||
// Notifications might be canceled before it actually vibrates due to waitMs,
|
||||
// so need to check the notification still valide for vibrate.
|
||||
synchronized (mNotificationLock) {
|
||||
if (mNotificationsByKey.get(record.getKey()) != null) {
|
||||
mVibrator.vibrate(record.sbn.getUid(), record.sbn.getOpPkg(),
|
||||
effect, "Notification (delayed)", record.getAudioAttributes());
|
||||
} else {
|
||||
Slog.e(TAG, "No vibration for canceled notification : " + record.getKey());
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
} else {
|
||||
mVibrator.vibrate(record.sbn.getUid(), record.sbn.getPackageName(),
|
||||
|
||||
@@ -1014,6 +1014,22 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase {
|
||||
assertEquals(-1, s.getLastAudiblyAlertedMs());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCanceledNoisyNeverVibrate() throws Exception {
|
||||
NotificationRecord r = getBuzzyBeepyNotification();
|
||||
|
||||
final int waitMs = mAudioManager.getFocusRampTimeMs(
|
||||
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK,
|
||||
r.getAudioAttributes());
|
||||
|
||||
mService.buzzBeepBlinkLocked(r);
|
||||
mService.clearNotifications();
|
||||
|
||||
verifyNeverVibrate();
|
||||
Thread.sleep(waitMs);
|
||||
verifyNeverVibrate();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyUriSoundTreatedAsNoSound() throws Exception {
|
||||
NotificationChannel channel = new NotificationChannel("test", "test", IMPORTANCE_HIGH);
|
||||
|
||||
Reference in New Issue
Block a user