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

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

Snap for 8254899 from 294885ee to tm-d1-release

Change-Id: Icadb52412e84484e408e9750f1d4024e28cef841
parents 726dacb8 294885ee
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -46,10 +46,12 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.UserHandle;
import android.os.UserManager;
import android.service.carrier.CarrierService;
import android.telephony.Annotation.CarrierPrivilegeStatus;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
@@ -804,6 +806,25 @@ public class CarrierPrivilegesTracker extends Handler {
        }
    }

    /**
     * @return The UID of carrier service package. {@link Process#INVALID_UID} if not found.
     */
    public int getCarrierServicePackageUid() {
        Intent intent = new Intent(CarrierService.CARRIER_SERVICE_INTERFACE);
        List<String> carrierPackageNames = getCarrierPackageNamesForIntent(intent);
        if (!carrierPackageNames.isEmpty()) {
            List<Integer> uids = new ArrayList<>(getUidsForPackage(carrierPackageNames.get(0),
                    /* invalidateCache= */ false));
            if (uids.isEmpty()) return Process.INVALID_UID;
            if (uids.size() > 1) {
                Rlog.w(TAG, "getCarrierServicePackageUid: more than one uid for carrier "
                        + "service package.");
            }
            return uids.get(0);
        }
        return Process.INVALID_UID;
    }

    /**
     * Backing of {@link TelephonyManager#getCarrierPackageNamesForIntent} and {@link
     * TelephonyManager#getCarrierPackageNamesForIntentAndPhone}.
+1 −0
Original line number Diff line number Diff line
@@ -1107,6 +1107,7 @@ public class GsmCdmaPhone extends Phone {
    }

    @Override
    @NonNull
    public CarrierPrivilegesTracker getCarrierPrivilegesTracker() {
        return mCarrierPrivilegesTracker;
    }
+51 −4
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.net.vcn.VcnNetworkPolicyResult;
import android.os.AsyncResult;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.os.SystemClock;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
@@ -133,7 +134,7 @@ import java.util.stream.Collectors;
 *                                  │Handover │
 *                                  └─▲────┬──┘
 *                                    │    │
 *             ┌───────────┐        ┌─┴────▼──┐        ┌─────────────┐
 *             ┌───────────┐        ┌─┴────▼──┐        ┌─────────────┐
 *             │Connecting ├────────►Connected├────────►Disconnecting │
 *             └─────┬─────┘        └────┬────┘        └───────┬──────┘
 *                   │                   │                     │
@@ -192,6 +193,9 @@ public class DataNetwork extends StateMachine {
    /** Event for PCO data received from network. */
    private static final int EVENT_PCO_DATA_RECEIVED = 17;

    /** Event for carrier privileged UIDs changed. */
    private static final int EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED = 18;

    /** The default MTU for IPv4 network. */
    private static final int DEFAULT_MTU_V4 = 1280;

@@ -522,6 +526,17 @@ public class DataNetwork extends StateMachine {
    /** The QOS bearer sessions. */
    private final @NonNull List<QosBearerSession> mQosBearerSessions = new ArrayList<>();

    /**
     * The UIDs of packages that have carrier privilege. These UIDs will not change through the
     * life cycle of data network.
     */
    private @NonNull int[] mAdministratorUids = new int[0];

    /**
     * Carrier service package uid. This UID will not change through the life cycle of data network.
     */
    private int mCarrierServicePackageUid = Process.INVALID_UID;

    /**
     * The network bandwidth.
     */
@@ -797,6 +812,9 @@ public class DataNetwork extends StateMachine {
                        transport, getHandler(), EVENT_SERVICE_STATE_CHANGED, transport);
            }

            mPhone.getCarrierPrivilegesTracker().registerCarrierPrivilegesListener(getHandler(),
                    EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null);

            // Only add symmetric code here, for example, registering and unregistering.
            // DefaultState.enter() is the starting point in the life cycle of the DataNetwork,
            // and DefaultState.exit() is the end. For non-symmetric initializing works, put them
@@ -874,6 +892,12 @@ public class DataNetwork extends StateMachine {
                    onDataStateChanged(transport, (List<DataCallResponse>) ar.result);
                    break;
                }
                case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED: {
                    AsyncResult asyncResult = (AsyncResult) msg.obj;
                    int[] administratorUids = (int[]) asyncResult.result;
                    mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length);
                    break;
                }
                case EVENT_START_HANDOVER:
                case EVENT_BANDWIDTH_ESTIMATE_FROM_MODEM_CHANGED:
                case EVENT_BANDWIDTH_ESTIMATE_FROM_BANDWIDTH_ESTIMATOR_CHANGED:
@@ -904,6 +928,11 @@ public class DataNetwork extends StateMachine {
            mLogTag = "DN-" + mInitialNetworkAgentId + "-"
                    + ((mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) ? "C" : "I");

            // Get carrier config package uid. Note that this uid will not change through the life
            // cycle of this data network. So there is no need to listen to the change event.
            mCarrierServicePackageUid = mPhone.getCarrierPrivilegesTracker()
                    .getCarrierServicePackageUid();

            notifyPreciseDataConnectionState();
            if (mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
                allocatePduSessionId();
@@ -980,9 +1009,12 @@ public class DataNetwork extends StateMachine {
                // to tear down the VCN-managed network.
                if (mVcnManager != null) {
                    mVcnPolicyChangeListener = () -> {
                        log("VCN policy changed.");
                        if (mVcnManager.applyVcnNetworkPolicy(mNetworkCapabilities, mLinkProperties)
                                .isTeardownRequested()) {
                            tearDown(TEAR_DOWN_REASON_VCN_REQUESTED);
                        } else {
                            updateNetworkCapabilities();
                        }
                    };
                    mVcnManager.addVcnNetworkPolicyChangeListener(
@@ -1430,6 +1462,13 @@ public class DataNetwork extends StateMachine {
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
        }

        if (mCarrierServicePackageUid != Process.INVALID_UID
                && ArrayUtils.contains(mAdministratorUids, mCarrierServicePackageUid)) {
            builder.setOwnerUid(mCarrierServicePackageUid);
            builder.setAccessUids(Collections.singleton(mCarrierServicePackageUid));
        }
        builder.setAdministratorUids(mAdministratorUids);

        Set<Integer> meteredCapabilities = mDataConfigManager
                .getMeteredNetworkCapabilities(roaming).stream()
                .filter(cap -> mAccessNetworksManager.getPreferredTransportByNetworkCapability(cap)
@@ -1633,7 +1672,7 @@ public class DataNetwork extends StateMachine {

        TrafficDescriptor trafficDescriptor = mDataProfile.getTrafficDescriptor();
        final boolean matchAllRuleAllowed = trafficDescriptor == null
                || trafficDescriptor.getOsAppId() == null;
                || !TextUtils.isEmpty(trafficDescriptor.getDataNetworkName());

        int accessNetwork = DataUtils.networkTypeToAccessNetworkType(dataNetworkType);

@@ -2630,6 +2669,8 @@ public class DataNetwork extends StateMachine {
                return "EVENT_SUBSCRIPTION_PLAN_OVERRIDE";
            case EVENT_PCO_DATA_RECEIVED:
                return "EVENT_PCO_DATA_RECEIVED";
            case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED:
                return "EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED";
            default:
                return "Unknown(" + event + ")";
        }
@@ -2703,8 +2744,10 @@ public class DataNetwork extends StateMachine {
        pw.println("Tag: " + name());
        pw.increaseIndent();
        pw.println("mSubId=" + mSubId);
        pw.println("mTransport=" + AccessNetworkConstants.transportTypeToString(mTransport));
        pw.println("WWAN cid=" + mCid.get(AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
        pw.println("WLAN cid=" + mCid.get(AccessNetworkConstants.TRANSPORT_TYPE_WLAN));
        pw.println("mDataAllowedReason=" + mDataAllowedReason);
        pw.println("mPduSessionId=" + mPduSessionId);
        pw.println("mDataProfile=" + mDataProfile);
        pw.println("mNetworkCapabilities" + mNetworkCapabilities);
@@ -2714,7 +2757,13 @@ public class DataNetwork extends StateMachine {
        pw.println("mTempNotMeteredSupported=" + mTempNotMeteredSupported);
        pw.println("mTempNotMetered=" + mTempNotMetered);
        pw.println("mCongested=" + mCongested);
        pw.println("mSuspended" + mSuspended);
        pw.println("mDataCallResponse=" + mDataCallResponse);
        pw.println("mFailCause=" + DataFailCause.toString(mFailCause));
        pw.println("mAdministratorUids=" + Arrays.toString(mAdministratorUids));
        pw.println("mCarrierServicePackageUid=" + mCarrierServicePackageUid);
        pw.println("mEverConnected=" + mEverConnected);
        pw.println("mInvokedDataDeactivation=" + mInvokedDataDeactivation);

        pw.println("Attached network requests:");
        pw.increaseIndent();
@@ -2723,8 +2772,6 @@ public class DataNetwork extends StateMachine {
        }
        pw.decreaseIndent();
        pw.println("mQosBearerSessions=" + mQosBearerSessions);
        pw.println("mEverConnected=" + mEverConnected);
        pw.println("mInvokedDataDeactivation=" + mInvokedDataDeactivation);

        mNetworkAgent.dump(fd, pw, args);
        pw.println("Local logs:");
+2 −2
Original line number Diff line number Diff line
@@ -109,9 +109,9 @@ public class TelephonyNetworkRequest {
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_IMS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            // TODO add OS APP Id as part of b/206703524
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_CBS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN
                            | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_XCAP,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_EIMS,
+8 −4
Original line number Diff line number Diff line
@@ -4072,10 +4072,14 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        @Override
        public void onProvisioningIntChanged(int item, int value) {
            sendConfigChangedIntent(item, Integer.toString(value));

            // mImsManager.updateImsServiceConfig() will be called by ImsProvisioningController
            // when provisioning status is changed. The implementation is removed to avoid calling
            // the updateImsServiceConfig twice.
            if ((mImsManager != null)
                    && (item == ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED
                    || item == ImsConfig.ConfigConstants.VLT_SETTING_ENABLED
                    || item == ImsConfig.ConfigConstants.LVC_SETTING_ENABLED)) {
                // Update Ims Service state to make sure updated provisioning values take effect
                // immediately.
                updateImsServiceConfig();
            }
        }

        @Override
Loading