From 806c9d5214749ea3585f57668788c0172a650f81 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Wed, 25 Mar 2020 10:19:40 +0800 Subject: [PATCH] [Settings] Code refactor on MobileNetworkActivity Apply the behavior of ProxySubscriptionManager into MobileNetworkActivity. Bug: 149190278 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=MobileNetworkActivityTest Change-Id: I2d4b12dead7a9ea68cc8e335cd37f22226fe295f --- .../telephony/MobileNetworkActivity.java | 35 +++++++++++++------ .../telephony/MobileNetworkActivityTest.java | 9 ++++- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java index 935b13ebf9c..39c8dacc8d8 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java +++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java @@ -103,7 +103,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity actionBar.setDisplayHomeAsUpEnabled(true); } - registerActiveSubscriptionsListener(); + getProxySubscriptionManager().setLifecycle(getLifecycle()); final Intent startIntent = getIntent(); validate(startIntent); @@ -116,13 +116,23 @@ public class MobileNetworkActivity extends SettingsBaseActivity final SubscriptionInfo subscription = getSubscription(); updateTitleAndNavigation(subscription); maybeShowContactDiscoveryDialog(mCurSubscriptionId); + + // Since onChanged() will take place immediately when addActiveSubscriptionsListener(), + // perform registration after mCurSubscriptionId been configured. + registerActiveSubscriptionsListener(); + } + + @VisibleForTesting + ProxySubscriptionManager getProxySubscriptionManager() { + if (mProxySubscriptionMgr == null) { + mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this); + } + return mProxySubscriptionMgr; } @VisibleForTesting void registerActiveSubscriptionsListener() { - mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this); - mProxySubscriptionMgr.setLifecycle(getLifecycle()); - mProxySubscriptionMgr.addActiveSubscriptionsListener(this); + getProxySubscriptionManager().addActiveSubscriptionsListener(this); } /** @@ -145,7 +155,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity @Override protected void onStart() { - mProxySubscriptionMgr.setLifecycle(getLifecycle()); + getProxySubscriptionManager().setLifecycle(getLifecycle()); super.onStart(); // updateSubscriptions doesn't need to be called, onChanged will always be called after we // register a listener. @@ -201,19 +211,22 @@ public class MobileNetworkActivity extends SettingsBaseActivity @VisibleForTesting SubscriptionInfo getSubscription() { if (mCurSubscriptionId != SUB_ID_NULL) { - final SubscriptionInfo subInfo = SubscriptionUtil.getAvailableSubscription( - this, mProxySubscriptionMgr, mCurSubscriptionId); - if (subInfo != null) { - return subInfo; - } + return getSubscriptionForSubId(mCurSubscriptionId); } - final List subInfos = mProxySubscriptionMgr.getActiveSubscriptionsInfo(); + final List subInfos = getProxySubscriptionManager() + .getActiveSubscriptionsInfo(); if (CollectionUtils.isEmpty(subInfos)) { return null; } return subInfos.get(0); } + @VisibleForTesting + SubscriptionInfo getSubscriptionForSubId(int subId) { + return SubscriptionUtil.getAvailableSubscription(this, + getProxySubscriptionManager(), subId); + } + @VisibleForTesting void switchFragment(SubscriptionInfo subInfo) { final FragmentManager fragmentManager = getSupportFragmentManager(); diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java index 2f9bf95d0b5..c69f2edf6bb 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java @@ -111,9 +111,16 @@ public class MobileNetworkActivityTest { private SubscriptionInfo mSubscriptionInFragment; + @Override + ProxySubscriptionManager getProxySubscriptionManager() { + if (mProxySubscriptionMgr == null) { + mProxySubscriptionMgr = mock(ProxySubscriptionManager.class); + } + return mProxySubscriptionMgr; + } + @Override void registerActiveSubscriptionsListener() { - mProxySubscriptionMgr = mock(ProxySubscriptionManager.class); onChanged(); }