Merge "Snap for 8580505 from 07eac89a5a12d9f27976b53def464ee9552a6360 to main-cg-testing-release" into main-cg-testing-release
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 68c67a3..1f137b0 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -92,6 +92,12 @@
             <TextView android:id="@+id/data_network" style="@style/info_value" />
         </LinearLayout>
 
+        <!-- Override Network Type -->
+        <LinearLayout style="@style/RadioInfo_entry_layout">
+            <TextView android:text="@string/radio_info_override_network_type_label" style="@style/info_label" />
+            <TextView android:id="@+id/override_network" style="@style/info_value" />
+        </LinearLayout>
+
         <!-- Voice Service Status -->
         <LinearLayout style="@style/RadioInfo_entry_layout">
             <TextView android:text="@string/radio_info_gsm_service_label" style="@style/info_label" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1684e89..25d28de 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2130,6 +2130,8 @@
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_data_network_type_label">Data Network Type:</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
+    <string name="radio_info_override_network_type_label">Override Network Type:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="phone_index_label">Select phone index</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_set_perferred_label">Set Preferred Network Type:</string>
@@ -2152,17 +2154,17 @@
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="oem_radio_info_label">OEM-specific Info/Settings</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_endc_available">EN-DC Available:</string>
+    <string name="radio_info_endc_available">EN-DC Available (NSA):</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_dcnr_restricted">DCNR Restricted:</string>
+    <string name="radio_info_dcnr_restricted">DCNR Restricted (NSA):</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_nr_available">NR Available:</string>
+    <string name="radio_info_nr_available">NR Available (NSA):</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_nr_state">NR State:</string>
+    <string name="radio_info_nr_state">NR State (NSA):</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_nr_frequency">NR Frequency:</string>
     <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
-    <string name="radio_info_network_slicing_config" translatable="false">Network slicing config:</string>
+    <string name="radio_info_network_slicing_config" translatable="false">Network Slicing Config:</string>
 
     <!-- Band Mode Selection -->
     <!-- Band mode screen.  Title of activity. -->
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index ba72539..7b7be8a 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -73,6 +73,7 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.Annotation.ApnType;
+import android.telephony.Annotation.DataActivityType;
 import android.telephony.Annotation.ThermalMitigationResult;
 import android.telephony.CallForwardingInfo;
 import android.telephony.CarrierConfigManager;
@@ -153,7 +154,6 @@
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.CommandsInterface;
-import com.android.internal.telephony.DefaultPhoneNotifier;
 import com.android.internal.telephony.GbaManager;
 import com.android.internal.telephony.GsmCdmaPhone;
 import com.android.internal.telephony.HalVersion;
@@ -3010,17 +3010,17 @@
     }
 
     @Override
-    public int getDataActivity() {
+    public @DataActivityType int getDataActivity() {
         return getDataActivityForSubId(mSubscriptionController.getDefaultDataSubId());
     }
 
     @Override
-    public int getDataActivityForSubId(int subId) {
+    public @DataActivityType int getDataActivityForSubId(int subId) {
         final long identity = Binder.clearCallingIdentity();
         try {
             final Phone phone = getPhone(subId);
             if (phone != null) {
-                return DefaultPhoneNotifier.convertDataActivityState(phone.getDataActivityState());
+                return phone.getDataActivityState();
             } else {
                 return TelephonyManager.DATA_ACTIVITY_NONE;
             }
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 9ec128a..95788fe 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -68,6 +68,7 @@
 import android.telephony.SignalStrength;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyCallback;
+import android.telephony.TelephonyDisplayInfo;
 import android.telephony.TelephonyManager;
 import android.telephony.data.NetworkSlicingConfig;
 import android.text.TextUtils;
@@ -103,7 +104,6 @@
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
 import java.util.concurrent.LinkedBlockingDeque;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -237,6 +237,7 @@
     private TextView mGprsState;
     private TextView mVoiceNetwork;
     private TextView mDataNetwork;
+    private TextView mOverrideNetwork;
     private TextView mDBm;
     private TextView mMwi;
     private TextView mCfi;
@@ -322,7 +323,8 @@
             TelephonyCallback.CallForwardingIndicatorListener,
             TelephonyCallback.CellInfoListener,
             TelephonyCallback.SignalStrengthsListener,
-            TelephonyCallback.ServiceStateListener {
+            TelephonyCallback.ServiceStateListener,
+            TelephonyCallback.DisplayInfoListener {
 
         @Override
         public void onDataConnectionStateChanged(int state, int networkType) {
@@ -376,6 +378,10 @@
             updateNrStats(serviceState);
         }
 
+        @Override
+        public void onDisplayInfoChanged(TelephonyDisplayInfo displayInfo) {
+            updateNetworkType();
+        }
     }
 
     private void updatePhysicalChannelConfiguration(List<PhysicalChannelConfig> configs) {
@@ -488,6 +494,7 @@
         mGprsState = (TextView) findViewById(R.id.gprs);
         mVoiceNetwork = (TextView) findViewById(R.id.voice_network);
         mDataNetwork = (TextView) findViewById(R.id.data_network);
+        mOverrideNetwork = (TextView) findViewById(R.id.override_network);
         mDBm = (TextView) findViewById(R.id.dbm);
         mMwi = (TextView) findViewById(R.id.mwi);
         mCfi = (TextView) findViewById(R.id.cfi);
@@ -512,18 +519,7 @@
         // hide 5G stats on devices that don't support 5G
         if ((mTelephonyManager.getSupportedRadioAccessFamily()
                 & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
-            ((TextView) findViewById(R.id.endc_available_label)).setVisibility(View.GONE);
-            mEndcAvailable.setVisibility(View.GONE);
-            ((TextView) findViewById(R.id.dcnr_restricted_label)).setVisibility(View.GONE);
-            mDcnrRestricted.setVisibility(View.GONE);
-            ((TextView) findViewById(R.id.nr_available_label)).setVisibility(View.GONE);
-            mNrAvailable.setVisibility(View.GONE);
-            ((TextView) findViewById(R.id.nr_state_label)).setVisibility(View.GONE);
-            mNrState.setVisibility(View.GONE);
-            ((TextView) findViewById(R.id.nr_frequency_label)).setVisibility(View.GONE);
-            mNrFrequency.setVisibility(View.GONE);
-            ((TextView) findViewById(R.id.network_slicing_config_label)).setVisibility(View.GONE);
-            mNetworkSlicingConfig.setVisibility(View.GONE);
+            setNrStatsVisibility(View.GONE);
         }
 
         mPreferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
@@ -823,6 +819,7 @@
         mOperatorName.setText("");
         mGprsState.setText("");
         mDataNetwork.setText("");
+        mOverrideNetwork.setText("");
         mVoiceNetwork.setText("");
         mSent.setText("");
         mReceived.setText("");
@@ -845,6 +842,21 @@
                 mTelephonyCallback);
     }
 
+    private void setNrStatsVisibility(int visibility) {
+        ((TextView) findViewById(R.id.endc_available_label)).setVisibility(visibility);
+        mEndcAvailable.setVisibility(visibility);
+        ((TextView) findViewById(R.id.dcnr_restricted_label)).setVisibility(visibility);
+        mDcnrRestricted.setVisibility(visibility);
+        ((TextView) findViewById(R.id.nr_available_label)).setVisibility(visibility);
+        mNrAvailable.setVisibility(visibility);
+        ((TextView) findViewById(R.id.nr_state_label)).setVisibility(visibility);
+        mNrState.setVisibility(visibility);
+        ((TextView) findViewById(R.id.nr_frequency_label)).setVisibility(visibility);
+        mNrFrequency.setVisibility(visibility);
+        ((TextView) findViewById(R.id.network_slicing_config_label)).setVisibility(visibility);
+        mNetworkSlicingConfig.setVisibility(visibility);
+    }
+
     private void updateDnsCheckState() {
         //FIXME: Replace with a TelephonyManager call
         mDnsCheckState.setText(mPhone.isDnsCheckDisabled()
@@ -858,7 +870,6 @@
         mUplinkKbps.setText(String.format("%-5d", ulbw));
     }
 
-
     private void updateSignalStrength(SignalStrength signalStrength) {
         Resources r = getResources();
 
@@ -1146,11 +1157,14 @@
 
     private void updateNetworkType() {
         if (mPhone != null) {
-            ServiceState ss = mPhone.getServiceState();
             mDataNetwork.setText(ServiceState.rilRadioTechnologyToString(
                     mPhone.getServiceState().getRilDataRadioTechnology()));
             mVoiceNetwork.setText(ServiceState.rilRadioTechnologyToString(
                     mPhone.getServiceState().getRilVoiceRadioTechnology()));
+            int overrideNetwork = mPhone.getDisplayInfoController().getTelephonyDisplayInfo()
+                    .getOverrideNetworkType();
+            mOverrideNetwork.setText(
+                    TelephonyDisplayInfo.overrideNetworkTypeToString(overrideNetwork));
         }
     }
 
@@ -1164,31 +1178,25 @@
             ss = mPhone.getServiceState();
         }
         if (ss != null) {
-            boolean isNrSa = ss.getDataNetworkType() == TelephonyManager.NETWORK_TYPE_NR;
             NetworkRegistrationInfo nri = ss.getNetworkRegistrationInfo(
                     NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
             if (nri != null) {
                 DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
                 if (dsri != null) {
-                    mEndcAvailable.setText(isNrSa ? "N/A"
-                            : dsri.isEnDcAvailable ? "True" : "False");
-                    mDcnrRestricted.setText(isNrSa ? "N/A"
-                            : dsri.isDcNrRestricted ? "True" : "False");
-                    mNrAvailable.setText(isNrSa ? "N/A" : dsri.isNrAvailable ? "True" : "False");
+                    mEndcAvailable.setText(String.valueOf(dsri.isEnDcAvailable));
+                    mDcnrRestricted.setText(String.valueOf(dsri.isDcNrRestricted));
+                    mNrAvailable.setText(String.valueOf(dsri.isNrAvailable));
                 }
             }
-            mNrState.setText(isNrSa ? "N/A"
-                    : NetworkRegistrationInfo.nrStateToString(ss.getNrState()));
-            mNrFrequency.setText(isNrSa ? "N/A"
-                    : ServiceState.frequencyRangeToString(ss.getNrFrequencyRange()));
+            mNrState.setText(NetworkRegistrationInfo.nrStateToString(ss.getNrState()));
+            mNrFrequency.setText(ServiceState.frequencyRangeToString(ss.getNrFrequencyRange()));
         }
 
-        Executor simpleExecutor = (r) -> r.run();
         CompletableFuture<NetworkSlicingConfig> resultFuture = new CompletableFuture<>();
-        mTelephonyManager.getNetworkSlicingConfiguration(simpleExecutor, resultFuture::complete);
+        mTelephonyManager.getNetworkSlicingConfiguration(Runnable::run, resultFuture::complete);
         try {
             NetworkSlicingConfig networkSlicingConfig =
-                resultFuture.get(DEFAULT_TIMEOUT_MS, MILLISECONDS);
+                    resultFuture.get(DEFAULT_TIMEOUT_MS, MILLISECONDS);
             mNetworkSlicingConfig.setText(networkSlicingConfig.toString());
         } catch (ExecutionException | InterruptedException | TimeoutException e) {
             Log.e(TAG, "Unable to get slicing config: " + e.toString());