Add featureflag:load_dds_on_create

If this feature is enabled, Load default data subid onCreate
If this feature is disabled, sometimes dds change events may be
missed and remain at -1.

Bug: 310591561
Bug: 297319589
Test: manual bootup and verify
Change-Id: Ie27f0dfef48d1763c04cac98c60a8d5b31fdc1ef
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 4773a83..f6c56c9 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -240,6 +240,8 @@
     // fine or coarse location since we only use ServiceState for
     private PhoneAppCallback[] mTelephonyCallbacks;
 
+    private FeatureFlags mFeatureFlags;
+
     private class PhoneAppCallback extends TelephonyCallback implements
             TelephonyCallback.ServiceStateListener {
         private final int mSubId;
@@ -480,8 +482,8 @@
                     getResources().getBoolean(R.bool.config_enable_aosp_domain_selection));
 
             // Initialize the telephony framework
-            FeatureFlags featureFlags = new FeatureFlagsImpl();
-            PhoneFactory.makeDefaultPhones(this, featureFlags);
+            mFeatureFlags = new FeatureFlagsImpl();
+            PhoneFactory.makeDefaultPhones(this, mFeatureFlags);
 
             // Initialize the DomainSelectionResolver after creating the Phone instance
             // to check the Radio HAL version.
@@ -539,7 +541,7 @@
 
             // Create the SatelliteController singleton, which acts as a backend service for
             // {@link android.telephony.satellite.SatelliteManager}.
-            SatelliteController.make(this, featureFlags);
+            SatelliteController.make(this, mFeatureFlags);
 
             // Create an instance of CdmaPhoneCallState and initialize it to IDLE
             cdmaPhoneCallState = new CdmaPhoneCallState();
@@ -554,7 +556,7 @@
 
             mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
 
-            phoneMgr = PhoneInterfaceManager.init(this, featureFlags);
+            phoneMgr = PhoneInterfaceManager.init(this, mFeatureFlags);
 
             imsRcsController = ImsRcsController.init(this);
 
@@ -599,12 +601,16 @@
             intentFilter.addAction(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
             intentFilter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
             registerReceiver(mReceiver, intentFilter);
-            int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
-            if (SubscriptionManager.isValidSubscriptionId(defaultDataSubId)) {
-                if (VDBG) Log.v(LOG_TAG, "Loaded initial default data sub: " + defaultDataSubId);
-                mDefaultDataSubId = defaultDataSubId;
-                registerSettingsObserver();
-                updateDataRoamingStatus(ROAMING_NOTIFICATION_REASON_DEFAULT_DATA_SUBS_CHANGED);
+            if (mFeatureFlags.loadDdsOnCreate()) {
+                int defaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+                if (SubscriptionManager.isValidSubscriptionId(defaultDataSubId)) {
+                    if (VDBG) {
+                        Log.v(LOG_TAG, "Loaded initial default data sub: " + defaultDataSubId);
+                    }
+                    mDefaultDataSubId = defaultDataSubId;
+                    registerSettingsObserver();
+                    updateDataRoamingStatus(ROAMING_NOTIFICATION_REASON_DEFAULT_DATA_SUBS_CHANGED);
+                }
             }
 
             PhoneConfigurationManager.registerForMultiSimConfigChange(
@@ -1179,6 +1185,10 @@
         IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, "  ");
         pw.println("------- PhoneGlobals -------");
         pw.increaseIndent();
+        pw.println("FeatureFlags:");
+        pw.increaseIndent();
+        pw.println("loadDdsOnCreate=" + mFeatureFlags.loadDdsOnCreate());
+        pw.decreaseIndent();
         pw.println("mCurrentRoamingNotification=" + mCurrentRoamingNotification);
         pw.println("mDefaultDataSubId=" + mDefaultDataSubId);
         pw.println("isSmsCapable=" + TelephonyManager.from(this).isSmsCapable());