overrideConfig should use existing notification flow for CCC

When CarrierConfigManager#overrideConfig was called, we were calling
the CCC broadcast directly, instead of using the existing
pattern of calling notifySubscriptionInfoUpdater. This may become
an issue if future CTS/GTS tests depend on this happening.

Also, only allow the SHELL UID to call overrideConfig, as
it should only be used for testing.

Bug: 130372397
Test: Manual
Merged-In: Ie2cccbab3e186091515bcdaf683d6925d2cbae37
Change-Id: Ie2cccbab3e186091515bcdaf683d6925d2cbae37
(cherry picked from commit 97ce72822a2dd508cb2d59b5458ee367ddbfea29)
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index af54f1f..cf7bafd 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -924,8 +924,12 @@
 
     @Override
     public void overrideConfig(int subscriptionId, PersistableBundle overrides) {
+        // SHELL UID already has MODIFY_PHONE_STATE implicitly so we do not have to check it, but
+        // the API signature explicitly declares that the method caller have MODIFY_PHONE_STATE, so
+        // calling this as well to be safe.
         mContext.enforceCallingOrSelfPermission(
                 android.Manifest.permission.MODIFY_PHONE_STATE, null);
+        TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(), "overrideConfig");
         int phoneId = SubscriptionManager.getPhoneId(subscriptionId);
         if (!SubscriptionManager.isValidPhoneId(phoneId)) {
             log("Ignore invalid phoneId: " + phoneId + " for subId: " + subscriptionId);
@@ -942,7 +946,8 @@
         } else {
             mOverrideConfigs[phoneId].putAll(overrides);
         }
-        broadcastConfigChangedIntent(phoneId);
+
+        notifySubscriptionInfoUpdater(phoneId);
     }
 
     @Override