Merge changes from topic "presubmit-am-3026cc3ac2ee43e8aae3ff78e79cf010"

* changes:
  [automerged blank] Import translations. DO NOT MERGE ANYWHERE 2p: 3d1da30897
  Import translations. DO NOT MERGE ANYWHERE
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dda89ee..1ee3882 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12517,9 +12517,9 @@
     <!-- Provider Model: Name for call settings category [CHAR LIMIT=NONE] -->
     <string name="calls_and_sms_category">Wi\u2011Fi Calling</string>
     <!-- Provider Model: Summary for calling preference -->
-    <string name="calls_sms_wfc_summary">Make and receive calls over non\u2011carrier networks like Wi\u2011Fi</string>
+    <string name="calls_sms_wfc_summary">Make and receive calls over Wi\u2011Fi</string>
     <!-- Provider Model: Label for footnote on calling preference -->
-    <string name="calls_sms_footnote">Wi\u2011Fi calling allows you to make and receive calls over non\u2011carrier networks such as some Wi\u2011Fi networks.</string>
+    <string name="calls_sms_footnote">With Wi\u2011Fi calling, calls are made and received over non-carrier Wi\u2011Fi networks.</string>
     <!-- Provider Model: Calls preference title -->
     <string name="calls_preference_title">Calls</string>
     <!-- Provider Model: SMS preference title -->
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index ae9b2d8..ebf59a2 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -1167,7 +1167,7 @@
                     getContext(), mRecoveryThread.getThreadHandler());
         }
         if (mConnectivitySubsystemsRecoveryManager.isRecoveryAvailable()) {
-            mConnectivitySubsystemsRecoveryManager.triggerSubsystemRestart(TAG, this);
+            mConnectivitySubsystemsRecoveryManager.triggerSubsystemRestart(null /* reason */, this);
         }
     }
 
diff --git a/src/com/android/settings/network/telephony/NetworkProviderWorker.java b/src/com/android/settings/network/telephony/NetworkProviderWorker.java
index e2e0264..50c56cf 100644
--- a/src/com/android/settings/network/telephony/NetworkProviderWorker.java
+++ b/src/com/android/settings/network/telephony/NetworkProviderWorker.java
@@ -43,8 +43,6 @@
 import com.android.settingslib.mobile.MobileMappings.Config;
 
 import java.util.Collections;
-import java.util.concurrent.Executor;
-
 
 /**
  * BackgroundWorker for Provider Model slice.
@@ -63,6 +61,7 @@
     private DataConnectivityListener mConnectivityListener;
     private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     private final Context mContext;
+    final Handler mHandler;
     @VisibleForTesting
     final PhoneStateListener mPhoneStateListener;
     private TelephonyManager mTelephonyManager;
@@ -76,15 +75,15 @@
     public NetworkProviderWorker(Context context, Uri uri) {
         super(context, uri);
         // Mobile data worker
-        final Handler handler = new Handler(Looper.getMainLooper());
-        mMobileDataObserver = new DataContentObserver(handler, this);
+        mHandler = new Handler(Looper.getMainLooper());
+        mMobileDataObserver = new DataContentObserver(mHandler, this);
 
         mContext = context;
         mDefaultDataSubid = getDefaultDataSubscriptionId();
 
         mTelephonyManager = mContext.getSystemService(
                 TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid);
-        mPhoneStateListener = new NetworkProviderPhoneStateListener(handler::post);
+        mPhoneStateListener = new NetworkProviderPhoneStateListener();
         mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
         mDataEnabledListener = new MobileDataEnabledListener(context, this);
         mConnectivityListener = new DataConnectivityListener(context, this);
@@ -102,9 +101,7 @@
         mDataEnabledListener.start(mDefaultDataSubid);
         mConnectivityListener.start();
         mSignalStrengthListener.resume();
-        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
-                | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
-
+        mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener);
         super.onSlicePinned();
     }
 
@@ -115,7 +112,7 @@
         mDataEnabledListener.stop();
         mConnectivityListener.stop();
         mSignalStrengthListener.pause();
-        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+        mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener);
         super.onSliceUnpinned();
     }
 
@@ -145,13 +142,12 @@
             return;
         }
         if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) {
-            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+            mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener);
             mMobileDataObserver.unregister(mContext);
 
             mSignalStrengthListener.updateSubscriptionIds(Collections.singleton(defaultDataSubId));
             mTelephonyManager = mTelephonyManager.createForSubscriptionId(defaultDataSubId);
-            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
-                    | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
+            mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener);
             mMobileDataObserver.register(mContext, mDefaultDataSubid);
             mConfig = getConfig(mContext);
         } else {
@@ -221,11 +217,10 @@
         }
     }
 
-    class NetworkProviderPhoneStateListener extends PhoneStateListener {
-        NetworkProviderPhoneStateListener(Executor executor) {
-            super(executor);
-        }
-
+    class NetworkProviderPhoneStateListener extends PhoneStateListener implements
+            PhoneStateListener.DataConnectionStateChangedListener,
+            PhoneStateListener.DisplayInfoChangedListener,
+            PhoneStateListener.ServiceStateChangedListener {
         @Override
         public void onServiceStateChanged(ServiceState state) {
             Log.d(TAG, "onServiceStateChanged voiceState=" + state.getState()
@@ -239,6 +234,13 @@
             mTelephonyDisplayInfo = telephonyDisplayInfo;
             updateSlice();
         }
+
+        @Override
+        public void onDataConnectionStateChanged(int state, int networkType) {
+            Log.d(TAG,
+                    "onDataConnectionStateChanged: networkType=" + networkType + " state=" + state);
+            updateSlice();
+        }
     }
 
     @VisibleForTesting
diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java
index 1905e44..2ce9a51 100644
--- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWorkerTest.java
@@ -229,6 +229,18 @@
     }
 
     @Test
+    @UiThreadTest
+    public void onDataConnectionStateChanged_notifyPhoneStateListener_callUpdateSlice() {
+        mMockNetworkProviderWorker.onSlicePinned();
+        mMockNetworkProviderWorker.receiveNotification(false);
+
+        mMockNetworkProviderWorker.mPhoneStateListener.onDataConnectionStateChanged(
+                TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_LTE);
+
+        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
+    }
+
+    @Test
     public void onInternetTypeChanged_connectedFromWifiToEthernet_callUpdateSlice() {
         mMockNetworkProviderWorker.receiveNotification(false);
         mMockNetworkProviderWorker.onInternetTypeChanged(INTERNET_WIFI);