Merge the android-9.0.0_r60 release tag
Android 9.0.0 release 60

* tag 'android-9.0.0_r60':
  Use FLAG_IMMUTABLE for InstallCarrierAppUtils
  Use FLAG_IMMUTABLE for InboundSmsHandler
  Use FLAG_IMMUTABLE for CarrierServiceStateTracker
  Use FLAG_IMMUTABLE for CarrierKeyDownloadManager
  Use FLAG_IMMUTABLE
  Restrict access to the resolution PendingIntent created by EuiccController to EuiccResolutionUiDispatcherActivity
  Added FLAG_IMMUTABLE flag for security purposes

Change-Id: Ia051c1a04c81f8856cac89b1355474c58c834bcf
diff --git a/src/java/com/android/internal/telephony/LocaleTracker.java b/src/java/com/android/internal/telephony/LocaleTracker.java
index 996e288..6218588 100644
--- a/src/java/com/android/internal/telephony/LocaleTracker.java
+++ b/src/java/com/android/internal/telephony/LocaleTracker.java
@@ -408,8 +408,10 @@
             // Set the country code for wifi. This sets allowed wifi channels based on the
             // country of the carrier we see. If we can't see any, reset to 0 so we don't
             // broadcast on forbidden channels.
-            ((WifiManager) mPhone.getContext().getSystemService(Context.WIFI_SERVICE))
-                    .setCountryCode(countryIso);
+            WifiManager wM = (WifiManager)
+                mPhone.getContext().getSystemService(Context.WIFI_SERVICE);
+            if (wM != null)
+                    wM.setCountryCode(countryIso);
         }
     }
 
diff --git a/src/java/com/android/internal/telephony/MccTable.java b/src/java/com/android/internal/telephony/MccTable.java
index a010618..2fadb19 100644
--- a/src/java/com/android/internal/telephony/MccTable.java
+++ b/src/java/com/android/internal/telephony/MccTable.java
@@ -407,7 +407,8 @@
         String country = MccTable.countryCodeForMcc(mcc);
         Slog.d(LOG_TAG, "WIFI_COUNTRY_CODE set to " + country);
         WifiManager wM = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
-        wM.setCountryCode(country);
+        if (wM != null)
+            wM.setCountryCode(country);
     }
 
     static {
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index 0f431ef..559a54d 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -536,7 +536,8 @@
                 // note this is not persisting
                 WifiManager wM = (WifiManager)
                         mContext.getSystemService(Context.WIFI_SERVICE);
-                wM.setCountryCode(country);
+                if (wM != null)
+                    wM.setCountryCode(country);
             }
         }
 
diff --git a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
index afd49fa..c9b7160 100644
--- a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
+++ b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
@@ -136,7 +136,7 @@
     }
 
     private void initializeCarrierApps() {
-        // Initialize carrier apps:
+        // Initialize carrier apps (carrier-privileged and carrier-matching):
         // -Now (on system startup)
         // -Whenever new carrier privilege rules might change (new SIM is loaded)
         // -Whenever we switch to a new user
@@ -150,6 +150,8 @@
                     CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                             mPackageManager, TelephonyManager.getDefault(),
                             mContext.getContentResolver(), mCurrentlyActiveUserId);
+                    CarrierAppUtils.disableSpecialCarrierAppsUntilMatched(mContext,
+                            mPackageManager, TelephonyManager.getDefault(), mCurrentlyActiveUserId);
 
                     if (reply != null) {
                         try {
@@ -166,6 +168,8 @@
         CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                 mPackageManager, TelephonyManager.getDefault(), mContext.getContentResolver(),
                 mCurrentlyActiveUserId);
+        CarrierAppUtils.disableSpecialCarrierAppsUntilMatched(mContext,
+                mPackageManager, TelephonyManager.getDefault(), mCurrentlyActiveUserId);
     }
 
     public void updateInternalIccState(String simStatus, String reason, int slotId) {
@@ -459,6 +463,8 @@
         CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(),
                 mPackageManager, TelephonyManager.getDefault(),
                 mContext.getContentResolver(), mCurrentlyActiveUserId);
+        CarrierAppUtils.disableSpecialCarrierAppsUntilMatched(mContext,
+                mPackageManager, TelephonyManager.getDefault(), mCurrentlyActiveUserId);
 
         broadcastSimStateChanged(loadedSlotId, IccCardConstants.INTENT_VALUE_ICC_LOADED, null);
         broadcastSimCardStateChanged(loadedSlotId, TelephonyManager.SIM_STATE_PRESENT);