Use cached preferred network type for 5G icon

Test: atest NetworkTypeControllerTest
Bug: 155496097
Change-Id: I5d1e33981e25a3c8e0a644baf4bbb7a6c1e805ac
diff --git a/src/java/com/android/internal/telephony/NetworkTypeController.java b/src/java/com/android/internal/telephony/NetworkTypeController.java
index 865a014..a8af5c7 100644
--- a/src/java/com/android/internal/telephony/NetworkTypeController.java
+++ b/src/java/com/android/internal/telephony/NetworkTypeController.java
@@ -351,6 +351,11 @@
     }
 
     private @Annotation.OverrideNetworkType int getNrDisplayType() {
+        // Don't show 5G icon if preferred network type does not include 5G
+        if ((mPhone.getCachedPreferredNetworkType() & TelephonyManager.NETWORK_TYPE_BITMASK_NR)
+                == 0) {
+            return TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE;
+        }
         // Icon display keys in order of priority
         List<String> keys = new ArrayList<>();
         // TODO: Update for NR SA
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index af72beb..ae3ed5b 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -2200,7 +2200,7 @@
     }
 
     /**
-     *  Query the preferred network type setting
+     * Query the preferred network type setting
      *
      * @param response is callback message to report one of  NT_*_TYPE
      */
@@ -2209,6 +2209,17 @@
     }
 
     /**
+     * Get the cached value of the preferred network type setting
+     */
+    public int getCachedPreferredNetworkType() {
+        if (mCi != null && mCi instanceof BaseCommands) {
+            return ((BaseCommands) mCi).mPreferredNetworkType;
+        } else {
+            return RILConstants.PREFERRED_NETWORK_MODE;
+        }
+    }
+
+    /**
      * Gets the default SMSC address.
      *
      * @param result Callback message contains the SMSC address.
diff --git a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
index ebde2af..5ee055f 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java
@@ -88,6 +88,8 @@
         broadcastCarrierConfigs();
 
         replaceInstance(Handler.class, "mLooper", mDisplayInfoController, Looper.myLooper());
+        doReturn((int) TelephonyManager.NETWORK_TYPE_BITMASK_NR).when(mPhone)
+                .getCachedPreferredNetworkType();
         mNetworkTypeController = new NetworkTypeController(mPhone, mDisplayInfoController);
     }