From af25fbdb75bdfddfad7fa8b906736bc2d28cb6c0 Mon Sep 17 00:00:00 2001 From: Will Brockman Date: Thu, 26 Mar 2020 15:49:47 -0400 Subject: Mock TelephonyManager in NotificationManagerService tests. This prevents NMSTest failure due to too many TelephonyService listeners. (Because NMS never shuts down in normal use, it doesn't unregister its listeners.) Bug: 152241061 Test: atest NotificationManagerServiceTest RoleObserverTest BuzzBeepBlinkTest Change-Id: Ia5988a194aff2e5a83cf15fcd422c063a3ca14f1 (cherry picked from commit 0580d1994635030b013fe2d5fb924e40512ae5dd) --- .../notification/NotificationManagerService.java | 27 +++++++++++----------- .../NotificationManagerServiceTest.java | 4 +++- .../server/notification/RoleObserverTest.java | 3 ++- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 87061e1d488c..8c889aadf63a 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -1868,7 +1868,8 @@ public class NotificationManagerService extends SystemService { ActivityTaskManagerInternal atm, UsageStatsManagerInternal appUsageStats, DevicePolicyManagerInternal dpm, IUriGrantsManager ugm, UriGrantsManagerInternal ugmInternal, AppOpsManager appOps, UserManager userManager, - NotificationHistoryManager historyManager, StatsManager statsManager) { + NotificationHistoryManager historyManager, StatsManager statsManager, + TelephonyManager telephonyManager) { mHandler = handler; Resources resources = getContext().getResources(); mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(), @@ -2011,7 +2012,15 @@ public class NotificationManagerService extends SystemService { mInterruptionFilter = mZenModeHelper.getZenModeListenerInterruptionFilter(); mUserProfiles.updateCache(getContext()); - listenForCallState(); + + telephonyManager.listen(new PhoneStateListener() { + @Override + public void onCallStateChanged(int state, String incomingNumber) { + if (mCallState == state) return; + if (DBG) Slog.d(TAG, "Call state changed: " + callStateToString(state)); + mCallState = state; + } + }, PhoneStateListener.LISTEN_CALL_STATE); mSettingsObserver = new SettingsObserver(mHandler); @@ -2081,7 +2090,8 @@ public class NotificationManagerService extends SystemService { getContext().getSystemService(UserManager.class), new NotificationHistoryManager(getContext(), handler), mStatsManager = (StatsManager) getContext().getSystemService( - Context.STATS_MANAGER)); + Context.STATS_MANAGER), + getContext().getSystemService(TelephonyManager.class)); // register for various Intents IntentFilter filter = new IntentFilter(); @@ -8355,17 +8365,6 @@ public class NotificationManagerService extends SystemService { } } - private void listenForCallState() { - getContext().getSystemService(TelephonyManager.class).listen(new PhoneStateListener() { - @Override - public void onCallStateChanged(int state, String incomingNumber) { - if (mCallState == state) return; - if (DBG) Slog.d(TAG, "Call state changed: " + callStateToString(state)); - mCallState = state; - } - }, PhoneStateListener.LISTEN_CALL_STATE); - } - /** * Generates a NotificationRankingUpdate from 'sbns', considering only * notifications visible to the given listener. diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index d2417f9d10c5..65a7c876e5d5 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -131,6 +131,7 @@ import android.service.notification.NotificationListenerService; import android.service.notification.NotificationStats; import android.service.notification.StatusBarNotification; import android.service.notification.ZenPolicy; +import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableContext; @@ -457,7 +458,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, mGroupHelper, mAm, mAtm, mAppUsageStats, mock(DevicePolicyManagerInternal.class), mUgm, mUgmInternal, - mAppOpsManager, mUm, mHistoryManager, mStatsManager); + mAppOpsManager, mUm, mHistoryManager, mStatsManager, + mock(TelephonyManager.class)); mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY); mService.setAudioManager(mAudioManager); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java index 19ff683a46a1..3281c3f4cfb9 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java @@ -47,6 +47,7 @@ import android.content.pm.UserInfo; import android.os.Looper; import android.os.UserHandle; import android.os.UserManager; +import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableContext; @@ -153,7 +154,7 @@ public class RoleObserverTest extends UiServiceTestCase { mock(DevicePolicyManagerInternal.class), mock(IUriGrantsManager.class), mock(UriGrantsManagerInternal.class), mock(AppOpsManager.class), mUm, mock(NotificationHistoryManager.class), - mock(StatsManager.class)); + mock(StatsManager.class), mock(TelephonyManager.class)); } catch (SecurityException e) { if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { throw e; -- cgit v1.2.3-59-g8ed1b