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

Commit bd939da0 authored by Frank Li's avatar Frank Li Committed by Gerrit Code Review
Browse files

Merge "[CS03]Remove hidden API usage of NetworkCapabilities"

parents 79ed0d07 fa8456b4
Loading
Loading
Loading
Loading
+17 −17
Original line number Original line Diff line number Diff line
@@ -399,25 +399,25 @@ public class PhoneSwitcher extends Handler {
        PhoneConfigurationManager.registerForMultiSimConfigChange(
        PhoneConfigurationManager.registerForMultiSimConfigChange(
                this, EVENT_MULTI_SIM_CONFIG_CHANGED, null);
                this, EVENT_MULTI_SIM_CONFIG_CHANGED, null);


        NetworkCapabilities netCap = new NetworkCapabilities();
        final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
        netCap.addTransportType(TRANSPORT_CELLULAR);
                .addTransportType(TRANSPORT_CELLULAR)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_DUN)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_CBS)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_IA)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_MCX);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_MCX)
        netCap.setNetworkSpecifier(new MatchAllNetworkSpecifier());
                .setNetworkSpecifier(new MatchAllNetworkSpecifier());


        NetworkFactory networkFactory = new PhoneSwitcherNetworkRequestListener(looper, context,
        NetworkFactory networkFactory = new PhoneSwitcherNetworkRequestListener(looper, context,
                netCap, this);
                builder.build(), this);
        // we want to see all requests
        // we want to see all requests
        networkFactory.setScoreFilter(101);
        networkFactory.setScoreFilter(101);
        networkFactory.register();
        networkFactory.register();
+54 −41
Original line number Original line Diff line number Diff line
@@ -1629,8 +1629,9 @@ public class DataConnection extends StateMachine {
     * @return the {@link NetworkCapabilities} of this data connection.
     * @return the {@link NetworkCapabilities} of this data connection.
     */
     */
    public NetworkCapabilities getNetworkCapabilities() {
    public NetworkCapabilities getNetworkCapabilities() {
        NetworkCapabilities result = new NetworkCapabilities();
        final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
        result.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
        boolean hasInternet = false;


        if (mApnSetting != null) {
        if (mApnSetting != null) {
            final String[] types = ApnSetting.getApnTypesStringFromBitmask(
            final String[] types = ApnSetting.getApnTypesStringFromBitmask(
@@ -1644,107 +1645,119 @@ public class DataConnection extends StateMachine {
                }
                }
                switch (type) {
                switch (type) {
                    case PhoneConstants.APN_TYPE_ALL: {
                    case PhoneConstants.APN_TYPE_ALL: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
                        hasInternet = true;
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_DEFAULT: {
                    case PhoneConstants.APN_TYPE_DEFAULT: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
                        hasInternet = true;
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_MMS: {
                    case PhoneConstants.APN_TYPE_MMS: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_SUPL: {
                    case PhoneConstants.APN_TYPE_SUPL: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_DUN: {
                    case PhoneConstants.APN_TYPE_DUN: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_FOTA: {
                    case PhoneConstants.APN_TYPE_FOTA: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_IMS: {
                    case PhoneConstants.APN_TYPE_IMS: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_CBS: {
                    case PhoneConstants.APN_TYPE_CBS: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_IA: {
                    case PhoneConstants.APN_TYPE_IA: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_EMERGENCY: {
                    case PhoneConstants.APN_TYPE_EMERGENCY: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_MCX: {
                    case PhoneConstants.APN_TYPE_MCX: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_MCX);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MCX);
                        break;
                        break;
                    }
                    }
                    case PhoneConstants.APN_TYPE_XCAP: {
                    case PhoneConstants.APN_TYPE_XCAP: {
                        result.addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP);
                        builder.addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP);
                        break;
                        break;
                    }
                    }
                    default:
                    default:
                }
                }
            }
            }


            if (hasInternet) {
                builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
            }

            // Mark NOT_METERED in the following cases:
            // Mark NOT_METERED in the following cases:
            // 1. All APNs in the APN settings are unmetered.
            // 1. All APNs in the APN settings are unmetered.
            // 2. The non-restricted data is intended for unmetered use only.
            // 2. The non-restricted data is intended for unmetered use only.
            if ((mUnmeteredUseOnly && !mRestrictedNetworkOverride)
            if ((mUnmeteredUseOnly && !mRestrictedNetworkOverride)
                    || !ApnSettingUtils.isMetered(mApnSetting, mPhone)) {
                    || !ApnSettingUtils.isMetered(mApnSetting, mPhone)) {
                result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
                builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
            } else {
            } else {
                result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
                builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
            }
            }


            if (result.deduceRestrictedCapability()) {
            // TODO: Need to remove the use of hidden API deduceRestrictedCapability
                result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
            if (builder.build().deduceRestrictedCapability()) {
                builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
            }
            }
        }
        }


        if (mRestrictedNetworkOverride) {
        if (mRestrictedNetworkOverride) {
            result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
            builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
            // don't use dun on restriction-overriden networks.
            // don't use dun on restriction-overriden networks.
            result.removeCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
            builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
        }
        }


        result.setLinkDownstreamBandwidthKbps(mDownlinkBandwidth);
        builder.setLinkDownstreamBandwidthKbps(mDownlinkBandwidth);
        result.setLinkUpstreamBandwidthKbps(mUplinkBandwidth);
        builder.setLinkUpstreamBandwidthKbps(mUplinkBandwidth);


        result.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
        builder.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
                .setSubscriptionId(mSubId).build());
                .setSubscriptionId(mSubId).build());


        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING,
        if (!mPhone.getServiceState().getDataRoaming()) {
                !mPhone.getServiceState().getDataRoaming());
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
        }

        if (!mCongestedOverride) {
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED);
        }


        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED, !mCongestedOverride);
        if (mUnmeteredOverride) {
        result.setCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED,
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED);
                mUnmeteredOverride);
        }


        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !mIsSuspended);
        if (!mIsSuspended) {
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
        }


        result.setAdministratorUids(mAdministratorUids);
        builder.setAdministratorUids(mAdministratorUids);


        // Check for VCN-specified Network policy before returning NetworkCapabilities
        // Check for VCN-specified Network policy before returning NetworkCapabilities
        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED,
        if (!isVcnManaged(builder.build())) {
                !isVcnManaged(result));
            builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED);

        }
        return result;
        return builder.build();
    }
    }


    /**
    /**
+17 −17
Original line number Original line Diff line number Diff line
@@ -131,24 +131,24 @@ public class TelephonyNetworkFactory extends NetworkFactory {
    }
    }


    private NetworkCapabilities makeNetworkFilter(int subscriptionId) {
    private NetworkCapabilities makeNetworkFilter(int subscriptionId) {
        NetworkCapabilities nc = new NetworkCapabilities();
        final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
        nc.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_DUN)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_IMS)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_CBS)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_IA)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_RCS)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
        nc.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        nc.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
                .setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
                .setSubscriptionId(subscriptionId).build());
                .setSubscriptionId(subscriptionId).build());
        return nc;
        return builder.build();
    }
    }


    private class InternalHandler extends Handler {
    private class InternalHandler extends Handler {