Loading packages/SystemUI/src/com/android/keyguard/CarrierTextController.java +34 −12 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; Loading @@ -40,6 +41,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.settingslib.WirelessUtils; import com.android.systemui.Dependency; import com.android.systemui.keyguard.WakefulnessLifecycle; Loading Loading @@ -70,6 +72,8 @@ public class CarrierTextController { private Context mContext; private CharSequence mSeparator; private WakefulnessLifecycle mWakefulnessLifecycle; @VisibleForTesting protected boolean mDisplayOpportunisticSubscriptionCarrierText; private final WakefulnessLifecycle.Observer mWakefulnessObserver = new WakefulnessLifecycle.Observer() { @Override Loading Loading @@ -247,7 +251,6 @@ public class CarrierTextController { } /** * STOPSHIP(b/130246708) remove when no longer needed for testing purpose. * @param subscriptions */ private void filterMobileSubscriptionInSameGroup(List<SubscriptionInfo> subscriptions) { Loading @@ -274,21 +277,40 @@ public class CarrierTextController { } } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; CharSequence displayText = null; /** * updates if opportunistic sub carrier text should be displayed or not * */ @VisibleForTesting public void updateDisplayOpportunisticSubscriptionCarrierText() { mDisplayOpportunisticSubscriptionCarrierText = SystemProperties .getBoolean(TelephonyProperties .DISPLAY_OPPORTUNISTIC_SUBSCRIPTION_CARRIER_TEXT_PROPERTY_NAME, false); } // STOPSHIP(b/130246708) revert to mKeyguardUpdateMonitor.getSubscriptionInfo(false). SubscriptionManager subscriptionManager = ((SubscriptionManager) mContext.getSystemService( protected List<SubscriptionInfo> getSubscriptionInfo() { List<SubscriptionInfo> subs; if (mDisplayOpportunisticSubscriptionCarrierText) { SubscriptionManager subscriptionManager = ((SubscriptionManager) mContext .getSystemService( Context.TELEPHONY_SUBSCRIPTION_SERVICE)); List<SubscriptionInfo> subs = subscriptionManager.getActiveSubscriptionInfoList(false); subs = subscriptionManager.getActiveSubscriptionInfoList(false); if (subs == null) { subs = new ArrayList<>(); } else { filterMobileSubscriptionInSameGroup(subs); } } else { subs = mKeyguardUpdateMonitor.getSubscriptionInfo(false); } return subs; } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; CharSequence displayText = null; List<SubscriptionInfo> subs = getSubscriptionInfo(); final int numSubs = subs.size(); final int[] subsIds = new int[numSubs]; Loading packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java +41 −1 Original line number Diff line number Diff line Loading @@ -66,9 +66,17 @@ public class CarrierTextControllerTest extends SysuiTestCase { private static final CharSequence SEPARATOR = " \u2014 "; private static final String TEST_CARRIER = "TEST_CARRIER"; private static final String TEST_CARRIER_2 = "TEST_CARRIER_2"; private static final String TEST_GROUP_UUID = "59b5c870-fc4c-47a4-a99e-9db826b48b24"; private static final int TEST_CARRIER_ID = 1; private static final SubscriptionInfo TEST_SUBSCRIPTION = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_DISABLE, null, null, null, null, false, null, ""); DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", false, TEST_GROUP_UUID, TEST_CARRIER_ID, 0); private static final SubscriptionInfo TEST_SUBSCRIPTION_2 = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER_2, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", true, TEST_GROUP_UUID, TEST_CARRIER_ID, 0); private static final SubscriptionInfo TEST_SUBSCRIPTION_ROAMING = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_ENABLE, null, null, null, null, false, null, ""); Loading Loading @@ -369,6 +377,33 @@ public class CarrierTextControllerTest extends SysuiTestCase { captor.getValue().carrierText); } @Test public void testCarrierText_GroupedSubWithOpportunisticCarrierText() { reset(mCarrierTextCallback); List<SubscriptionInfo> list = new ArrayList<>(); list.add(TEST_SUBSCRIPTION); list.add(TEST_SUBSCRIPTION_2); when(mKeyguardUpdateMonitor.getSimState(anyInt())) .thenReturn(IccCardConstants.State.READY); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); mCarrierTextController.updateDisplayOpportunisticSubscriptionCarrierText(); // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the // same answer as KeyguardUpdateMonitor. Remove when this is addressed when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = ArgumentCaptor.forClass( CarrierTextController.CarrierTextCallbackInfo.class); mCarrierTextController.updateCarrierText(); mTestableLooper.processAllMessages(); verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); assertEquals(TEST_CARRIER_2, captor.getValue().carrierText); } public static class TestCarrierTextController extends CarrierTextController { private KeyguardUpdateMonitor mKUM; Loading @@ -383,5 +418,10 @@ public class CarrierTextControllerTest extends SysuiTestCase { super.setListening(callback); mKeyguardUpdateMonitor = mKUM; } @Override public void updateDisplayOpportunisticSubscriptionCarrierText() { mDisplayOpportunisticSubscriptionCarrierText = true; } } } telephony/java/com/android/internal/telephony/TelephonyProperties.java +7 −0 Original line number Diff line number Diff line Loading @@ -224,4 +224,11 @@ public interface TelephonyProperties */ static final String PROPERTY_VIDEOCALL_AUDIO_OUTPUT = "persist.radio.call.audio.output"; /** 'true' if the carrier text from opportunistic subscription should be used to display * on UI. * */ String DISPLAY_OPPORTUNISTIC_SUBSCRIPTION_CARRIER_TEXT_PROPERTY_NAME = "persist.radio.display_opportunistic_carrier"; } Loading
packages/SystemUI/src/com/android/keyguard/CarrierTextController.java +34 −12 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; Loading @@ -40,6 +41,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.settingslib.WirelessUtils; import com.android.systemui.Dependency; import com.android.systemui.keyguard.WakefulnessLifecycle; Loading Loading @@ -70,6 +72,8 @@ public class CarrierTextController { private Context mContext; private CharSequence mSeparator; private WakefulnessLifecycle mWakefulnessLifecycle; @VisibleForTesting protected boolean mDisplayOpportunisticSubscriptionCarrierText; private final WakefulnessLifecycle.Observer mWakefulnessObserver = new WakefulnessLifecycle.Observer() { @Override Loading Loading @@ -247,7 +251,6 @@ public class CarrierTextController { } /** * STOPSHIP(b/130246708) remove when no longer needed for testing purpose. * @param subscriptions */ private void filterMobileSubscriptionInSameGroup(List<SubscriptionInfo> subscriptions) { Loading @@ -274,21 +277,40 @@ public class CarrierTextController { } } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; CharSequence displayText = null; /** * updates if opportunistic sub carrier text should be displayed or not * */ @VisibleForTesting public void updateDisplayOpportunisticSubscriptionCarrierText() { mDisplayOpportunisticSubscriptionCarrierText = SystemProperties .getBoolean(TelephonyProperties .DISPLAY_OPPORTUNISTIC_SUBSCRIPTION_CARRIER_TEXT_PROPERTY_NAME, false); } // STOPSHIP(b/130246708) revert to mKeyguardUpdateMonitor.getSubscriptionInfo(false). SubscriptionManager subscriptionManager = ((SubscriptionManager) mContext.getSystemService( protected List<SubscriptionInfo> getSubscriptionInfo() { List<SubscriptionInfo> subs; if (mDisplayOpportunisticSubscriptionCarrierText) { SubscriptionManager subscriptionManager = ((SubscriptionManager) mContext .getSystemService( Context.TELEPHONY_SUBSCRIPTION_SERVICE)); List<SubscriptionInfo> subs = subscriptionManager.getActiveSubscriptionInfoList(false); subs = subscriptionManager.getActiveSubscriptionInfoList(false); if (subs == null) { subs = new ArrayList<>(); } else { filterMobileSubscriptionInSameGroup(subs); } } else { subs = mKeyguardUpdateMonitor.getSubscriptionInfo(false); } return subs; } protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; CharSequence displayText = null; List<SubscriptionInfo> subs = getSubscriptionInfo(); final int numSubs = subs.size(); final int[] subsIds = new int[numSubs]; Loading
packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java +41 −1 Original line number Diff line number Diff line Loading @@ -66,9 +66,17 @@ public class CarrierTextControllerTest extends SysuiTestCase { private static final CharSequence SEPARATOR = " \u2014 "; private static final String TEST_CARRIER = "TEST_CARRIER"; private static final String TEST_CARRIER_2 = "TEST_CARRIER_2"; private static final String TEST_GROUP_UUID = "59b5c870-fc4c-47a4-a99e-9db826b48b24"; private static final int TEST_CARRIER_ID = 1; private static final SubscriptionInfo TEST_SUBSCRIPTION = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_DISABLE, null, null, null, null, false, null, ""); DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", false, TEST_GROUP_UUID, TEST_CARRIER_ID, 0); private static final SubscriptionInfo TEST_SUBSCRIPTION_2 = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER_2, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", true, TEST_GROUP_UUID, TEST_CARRIER_ID, 0); private static final SubscriptionInfo TEST_SUBSCRIPTION_ROAMING = new SubscriptionInfo(0, "", 0, TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_DEFAULT_SOURCE, 0xFFFFFF, "", DATA_ROAMING_ENABLE, null, null, null, null, false, null, ""); Loading Loading @@ -369,6 +377,33 @@ public class CarrierTextControllerTest extends SysuiTestCase { captor.getValue().carrierText); } @Test public void testCarrierText_GroupedSubWithOpportunisticCarrierText() { reset(mCarrierTextCallback); List<SubscriptionInfo> list = new ArrayList<>(); list.add(TEST_SUBSCRIPTION); list.add(TEST_SUBSCRIPTION_2); when(mKeyguardUpdateMonitor.getSimState(anyInt())) .thenReturn(IccCardConstants.State.READY); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); mCarrierTextController.updateDisplayOpportunisticSubscriptionCarrierText(); // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the // same answer as KeyguardUpdateMonitor. Remove when this is addressed when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = ArgumentCaptor.forClass( CarrierTextController.CarrierTextCallbackInfo.class); mCarrierTextController.updateCarrierText(); mTestableLooper.processAllMessages(); verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); assertEquals(TEST_CARRIER_2, captor.getValue().carrierText); } public static class TestCarrierTextController extends CarrierTextController { private KeyguardUpdateMonitor mKUM; Loading @@ -383,5 +418,10 @@ public class CarrierTextControllerTest extends SysuiTestCase { super.setListening(callback); mKeyguardUpdateMonitor = mKUM; } @Override public void updateDisplayOpportunisticSubscriptionCarrierText() { mDisplayOpportunisticSubscriptionCarrierText = true; } } }
telephony/java/com/android/internal/telephony/TelephonyProperties.java +7 −0 Original line number Diff line number Diff line Loading @@ -224,4 +224,11 @@ public interface TelephonyProperties */ static final String PROPERTY_VIDEOCALL_AUDIO_OUTPUT = "persist.radio.call.audio.output"; /** 'true' if the carrier text from opportunistic subscription should be used to display * on UI. * */ String DISPLAY_OPPORTUNISTIC_SUBSCRIPTION_CARRIER_TEXT_PROPERTY_NAME = "persist.radio.display_opportunistic_carrier"; }