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

Commit 046419a9 authored by Malcolm Chen's avatar Malcolm Chen Committed by Xiangyu/Malcolm Chen
Browse files

Revert switchBar if enable / disable subscription fails.

Bug: 123321718
Test: build manual test
Change-Id: Ia7e8c762d91f81b67e0d0b11d36dfa78ec1e2d18
parent 9e3b3d77
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -80,8 +81,9 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
                R.string.mobile_network_use_sim_off);

        mSwitchBar.addOnSwitchChangeListener((switchView, isChecked) -> {
            if (mSubscriptionManager.isSubscriptionEnabled(mSubId) != isChecked) {
                mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked);
            if (mSubscriptionManager.isSubscriptionEnabled(mSubId) != isChecked
                    && (!mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked))) {
                mSwitchBar.setChecked(!isChecked);
            }
        });
        update();
+16 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.network.telephony;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -71,6 +72,8 @@ public class MobileNetworkSwitchControllerTest {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
        when(mSubscriptionManager.setSubscriptionEnabled(eq(mSubId), anyBoolean()))
                .thenReturn(true);

        mLifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(mLifecycleOwner);
@@ -128,6 +131,19 @@ public class MobileNetworkSwitchControllerTest {
        verify(mSubscriptionManager).setSubscriptionEnabled(eq(mSubId), eq(false));
    }

    @Test
    public void switchChangeListener_fromEnabledToDisabled_setSubscriptionEnabledFailed() {
        when(mSubscriptionManager.setSubscriptionEnabled(eq(mSubId), anyBoolean()))
                .thenReturn(false);
        when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(true);
        mController.displayPreference(mScreen);
        assertThat(mSwitchBar.isShowing()).isTrue();
        assertThat(mSwitchBar.isChecked()).isTrue();
        mSwitchBar.setChecked(false);
        verify(mSubscriptionManager).setSubscriptionEnabled(eq(mSubId), eq(false));
        assertThat(mSwitchBar.isChecked()).isTrue();
    }

    @Test
    public void switchChangeListener_fromDisabledToEnabled_setSubscriptionEnabledCalledCorrectly() {
        when(mSubscriptionManager.isSubscriptionEnabled(mSubId)).thenReturn(false);