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

Commit 538fb340 authored by songferngwang's avatar songferngwang
Browse files

Check if ECBMode when activate SIM card

If in ECBMode, start ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS to show a
dialog instead.

This align with the deactivate sim case

Bug: 393298086
Test: atest SubscriptionActivationRepositoryTest
Test: adb shell cmd phone emergency-callback-mode
Flag: EXEMPT bugfix
Change-Id: Id40d087b7d2d3ca99504ec75bac1c5e29c67258d
parent 2d5a231a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ class SubscriptionActivationRepository(
            Log.i(TAG, "Unable to toggle subscription due to unusable subscription ID.")
            return
        }
        if (!active && isEmergencyCallbackMode(subId)) {
        if (isEmergencyCallbackMode(subId)) {
            val intent = Intent(ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS).apply {
                setPackage(Utils.PHONE_PACKAGE_NAME)
            }
+28 −0
Original line number Diff line number Diff line
@@ -17,12 +17,15 @@
package com.android.settings.network.telephony

import android.content.Context
import android.content.Intent
import android.os.UserHandle
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import android.telephony.TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.network.SatelliteRepository
import com.android.settings.network.SimOnboardingActivity
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.flowOf
@@ -33,6 +36,7 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.argThat
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
import org.mockito.kotlin.spy
@@ -107,6 +111,17 @@ class SubscriptionActivationRepositoryTest {
        verify(context, never()).startActivity(any())
    }

    @Test
    fun setActive_turnOnAndIsEmergencyCallbackMode() = runBlocking {
        mockTelephonyManager.stub {
            on { emergencyCallbackMode } doReturn true
        }

        repository.setActive(subId = SUB_ID, active = true)

        verify(context).startActivity(argThat { action == ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS })
    }

    @Test
    fun setActive_turnOffAndIsEmergencyCallbackMode() = runBlocking {
        mockTelephonyManager.stub {
@@ -131,6 +146,19 @@ class SubscriptionActivationRepositoryTest {
        })
    }

    @Test
    fun setActive_turnOnAndNotEmergencyCallbackMode() = runBlocking {
        mockTelephonyManager.stub {
            on { emergencyCallbackMode } doReturn false
        }

        repository.setActive(subId = SUB_ID, active = true)

        verify(context).startActivityAsUser(argThat {
            component?.className == SimOnboardingActivity::class.qualifiedName
        }, eq(UserHandle.CURRENT))
    }

    private companion object {
        const val SUB_ID = 1
    }