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

Commit 39439191 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Add a carrier config to specify validation timeout for data switch.

Bug: 142884903
Test: manual test
Change-Id: Id8dc2da05efdf4dd53d03b133cc9f47efd196e02
Merged-In: Id8dc2da05efdf4dd53d03b133cc9f47efd196e02
(cherry picked from commit db254737)
parent 2109a63f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ public class CellularNetworkValidator {

    private int mState = STATE_IDLE;
    private int mSubId;
    private int mTimeoutInMs;
    private long mTimeoutInMs;
    private boolean mReleaseAfterValidation;

    private NetworkRequest mNetworkRequest;
@@ -114,7 +114,7 @@ public class CellularNetworkValidator {
    /**
     * API to start a validation
     */
    public synchronized void validate(int subId, int timeoutInMs,
    public synchronized void validate(int subId, long timeoutInMs,
            boolean releaseAfterValidation, ValidationCallback callback) {
        // If it's already validating the same subscription, do nothing.
        if (subId == mSubId) return;
+13 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.internal.telephony;

import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.telephony.CarrierConfigManager.KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG;
import static android.telephony.SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
import static android.telephony.SubscriptionManager.INVALID_PHONE_INDEX;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -41,10 +42,12 @@ import android.os.AsyncResult;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneCapability;
import android.telephony.PhoneStateListener;
import android.telephony.Rlog;
@@ -1162,8 +1165,16 @@ public class PhoneSwitcher extends Handler {
        // start validation on the subscription first.
        if (mValidator.isValidationFeatureSupported() && needValidation) {
            mSetOpptSubCallback = callback;
            mValidator.validate(subIdToValidate, DEFAULT_VALIDATION_EXPIRATION_TIME,
                    false, mValidationCallback);
            long validationTimeout = DEFAULT_VALIDATION_EXPIRATION_TIME;
            CarrierConfigManager configManager = (CarrierConfigManager)
                    mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
            if (configManager != null) {
                PersistableBundle b = configManager.getConfigForSubId(subIdToValidate);
                if (b != null) {
                    validationTimeout = b.getLong(KEY_DATA_SWITCH_VALIDATION_TIMEOUT_LONG);
                }
            }
            mValidator.validate(subIdToValidate, validationTimeout, false, mValidationCallback);
        } else {
            setOpportunisticSubscriptionInternal(subId);
            sendSetOpptCallbackHelper(callback, SET_OPPORTUNISTIC_SUB_SUCCESS);