From 025d9d2a4704c3711bcb3db2e7c9b4f64f9f649a Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Wed, 28 Mar 2018 16:26:21 -0700 Subject: [PATCH] Fix a NPE when getting ZenMode in RingerMutedCondition. Change-Id: If9a8b6f4a2d5e9b45402240d8e1401cef7dd001c Fixes: 77217038 Test: robotest --- .../conditional/RingerMutedCondition.java | 15 +++++++++++---- .../conditional/RingerMutedConditionTest.java | 3 +-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/dashboard/conditional/RingerMutedCondition.java b/src/com/android/settings/dashboard/conditional/RingerMutedCondition.java index bdd92e2d239..bf5bc3618d4 100644 --- a/src/com/android/settings/dashboard/conditional/RingerMutedCondition.java +++ b/src/com/android/settings/dashboard/conditional/RingerMutedCondition.java @@ -16,6 +16,8 @@ package com.android.settings.dashboard.conditional; +import static android.content.Context.NOTIFICATION_SERVICE; + import android.app.NotificationManager; import android.graphics.drawable.Drawable; import android.media.AudioManager; @@ -30,14 +32,19 @@ public class RingerMutedCondition extends AbnormalRingerConditionBase { RingerMutedCondition(ConditionManager manager) { super(manager); - mNotificationManager = mManager.getContext().getSystemService(NotificationManager.class); + mNotificationManager = + (NotificationManager) mManager.getContext().getSystemService(NOTIFICATION_SERVICE); } @Override public void refreshState() { - int zen = mNotificationManager.getZenMode(); - boolean zenModeEnabled = zen != Settings.Global.ZEN_MODE_OFF; - boolean isSilent = mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; + int zen = Settings.Global.ZEN_MODE_OFF; + if (mNotificationManager != null) { + zen = mNotificationManager.getZenMode(); + } + final boolean zenModeEnabled = zen != Settings.Global.ZEN_MODE_OFF; + final boolean isSilent = + mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; setActive(isSilent && !zenModeEnabled); } diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/RingerMutedConditionTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/RingerMutedConditionTest.java index 13cb1c23408..66ef5a039b3 100644 --- a/tests/robotests/src/com/android/settings/dashboard/conditional/RingerMutedConditionTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/conditional/RingerMutedConditionTest.java @@ -22,7 +22,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.app.NotificationManager; import android.content.Context; import android.media.AudioManager; import android.provider.Settings; @@ -59,7 +58,7 @@ public class RingerMutedConditionTest { mContext = RuntimeEnvironment.application; mAudioManager = Shadow.extract(mContext.getSystemService(Context.AUDIO_SERVICE)); mNotificationManager = Shadow.extract( - mContext.getSystemService(NotificationManager.class)); + mContext.getSystemService(Context.NOTIFICATION_SERVICE)); when(mConditionManager.getContext()).thenReturn(mContext); mCondition = spy(new RingerMutedCondition(mConditionManager)); }