Loading src/java/com/android/internal/telephony/PhoneSwitcher.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +54 −41 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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(); } } /** /** Loading src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading Loading
src/java/com/android/internal/telephony/PhoneSwitcher.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +54 −41 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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(); } } /** /** Loading
src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading