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

Commit 506b8af1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[Settings] Use background thread to get VoNr state." into udc-dev am:...

Merge "[Settings] Use background thread to get VoNr state." into udc-dev am: 1fd77775 am: 0d065f79

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23405373



Change-Id: I0ba5cc6eb2112440a4b2063f1347fed9406f5ad5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 516503df 0d065f79
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.settings.network.telephony;

import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
@@ -33,9 +35,10 @@ import com.android.internal.telephony.util.ArrayUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.utils.ThreadUtils;

/**
 * Preference controller for "Enhanced 4G LTE"
 * Preference controller for "Voice over NR".
 */
public class NrAdvancedCallingPreferenceController extends TelephonyTogglePreferenceController
        implements LifecycleObserver, OnStart, OnStop {
@@ -50,8 +53,11 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
    private boolean mIsVonrVisibleFromCarrierConfig = false;
    private boolean mIsNrEnableFromCarrierConfig = false;
    private boolean mHas5gCapability = false;
    private boolean mIsVoNrEnabled = false;
    private Integer mCallState;

    private Handler mHandler = new Handler(Looper.getMainLooper());

    public NrAdvancedCallingPreferenceController(Context context, String key) {
        super(context, key);
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
@@ -94,6 +100,8 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
                CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY);
        mIsNrEnableFromCarrierConfig = !ArrayUtils.isEmpty(nrAvailabilities);

        updateVoNrState();

        Log.d(TAG, "mHas5gCapability: " + mHas5gCapability
                + ",mIsNrEnabledFromCarrierConfig: " + mIsNrEnableFromCarrierConfig
                + ",mIsVonrEnabledFromCarrierConfig: " + mIsVonrEnabledFromCarrierConfig
@@ -162,7 +170,7 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer

    @Override
    public boolean isChecked() {
        return mTelephonyManager.isVoNrEnabled();
        return mIsVoNrEnabled;
    }

    @VisibleForTesting
@@ -174,6 +182,19 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
        return isCallStateIdle();
    }

    private void updateVoNrState() {
        ThreadUtils.postOnBackgroundThread(() -> {
            boolean result = mTelephonyManager.isVoNrEnabled();
            if (result != mIsVoNrEnabled) {
                Log.i(TAG, "VoNr state : " + result);
                mIsVoNrEnabled = result;
                mHandler.post(() -> {
                    updateState(mPreference);
                });
            }
        });
    }

    private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.CallStateListener {

+1 −0
Original line number Diff line number Diff line
@@ -186,6 +186,7 @@ public class NrAdvancedCallingPreferenceControllerTest {
        doReturn(true).when(mTelephonyManager).isVoNrEnabled();
        mPreference.setChecked(false);

        mController.init(SUB_ID);
        mController.updateState(mPreference);

        assertThat(mPreference.isChecked()).isTrue();