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

Commit 428aaace authored by songferngwang's avatar songferngwang Committed by SongFerng Wang
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
(cherry picked from commit e0b5de28)
parent e4997243
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