Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8dee54e3 authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by Android (Google) Code Review
Browse files

Merge "Fix issue that after reboot we might ask to select default data again." into qt-dev

parents 3d724b63 c7ad9ec5
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -108,6 +108,14 @@ public class MultiSimSettingController extends Handler {
    /** The singleton instance. */
    private static MultiSimSettingController sInstance = null;

    // This will be set true when handling EVENT_ALL_SUBSCRIPTIONS_LOADED. The reason of keeping
    // a local variable instead of calling SubscriptionInfoUpdater#isSubInfoInitialized is, there
    // might be a race condition that we receive EVENT_SUBSCRIPTION_INFO_CHANGED first, then
    // EVENT_ALL_SUBSCRIPTIONS_LOADED. And calling SubscriptionInfoUpdater#isSubInfoInitialized
    // will make us handle EVENT_SUBSCRIPTION_INFO_CHANGED unexpectedly and causing us to believe
    // the SIMs are newly inserted instead of being initialized.
    private boolean mSubInfoInitialized = false;

    /**
     * Return the singleton or create one if not existed.
     */
@@ -250,6 +258,7 @@ public class MultiSimSettingController extends Handler {
     */
    private void onAllSubscriptionsLoaded() {
        if (DBG) log("onAllSubscriptionsLoaded");
        mSubInfoInitialized = true;
        updateDefaults(/*init*/ true);
        disableDataForNonDefaultNonOpportunisticSubscriptions();
    }
@@ -261,7 +270,7 @@ public class MultiSimSettingController extends Handler {
     */
    private void onSubscriptionsChanged() {
        if (DBG) log("onSubscriptionsChanged");
        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;
        updateDefaults(/*init*/ false);
        disableDataForNonDefaultNonOpportunisticSubscriptions();
    }
@@ -345,7 +354,7 @@ public class MultiSimSettingController extends Handler {
    private void updateDefaults(boolean init) {
        if (DBG) log("updateDefaults");

        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;

        List<SubscriptionInfo> activeSubInfos = mSubController
                .getActiveSubscriptionInfoList(mContext.getOpPackageName());
@@ -541,7 +550,7 @@ public class MultiSimSettingController extends Handler {
    }

    private void disableDataForNonDefaultNonOpportunisticSubscriptions() {
        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;

        int defaultDataSub = mSubController.getDefaultDataSubId();

+0 −2
Original line number Diff line number Diff line
@@ -177,14 +177,12 @@ public class MultiSimSettingControllerTest extends TelephonyTest {
        doReturn(infoList).when(mSubControllerMock).getActiveSubscriptionInfoList(anyString());

        // Mark subscription ready as false. The below sub info change should be ignored.
        replaceInstance(SubscriptionInfoUpdater.class, "sIsSubInfoInitialized", null, false);
        mMultiSimSettingControllerUT.notifySubscriptionInfoChanged();
        waitABit();
        verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt());
        verify(mSubControllerMock, never()).setDefaultVoiceSubId(anyInt());
        verify(mSubControllerMock, never()).setDefaultSmsSubId(anyInt());

        replaceInstance(SubscriptionInfoUpdater.class, "sIsSubInfoInitialized", null, true);
        mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded();
        waitABit();