[Settings] eSIM transfer: MobileNetworkSummaryController

1. MobileNetworkSummaryController

 - No matter single SIM or multiple SIMs, always launch MobileNetworkListFragment
 - Remove the + and |

APM off: https://screenshot.googleplex.com/7M8qzsXFesy3nDi.png
APM on: https://screenshot.googleplex.com/C4ZnbpgUTPzTijL.png

2. Fix the APM mode

Bug: 244786012
Bug: 261810065
Test: make RunSettingsRoboTests ROBOTEST_FILTER=MobileNetworkSummaryControllerTest
Change-Id: I8e5c9b8a58ef13b6deaea284e9793077b2da58f6
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 981afb3..a4b5faa 100644
--- a/res/xml/network_provider_internet.xml
+++ b/res/xml/network_provider_internet.xml
@@ -42,7 +42,7 @@
         settings:keywords="@string/calls_and_sms"
         settings:useAdminDisabledSummary="true" />
 
-    <com.android.settings.widget.AddPreference
+    <com.android.settingslib.RestrictedPreference
         android:key="mobile_network_list"
         android:title="@string/provider_network_settings_title"
         android:summary="@string/summary_placeholder"
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index 0bb1bb3..0e2ea09 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -37,7 +37,7 @@
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.AddPreference;
+import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.Utils;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -58,7 +58,7 @@
 
     private final MetricsFeatureProvider mMetricsFeatureProvider;
     private UserManager mUserManager;
-    private AddPreference mPreference;
+    private RestrictedPreference mPreference;
 
     private MobileNetworkRepository mMobileNetworkRepository;
     private List<SubscriptionInfoEntity> mSubInfoEntityList;
@@ -89,6 +89,7 @@
         mUserManager = context.getSystemService(UserManager.class);
         mLifecycleOwner = lifecycleOwner;
         mMobileNetworkRepository = MobileNetworkRepository.create(context, this);
+        mIsAirplaneModeOn = mMobileNetworkRepository.isAirplaneModeOn();
         if (lifecycle != null) {
             lifecycle.addObserver(this);
         }
@@ -152,7 +153,6 @@
     private void initPreference() {
         refreshSummary(mPreference);
         mPreference.setOnPreferenceClickListener(null);
-        mPreference.setOnAddClickListener(null);
         mPreference.setFragment(null);
         mPreference.setEnabled(!mIsAirplaneModeOn);
     }
@@ -179,33 +179,7 @@
             return;
         }
 
-        // We have one or more existing subscriptions, so we want the plus button if eSIM is
-        // supported.
-        if (MobileNetworkUtils.showEuiccSettingsDetecting(mContext)) {
-            mPreference.setAddWidgetEnabled(!mIsAirplaneModeOn);
-            mPreference.setOnAddClickListener(p -> {
-                logPreferenceClick(p);
-                startAddSimFlow();
-            });
-        }
-
-        if (mSubInfoEntityList.size() == 1) {
-            mPreference.setOnPreferenceClickListener((Preference pref) -> {
-                logPreferenceClick(pref);
-                SubscriptionInfoEntity info = mSubInfoEntityList.get(0);
-                if (info.isEmbedded || mUiccInfoEntityList.get(0).isActive
-                        || mMobileNetworkInfoEntityList.get(0).showToggleForPhysicalSim) {
-                    MobileNetworkUtils.launchMobileNetworkSettings(mContext, info);
-                    return true;
-                }
-
-                SubscriptionUtil.startToggleSubscriptionDialogActivity(
-                        mContext, Integer.parseInt(info.subId), true);
-                return true;
-            });
-        } else {
-            mPreference.setFragment(MobileNetworkListFragment.class.getCanonicalName());
-        }
+        mPreference.setFragment(MobileNetworkListFragment.class.getCanonicalName());
     }
 
     @Override
@@ -221,8 +195,10 @@
 
     @Override
     public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
-        mIsAirplaneModeOn = airplaneModeEnabled;
-        update();
+        if (mIsAirplaneModeOn != airplaneModeEnabled) {
+            mIsAirplaneModeOn = airplaneModeEnabled;
+            update();
+        }
     }
 
     @Override
@@ -239,14 +215,19 @@
 
     @Override
     public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
-        mUiccInfoEntityList = uiccInfoEntityList;
-        update();
+        if (DataServiceUtils.shouldUpdateEntityList(mUiccInfoEntityList, uiccInfoEntityList)) {
+            mUiccInfoEntityList = uiccInfoEntityList;
+            update();
+        }
     }
 
     @Override
     public void onAllMobileNetworkInfoChanged(
             List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
-        mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList;
-        update();
+        if (DataServiceUtils.shouldUpdateEntityList(mMobileNetworkInfoEntityList,
+                mobileNetworkInfoEntityList)) {
+            mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList;
+            update();
+        }
     }
 }