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

Commit e0b5de28 authored by songferngwang's avatar songferngwang
Browse files

Fix the settings crash

When the user select mobile network settings item with subid=-1 in
the search list, then some of objects are not initialized.

Bug: 325956182
Test: atest AutoSelectPreferenceControllerTest
atest MobileNetworkPhoneNumberPreferenceControllerTest
atest MobileNetworkSpnPreferenceControllerTest
atest MobileNetworkImeiPreferenceControllerTest
atest WifiCallingPreferenceControllerTest

Change-Id: I17c24b6f542392f018c65b689862f9735fad4b9f
parent fb52d691
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -84,6 +84,13 @@ open class MobileNetworkEidPreferenceController(context: Context, key: String) :
    }

    override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
        if (!this::lazyViewModel.isInitialized) {
            Log.e(
                this.javaClass.simpleName,
                "lateinit property lazyViewModel has not been initialized"
            )
            return
        }
        preference.isVisible = false

        val viewModel by lazyViewModel
+7 −0
Original line number Diff line number Diff line
@@ -78,6 +78,13 @@ class MobileNetworkImeiPreferenceController(context: Context, key: String) :
    }

    override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
        if (!this::lazyViewModel.isInitialized) {
            Log.e(
                this.javaClass.simpleName,
                "lateinit property lazyViewModel has not been initialized"
            )
            return
        }
        val viewModel by lazyViewModel
        val coroutineScope = viewLifecycleOwner.lifecycleScope

+8 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
import android.content.Context
import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager
import android.util.Log
import androidx.annotation.VisibleForTesting
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
@@ -66,6 +67,13 @@ class MobileNetworkPhoneNumberPreferenceController(context: Context, key: String
    }

    override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
        if (!this::lazyViewModel.isInitialized) {
            Log.e(
                this.javaClass.simpleName,
                "lateinit property lazyViewModel has not been initialized"
            )
            return
        }
        val viewModel by lazyViewModel
        val coroutineScope = viewLifecycleOwner.lifecycleScope

+10 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
import android.content.Context
import android.telephony.SubscriptionInfo
import android.telephony.SubscriptionManager
import android.util.Log
import androidx.annotation.VisibleForTesting
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
@@ -26,6 +27,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.preference.Preference
import androidx.preference.PreferenceScreen
import com.android.settings.flags.Flags
import com.android.settings.network.SimOnboardingActivity
import com.android.settings.network.SubscriptionInfoListViewModel
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle

@@ -57,6 +59,14 @@ class MobileNetworkSpnPreferenceController(context: Context, key: String) :
    }

    override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
        if (!this::lazyViewModel.isInitialized) {
            Log.e(
                this.javaClass.simpleName,
                "lateinit property lazyViewModel has not been initialized"
            )
            return
        }

        val viewModel by lazyViewModel

        viewModel.subscriptionInfoListFlow
+8 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.telecom.TelecomManager
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import android.telephony.ims.ImsMmTelManager
import android.util.Log
import androidx.lifecycle.LifecycleOwner
import androidx.preference.Preference
import androidx.preference.PreferenceScreen
@@ -76,6 +77,13 @@ open class WifiCallingPreferenceController @JvmOverloads constructor(
    }

    override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
        if(mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID){
            Log.e(
                this.javaClass.simpleName,
                "mSubId is INVALID_SUBSCRIPTION_ID"
            )
            return
        }
        wifiCallingRepositoryFactory(mSubId).wifiCallingReadyFlow()
            .collectLatestWithLifecycle(viewLifecycleOwner) { isReady ->
                preference.isVisible = isReady
Loading