From e01df5902777ce3cb94b05dda1ecfe52a0da1010 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Fri, 15 Nov 2019 14:43:29 +0800 Subject: [PATCH] [Settings] Refactor PhoneStateListener Remove Looper and update of mSubId Bug: 144542981 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest make RunSettingsRoboTests -j ROBOTEST_FILTER=VideoCallingPreferenceControllerTest make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingPreferenceControllerTest Merged-In: Ie6ae5b5914322644f2655e585b03a6b685bbc84a Change-Id: I5306b3a80220c02d2de1b25f20e8ef7f845e9a09 --- .../VideoCallingPreferenceController.java | 21 ++++++++++--------- ...Enhanced4gLtePreferenceControllerTest.java | 2 +- .../WifiCallingPreferenceControllerTest.java | 6 +----- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java index c70ade6266f..9ff901b86be 100644 --- a/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/VideoCallingPreferenceController.java @@ -17,7 +17,6 @@ package com.android.settings.network.telephony; import android.content.Context; -import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; @@ -44,7 +43,6 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC Enhanced4gLtePreferenceController.On4gLteUpdateListener { private Preference mPreference; - private TelephonyManager mTelephonyManager; private CarrierConfigManager mCarrierConfigManager; @VisibleForTesting ImsManager mImsManager; @@ -57,7 +55,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC super(context, key); mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); mDataContentObserver = new MobileDataEnabledListener(context, this); - mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper()); + mPhoneStateListener = new PhoneCallStateListener(); } @Override @@ -76,7 +74,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC @Override public void onStart() { - mPhoneStateListener.register(mSubId); + mPhoneStateListener.register(mContext, mSubId); mDataContentObserver.start(mSubId); } @@ -117,9 +115,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC public VideoCallingPreferenceController init(int subId) { mSubId = subId; - mTelephonyManager = mContext.getSystemService(TelephonyManager.class); if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId); mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); } @@ -156,18 +152,23 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC private class PhoneCallStateListener extends PhoneStateListener { - public PhoneCallStateListener(Looper looper) { - super(looper); + PhoneCallStateListener() { + super(); } + private TelephonyManager mTelephonyManager; + @Override public void onCallStateChanged(int state, String incomingNumber) { mCallState = state; updateState(mPreference); } - public void register(int subId) { - mSubId = subId; + public void register(Context context, int subId) { + mTelephonyManager = context.getSystemService(TelephonyManager.class); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId); + } mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE); } diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java index bea8f679604..58289b94c2f 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java @@ -67,7 +67,7 @@ public class Enhanced4gLtePreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE); + doReturn(mTelephonyManager).when(mContext).getSystemService(TelephonyManager.class); doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class); doReturn(mCarrierConfigManager).when(mContext).getSystemService(CarrierConfigManager.class); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID); diff --git a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java index dbfd3b24766..cefcb15f5c5 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java @@ -76,10 +76,6 @@ public class WifiCallingPreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); - mQueryImsState = new MockWifiCallingQueryImsState(mContext, SUB_ID); - mQueryImsState.setIsEnabledByUser(true); - mQueryImsState.setIsProvisionedOnDevice(true); - mPreference = new Preference(mContext); mController = spy(new WifiCallingPreferenceController(mContext, "wifi_calling") { @Override @@ -89,8 +85,8 @@ public class WifiCallingPreferenceControllerTest { }); mController.mCarrierConfigManager = mCarrierConfigManager; mController.init(SUB_ID); + mController.mImsManager = mImsManager; mController.mCallState = TelephonyManager.CALL_STATE_IDLE; - doReturn(mQueryImsState).when(mController).queryImsState(anyInt()); mPreference.setKey(mController.getPreferenceKey()); when(mController.getTelephonyManager(mContext, SUB_ID)).thenReturn(mTelephonyManager);