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

Commit 654ddb5c authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13391261 from 35f4ba3c to 25Q3-release

Change-Id: I84e5049d5c63a2d7df9aa3c5221fe54912b52cc4
parents d5ab73d9 35f4ba3c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -53,5 +53,5 @@ flag {
    is_exported: true
    namespace: "telephony"
    description: "Guard system API for vendor-specific classifications of cellular ID disclosures"
    bug: "355062720"
    bug: "385338654"
}
+0 −60
Original line number Diff line number Diff line
@@ -1506,28 +1506,6 @@ public class RILUtils {
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.EDGE) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EDGE;
        }
        // convert both IS95A/IS95B to CDMA as network mode doesn't support CDMA
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.IS95A) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.IS95B) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.ONE_X_RTT) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.EVDO_0) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.EVDO_A) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.EVDO_B) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.EHRPD) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD;
        }
        if ((raf & android.hardware.radio.V1_0.RadioAccessFamily.HSUPA) != 0) {
            networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA;
        }
@@ -1580,25 +1558,6 @@ public class RILUtils {
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EDGE) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.EDGE;
        }
        // convert CDMA to IS95A, consistent with ServiceState.networkTypeToRilRadioTechnology
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_CDMA) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.IS95A;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.ONE_X_RTT;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.EVDO_0;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.EVDO_A;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.EVDO_B;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.EHRPD;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA) != 0) {
            raf |= android.hardware.radio.V1_0.RadioAccessFamily.HSUPA;
        }
@@ -1651,25 +1610,6 @@ public class RILUtils {
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EDGE) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.EDGE;
        }
        // convert CDMA to IS95A, consistent with ServiceState.networkTypeToRilRadioTechnology
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_CDMA) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.IS95A;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.ONE_X_RTT;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.EVDO_0;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.EVDO_A;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.EVDO_B;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.EHRPD;
        }
        if ((networkTypeBitmask & TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA) != 0) {
            raf |= android.hardware.radio.RadioAccessFamily.HSUPA;
        }
+4 −4
Original line number Diff line number Diff line
@@ -3888,10 +3888,6 @@ public class DataNetworkController extends Handler {
            return false;
        }

        if (areNetworkAvailableServicesChanged(oldPsNri, newPsNri)) {
            return true;
        }

        if (oldPsNri == null
                || oldPsNri.getAccessNetworkTechnology() != newPsNri.getAccessNetworkTechnology()
                || (!oldPsNri.isInService() && newPsNri.isInService())
@@ -3900,6 +3896,10 @@ public class DataNetworkController extends Handler {
            return true;
        }

        if (areNetworkAvailableServicesChanged(oldPsNri, newPsNri)) {
            return true;
        }

        // If CS connection is back to service on non-DDS, reevaluate for potential PS
        if (!serviceStateAllowsPSAttach(oldSS, transport)
                && serviceStateAllowsPSAttach(newSS, transport)) {
+32 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.os.Message;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
import android.telecom.TelecomManager;
import android.telephony.Annotation.RadioPowerState;
import android.telephony.Annotation.ValidationStatus;
import android.telephony.CellSignalStrength;
@@ -818,6 +819,12 @@ public class DataStallRecoveryManager extends Handler {
            return false;
        }

        // Skip recovery if it can cause an emergrncy call to drop
        if (isInEmergencyCall()) {
            logl("skip data stall recovery as there is in an emergency call");
            return false;
        }

        // Skip recovery if it can cause a call to drop
        if (!isPhoneStateIdle() && getRecoveryAction() > RECOVERY_ACTION_CLEANUP) {
            logl("skip data stall recovery as there is an active call");
@@ -880,6 +887,31 @@ public class DataStallRecoveryManager extends Handler {
        return true;
    }

    /**
     * Checks if any of the available phones are currently in an emergency call
     * or in Emergency Callback Mode (ECM).
     *
     * @return {@code true} if the device is currently in an emergency call
     * or if at least one of the available phones is in ECM;
     * {@code false} otherwise.
     */
    private boolean isInEmergencyCall() {
        TelecomManager mTelecomManager = mPhone
                .getContext().getSystemService(TelecomManager.class);
        if (mTelecomManager != null && mTelecomManager.isInEmergencyCall()) {
            logl("Emergency call detected on the device");
            return true;
        }

        for (Phone phone : PhoneFactory.getPhones()) {
            if (phone.isInEcm()) {
                logl("ECM detected on phone" + phone.getPhoneId());
                return true;
            }
        }
        return false;
    }

    /**
     * Set the validation status into metrics.
     *
+16 −5
Original line number Diff line number Diff line
@@ -755,7 +755,9 @@ public class EuiccController extends IEuiccController.Stub {
                            mCallbackIntent, callerHasAdminPrivileges,
                      getCurrentEmbeddedSubscriptionIds(cardId));
                } else {
                    Log.e(TAG, "Caller does not have carrier privilege in metadata.");
                    Log.e(TAG,
                            "Caller does not have carrier privilege in metadata and is does not "
                                    + "have admin privileges, mCallingPackage=" + mCallingPackage);
                    sendResult(mCallbackIntent, ERROR, null /* extrasIntent */);
                }
            } else { // !mWithUserConsent
@@ -1082,7 +1084,6 @@ public class EuiccController extends IEuiccController.Stub {
    public void deleteSubscription(int cardId, int subscriptionId, String callingPackage,
            PendingIntent callbackIntent) {
        boolean callerCanWriteEmbeddedSubscriptions = callerCanWriteEmbeddedSubscriptions();
        boolean callerIsAdmin = callerCanManageDevicePolicyManagedSubscriptions(callingPackage);
        mAppOpsManager.checkPackage(Binder.getCallingUid(), callingPackage);

        long token = Binder.clearCallingIdentity();
@@ -1093,14 +1094,17 @@ public class EuiccController extends IEuiccController.Stub {
                sendResult(callbackIntent, ERROR, null /* extrasIntent */);
                return;
            }
            boolean adminOwned = callerIsAdmin && sub.getGroupOwner().equals(callingPackage);
            boolean managedByCallingAdminPackage =
                    callerCanManageDevicePolicyManagedSubscriptions(callingPackage)
                            && isSubscriptionDevicePolicyManaged(
                            sub, callingPackage);
            // For both single active SIM device and multi-active SIM device, if the caller is
            // system or the caller manage the target subscription, we let it continue. This is
            // because deleting subscription won't change status of any other subscriptions.
            if (!callerCanWriteEmbeddedSubscriptions
                    && !canManageSubscription(sub, callingPackage)
                    && !adminOwned) {
                Log.e(TAG, "No permissions: " + subscriptionId + " adminOwned=" + adminOwned);
                    && !managedByCallingAdminPackage) {
                Log.e(TAG, "No permissions to delete subscription: " + subscriptionId);
                sendResult(callbackIntent, ERROR, null /* extrasIntent */);
                return;
            }
@@ -2204,6 +2208,13 @@ public class EuiccController extends IEuiccController.Stub {
        return userContext.getSystemService(DevicePolicyManager.class);
    }

    private boolean isSubscriptionDevicePolicyManaged(@NonNull SubscriptionInfo info,
            @NonNull String callingPackage) {
        DevicePolicyManager devicePolicyManager = getDevicePolicyManager();
        return devicePolicyManager != null && devicePolicyManager.isSubscriptionEnterpriseManaged(
                info, callingPackage);
    }

    private boolean callerCanManageDevicePolicyManagedSubscriptions(String callingPackage) {
        DevicePolicyManager devicePolicyManager = getDevicePolicyManager();
        boolean isAdmin =
Loading