From 61a85eaee70f2651aeab2ad82cc17a44273d2aea Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 17 May 2022 17:51:13 +0800 Subject: [PATCH] [Settings] Select RAT in between SIMs for Internet The internet page RAT need to be selected based on default data SIM. Bug: 230190055 Test: local Change-Id: I87edd7a9ddadf877b9cc0c678e3bba423666125e --- .../SubscriptionsPreferenceController.java | 6 +++++- .../telephony/TelephonyDisplayInfoListener.java | 16 ++++++++++------ .../SubscriptionsPreferenceControllerTest.java | 9 ++++++--- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/network/SubscriptionsPreferenceController.java b/src/com/android/settings/network/SubscriptionsPreferenceController.java index 44ad411c832..7ba16e31f45 100644 --- a/src/com/android/settings/network/SubscriptionsPreferenceController.java +++ b/src/com/android/settings/network/SubscriptionsPreferenceController.java @@ -456,7 +456,11 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl } @Override - public void onTelephonyDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) { + public void onTelephonyDisplayInfoChanged(int subId, + TelephonyDisplayInfo telephonyDisplayInfo) { + if (subId != mSubsPrefCtrlInjector.getDefaultDataSubscriptionId()) { + return; + } mTelephonyDisplayInfo = telephonyDisplayInfo; update(); } diff --git a/src/com/android/settings/network/telephony/TelephonyDisplayInfoListener.java b/src/com/android/settings/network/telephony/TelephonyDisplayInfoListener.java index 334da3c931f..57a012c71b8 100644 --- a/src/com/android/settings/network/telephony/TelephonyDisplayInfoListener.java +++ b/src/com/android/settings/network/telephony/TelephonyDisplayInfoListener.java @@ -37,8 +37,9 @@ public class TelephonyDisplayInfoListener { private TelephonyManager mBaseTelephonyManager; private Callback mCallback; private Map mListeners; + private Map mDisplayInfos; - private TelephonyDisplayInfo mTelephonyDisplayInfo = + private static final TelephonyDisplayInfo mDefaultTelephonyDisplayInfo = new TelephonyDisplayInfo(TelephonyManager.NETWORK_TYPE_UNKNOWN, TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE); /** @@ -48,19 +49,20 @@ public class TelephonyDisplayInfoListener { /** * Used to notify TelephonyDisplayInfo change. */ - void onTelephonyDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo); + void onTelephonyDisplayInfoChanged(int subId, TelephonyDisplayInfo telephonyDisplayInfo); } public TelephonyDisplayInfoListener(Context context, Callback callback) { mBaseTelephonyManager = context.getSystemService(TelephonyManager.class); mCallback = callback; mListeners = new HashMap<>(); + mDisplayInfos = new HashMap<>(); } /** * Get TelephonyDisplayInfo. */ - public TelephonyDisplayInfo getTelephonyDisplayInfo() { - return mTelephonyDisplayInfo; + public TelephonyDisplayInfo getTelephonyDisplayInfo(int subId) { + return mDisplayInfos.get(subId); } /** Resumes listening telephony display info changes to the set of ids from the last call to @@ -85,15 +87,17 @@ public class TelephonyDisplayInfoListener { for (int idToRemove : Sets.difference(currentIds, ids)) { stopListening(idToRemove); mListeners.remove(idToRemove); + mDisplayInfos.remove(idToRemove); } for (int idToAdd : Sets.difference(ids, currentIds)) { PhoneStateListener listener = new PhoneStateListener() { @Override public void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo) { - mTelephonyDisplayInfo = telephonyDisplayInfo; - mCallback.onTelephonyDisplayInfoChanged(telephonyDisplayInfo); + mDisplayInfos.put(idToAdd, telephonyDisplayInfo); + mCallback.onTelephonyDisplayInfoChanged(idToAdd, telephonyDisplayInfo); } }; + mDisplayInfos.put(idToAdd, mDefaultTelephonyDisplayInfo); mListeners.put(idToAdd, listener); startListening(idToAdd); } diff --git a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java index 3bcfcb48fa3..8ebd2b5d390 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java @@ -364,7 +364,8 @@ public class SubscriptionsPreferenceControllerTest { mController.onResume(); mController.displayPreference(mPreferenceScreen); - mController.onTelephonyDisplayInfoChanged(telephonyDisplayInfo); + mController.onTelephonyDisplayInfoChanged(sub.get(0).getSubscriptionId(), + telephonyDisplayInfo); assertThat(mPreferenceCategory.getPreference(0).getSummary()).isEqualTo(expectedSummary); } @@ -388,7 +389,8 @@ public class SubscriptionsPreferenceControllerTest { mController.onResume(); mController.displayPreference(mPreferenceScreen); - mController.onTelephonyDisplayInfoChanged(telephonyDisplayInfo); + mController.onTelephonyDisplayInfoChanged(sub.get(0).getSubscriptionId(), + telephonyDisplayInfo); assertThat(mPreferenceCategory.getPreference(0).getSummary()).isEqualTo(expectedSummary); } @@ -414,7 +416,8 @@ public class SubscriptionsPreferenceControllerTest { mController.onResume(); mController.displayPreference(mPreferenceScreen); - mController.onTelephonyDisplayInfoChanged(telephonyDisplayInfo); + mController.onTelephonyDisplayInfoChanged(sub.get(0).getSubscriptionId(), + telephonyDisplayInfo); assertThat(mPreferenceCategory.getPreference(0).getSummary()).isEqualTo(expectedSummary); }