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

Commit c0d81e61 authored by Evan Laird's avatar Evan Laird
Browse files

[Sb refactor] Remove throwing condition when requesting a repo

Initially it seemed unlikely that we would ever request a mobile
connections repository for a subscription id that we had not-yet been
told about. I.e., a view model requesting state for subId N should only
happen after we are told that N is an existing subscription.

This check is fine in the majority of cases, but it's prone to race
conditions since to check if a subscription is valid we need to check
the _current_ list of subscriptions.

Removing this thrown exception since it doesn't meet the criteria of
catching actionable exceptions, nor does it represent an actual bad
state anymore. If we ever end up with a view model tracking a
subscription that does not exist, then it will show up in logs and we
can trace where it came from then.

Test: all tests in com.android.systemui.statusbar.pipeline
Fixes: 273863830
Change-Id: I2453b5ebc08f738e6cf25689860558a7a5c47c44
parent cfb10296
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -255,15 +255,8 @@ constructor(
            .distinctUntilChanged()
            .onEach { logger.logDefaultMobileIconGroup(it) }

    override fun getRepoForSubId(subId: Int): FullMobileConnectionRepository {
        if (!isValidSubId(subId)) {
            throw IllegalArgumentException(
                "subscriptionId $subId is not in the list of valid subscriptions"
            )
        }

        return getOrCreateRepoForSubId(subId)
    }
    override fun getRepoForSubId(subId: Int): FullMobileConnectionRepository =
        getOrCreateRepoForSubId(subId)

    private fun getOrCreateRepoForSubId(subId: Int) =
        subIdRepositoryCache[subId]
+3 −5
Original line number Diff line number Diff line
@@ -73,7 +73,6 @@ import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
@@ -588,11 +587,10 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
        }

    @Test
    fun testConnectionRepository_invalidSubId_throws() =
    fun testConnectionRepository_invalidSubId_doesNotThrow() =
        testScope.runTest {
            assertThrows(IllegalArgumentException::class.java) {
            underTest.getRepoForSubId(SUB_1_ID)
            }
            // No exception
        }

    @Test