Removed TelephonyNetworkFactory
TelephonyNetworkFactory has been replaced by TelephonyNetworkProvider
since 25Q1. Removed the dead code and clean up the corresponding flag.
Test: atedst FrameworksTelephonyTests
Flag: EXEMPT removing flag
Bug: 343370895
Change-Id: I6d55b1ca5db91eb036f8b6b436cfc79762c45893
diff --git a/flags/data.aconfig b/flags/data.aconfig
index 4a90c10..90fce4a 100644
--- a/flags/data.aconfig
+++ b/flags/data.aconfig
@@ -110,17 +110,6 @@
bug:"353723350"
}
-# OWNER=jackyu TARGET=25Q1
-flag {
- name: "support_network_provider"
- namespace: "telephony"
- description: "Deprecate network factory and adapt the new network provider model from connectivity service"
- bug: "343370895"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
# OWNER=jackyu TARGET=25Q2
flag {
name: "oem_paid_private"
diff --git a/src/java/com/android/internal/telephony/PhoneFactory.java b/src/java/com/android/internal/telephony/PhoneFactory.java
index c077ca9..136ac25 100644
--- a/src/java/com/android/internal/telephony/PhoneFactory.java
+++ b/src/java/com/android/internal/telephony/PhoneFactory.java
@@ -45,7 +45,6 @@
import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
import com.android.internal.telephony.data.CellularNetworkValidator;
import com.android.internal.telephony.data.PhoneSwitcher;
-import com.android.internal.telephony.data.TelephonyNetworkFactory;
import com.android.internal.telephony.data.TelephonyNetworkProvider;
import com.android.internal.telephony.euicc.EuiccCardController;
import com.android.internal.telephony.euicc.EuiccController;
@@ -78,7 +77,7 @@
//***** Class Variables
- // lock sLockProxyPhones protects sPhones, sPhone and sTelephonyNetworkFactories
+ // lock sLockProxyPhones protects sPhones, sPhone
final static Object sLockProxyPhones = new Object();
static private Phone[] sPhones = null;
static private Phone sPhone = null;
@@ -101,7 +100,6 @@
static private PhoneConfigurationManager sPhoneConfigurationManager;
static private SimultaneousCallingTracker sSimultaneousCallingTracker;
static private PhoneSwitcher sPhoneSwitcher;
- static private TelephonyNetworkFactory[] sTelephonyNetworkFactories;
private static TelephonyNetworkProvider sTelephonyNetworkProvider;
static private NotificationChannelController sNotificationChannelController;
static private CellularNetworkValidator sCellularNetworkValidator;
@@ -179,7 +177,6 @@
int[] networkModes = new int[numPhones];
sPhones = new Phone[numPhones];
sCommandsInterfaces = new RIL[numPhones];
- sTelephonyNetworkFactories = new TelephonyNetworkFactory[numPhones];
for (int i = 0; i < numPhones; i++) {
// reads the system properties and makes commandsinterface
@@ -287,16 +284,9 @@
sNotificationChannelController = new NotificationChannelController(context);
- if (featureFlags.supportNetworkProvider()) {
- // Create the TelephonyNetworkProvider instance, which is a singleton.
- sTelephonyNetworkProvider = new TelephonyNetworkProvider(Looper.myLooper(),
- context, featureFlags);
- } else {
- for (int i = 0; i < numPhones; i++) {
- sTelephonyNetworkFactories[i] = new TelephonyNetworkFactory(
- Looper.myLooper(), sPhones[i], featureFlags);
- }
- }
+ // Create the TelephonyNetworkProvider instance, which is a singleton.
+ sTelephonyNetworkProvider = new TelephonyNetworkProvider(Looper.myLooper(),
+ context, featureFlags);
}
}
}
@@ -313,7 +303,6 @@
int prevActiveModemCount = sPhones.length;
if (prevActiveModemCount == activeModemCount) return;
- // TODO: clean up sPhones, sCommandsInterfaces and sTelephonyNetworkFactories objects.
// Currently we will not clean up the 2nd Phone object, so that it can be re-used if
// user switches back.
if (prevActiveModemCount > activeModemCount) return;
@@ -321,10 +310,6 @@
sPhones = copyOf(sPhones, activeModemCount);
sCommandsInterfaces = copyOf(sCommandsInterfaces, activeModemCount);
- if (!sFeatureFlags.supportNetworkProvider()) {
- sTelephonyNetworkFactories = copyOf(sTelephonyNetworkFactories, activeModemCount);
- }
-
int cdmaSubscription = CdmaSubscriptionSourceManager.getDefault(context);
for (int i = prevActiveModemCount; i < activeModemCount; i++) {
sCommandsInterfaces[i] = new RIL(context, RadioAccessFamily.getRafFromNetworkType(
@@ -335,11 +320,6 @@
PackageManager.FEATURE_TELEPHONY_IMS)) {
sPhones[i].createImsPhone();
}
-
- if (!sFeatureFlags.supportNetworkProvider()) {
- sTelephonyNetworkFactories[i] = new TelephonyNetworkFactory(
- Looper.myLooper(), sPhones[i], sFeatureFlags);
- }
}
}
}
@@ -412,36 +392,6 @@
}
/**
- * Get the network factory associated with a given phone ID.
- * @param phoneId the phone id
- * @return a factory for this phone ID, or null if none.
- */
- public static TelephonyNetworkFactory getNetworkFactory(int phoneId) {
- synchronized (sLockProxyPhones) {
- if (!sMadeDefaults) {
- throw new IllegalStateException("Default phones haven't been made yet!");
- }
- final String dbgInfo;
- if (phoneId == SubscriptionManager.DEFAULT_PHONE_INDEX) {
- dbgInfo = "getNetworkFactory with DEFAULT_PHONE_ID => factory for sPhone";
- phoneId = sPhone.getSubId();
- } else {
- dbgInfo = "getNetworkFactory with non-default, return factory for passed id";
- }
- // sTelephonyNetworkFactories is null in tests because in tests makeDefaultPhones()
- // is not called.
- final TelephonyNetworkFactory factory = (sTelephonyNetworkFactories != null
- && (phoneId >= 0 && phoneId < sTelephonyNetworkFactories.length))
- ? sTelephonyNetworkFactories[phoneId] : null;
- if (DBG) {
- Rlog.d(LOG_TAG, "getNetworkFactory:-" + dbgInfo + " phoneId=" + phoneId
- + " factory=" + factory);
- }
- return factory;
- }
- }
-
- /**
* Returns the preferred network type bitmask that should be set in the modem.
*
* @param phoneId The phone's id.
@@ -596,20 +546,10 @@
pw.flush();
pw.println("++++++++++++++++++++++++++++++++");
-
- if (!sFeatureFlags.supportNetworkProvider()) {
- sTelephonyNetworkFactories[i].dump(fd, pw, args);
- }
-
- pw.flush();
- pw.decreaseIndent();
- pw.println("++++++++++++++++++++++++++++++++");
}
pw.increaseIndent();
- if (sFeatureFlags.supportNetworkProvider()) {
- sTelephonyNetworkProvider.dump(fd, pw, args);
- }
+ sTelephonyNetworkProvider.dump(fd, pw, args);
pw.decreaseIndent();
pw.println("++++++++++++++++++++++++++++++++");
diff --git a/src/java/com/android/internal/telephony/data/DataNetwork.java b/src/java/com/android/internal/telephony/data/DataNetwork.java
index 738c60f..21a8f12 100644
--- a/src/java/com/android/internal/telephony/data/DataNetwork.java
+++ b/src/java/com/android/internal/telephony/data/DataNetwork.java
@@ -29,7 +29,6 @@
import android.net.NetworkAgent;
import android.net.NetworkAgentConfig;
import android.net.NetworkCapabilities;
-import android.net.NetworkFactory;
import android.net.NetworkProvider;
import android.net.NetworkRequest;
import android.net.NetworkScore;
@@ -1180,21 +1179,13 @@
}
NetworkProvider provider;
- if (mFlags.supportNetworkProvider()) {
- provider = PhoneFactory.getNetworkProvider();
- } else {
- final NetworkFactory factory = PhoneFactory.getNetworkFactory(
- mPhone.getPhoneId());
- provider = (null == factory) ? null : factory.getProvider();
- }
+ provider = PhoneFactory.getNetworkProvider();
NetworkScore.Builder builder = new NetworkScore.Builder()
.setKeepConnectedReason(isHandoverInProgress()
? NetworkScore.KEEP_CONNECTED_FOR_HANDOVER
: NetworkScore.KEEP_CONNECTED_NONE);
- if (mFlags.supportNetworkProvider()) {
- builder.setTransportPrimary(mOnPreferredDataPhone);
- }
+ builder.setTransportPrimary(mOnPreferredDataPhone);
mNetworkScore = builder.build();
logl("mNetworkScore: isPrimary=" + mNetworkScore.isTransportPrimary()
+ ", keepConnectedReason=" + mNetworkScore.getKeepConnectedReason());
@@ -1259,15 +1250,13 @@
mDataNetworkController.getDataSettingsManager()
.registerCallback(mDataSettingsManagerCallback);
- if (mFlags.supportNetworkProvider()) {
- mPhoneSwitcherCallback = new PhoneSwitcherCallback(Runnable::run) {
- @Override
- public void onPreferredDataPhoneIdChanged(int phoneId) {
- sendMessage(EVENT_PREFERRED_DATA_SUBSCRIPTION_CHANGED, phoneId, 0);
- }
- };
- mPhoneSwitcher.registerCallback(mPhoneSwitcherCallback);
- }
+ mPhoneSwitcherCallback = new PhoneSwitcherCallback(Runnable::run) {
+ @Override
+ public void onPreferredDataPhoneIdChanged(int phoneId) {
+ sendMessage(EVENT_PREFERRED_DATA_SUBSCRIPTION_CHANGED, phoneId, 0);
+ }
+ };
+ mPhoneSwitcher.registerCallback(mPhoneSwitcherCallback);
mPhone.getDisplayInfoController().registerForTelephonyDisplayInfoChanged(
getHandler(), EVENT_DISPLAY_INFO_CHANGED, null);
@@ -1360,9 +1349,7 @@
mPhone.getServiceStateTracker().unregisterForServiceStateChanged(getHandler());
mPhone.getDisplayInfoController().unregisterForTelephonyDisplayInfoChanged(
getHandler());
- if (mFlags.supportNetworkProvider()) {
- mPhoneSwitcher.unregisterCallback(mPhoneSwitcherCallback);
- }
+ mPhoneSwitcher.unregisterCallback(mPhoneSwitcherCallback);
mDataNetworkController.getDataSettingsManager()
.unregisterCallback(mDataSettingsManagerCallback);
mRil.unregisterForPcoData(getHandler());
@@ -3373,13 +3360,10 @@
int connectedReason = keepConnectedForHandover
? NetworkScore.KEEP_CONNECTED_FOR_HANDOVER : NetworkScore.KEEP_CONNECTED_NONE;
if (mNetworkScore.getKeepConnectedReason() != connectedReason
- || (mFlags.supportNetworkProvider()
- && mNetworkScore.isTransportPrimary() != mOnPreferredDataPhone)) {
+ || mNetworkScore.isTransportPrimary() != mOnPreferredDataPhone) {
NetworkScore.Builder builder = new NetworkScore.Builder()
.setKeepConnectedReason(connectedReason);
- if (mFlags.supportNetworkProvider()) {
- builder.setTransportPrimary(mOnPreferredDataPhone);
- }
+ builder.setTransportPrimary(mOnPreferredDataPhone);
mNetworkScore = builder.build();
mNetworkAgent.sendNetworkScore(mNetworkScore);
logl("updateNetworkScore: isPrimary=" + mNetworkScore.isTransportPrimary()
diff --git a/src/java/com/android/internal/telephony/data/DataNetworkController.java b/src/java/com/android/internal/telephony/data/DataNetworkController.java
index 9899405..27514bf 100644
--- a/src/java/com/android/internal/telephony/data/DataNetworkController.java
+++ b/src/java/com/android/internal/telephony/data/DataNetworkController.java
@@ -2530,53 +2530,27 @@
}
private void onRemoveNetworkRequest(@NonNull TelephonyNetworkRequest request) {
- if (mFeatureFlags.supportNetworkProvider()) {
- if (!mAllNetworkRequestList.remove(request)) {
- loge("onRemoveNetworkRequest: Network request does not exist. " + request);
- return;
- }
-
- if (request.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) {
- mImsThrottleCounter.addOccurrence();
- mLastReleasedImsRequestCapabilities = request.getCapabilities();
- mLastImsOperationIsRelease = true;
- }
-
- if (request.getAttachedNetwork() != null) {
- request.getAttachedNetwork().detachNetworkRequest(
- request, false /* shouldRetry */);
- }
-
- request.setState(TelephonyNetworkRequest.REQUEST_STATE_UNSATISFIED);
- request.setEvaluation(null);
-
- log("onRemoveNetworkRequest: Removed " + request);
+ if (!mAllNetworkRequestList.remove(request)) {
+ loge("onRemoveNetworkRequest: Network request does not exist. " + request);
return;
}
- // The request generated from telephony network factory does not contain the information
- // the original request has, for example, attached data network. We need to find the
- // original one.
- TelephonyNetworkRequest networkRequest = mAllNetworkRequestList.stream()
- .filter(r -> r.equals(request))
- .findFirst()
- .orElse(null);
- if (networkRequest == null || !mAllNetworkRequestList.remove(networkRequest)) {
- loge("onRemoveNetworkRequest: Network request does not exist. " + networkRequest);
- return;
- }
-
- if (networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) {
+ if (request.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) {
mImsThrottleCounter.addOccurrence();
- mLastReleasedImsRequestCapabilities = networkRequest.getCapabilities();
+ mLastReleasedImsRequestCapabilities = request.getCapabilities();
mLastImsOperationIsRelease = true;
}
- if (networkRequest.getAttachedNetwork() != null) {
- networkRequest.getAttachedNetwork().detachNetworkRequest(
- networkRequest, false /* shouldRetry */);
+ if (request.getAttachedNetwork() != null) {
+ request.getAttachedNetwork().detachNetworkRequest(
+ request, false /* shouldRetry */);
}
- log("onRemoveNetworkRequest: Removed " + networkRequest);
+
+ request.setState(TelephonyNetworkRequest.REQUEST_STATE_UNSATISFIED);
+ request.setEvaluation(null);
+
+ log("onRemoveNetworkRequest: Removed " + request);
+ return;
}
/**
diff --git a/src/java/com/android/internal/telephony/data/PhoneSwitcher.java b/src/java/com/android/internal/telephony/data/PhoneSwitcher.java
index 079e705..3d42d35 100644
--- a/src/java/com/android/internal/telephony/data/PhoneSwitcher.java
+++ b/src/java/com/android/internal/telephony/data/PhoneSwitcher.java
@@ -38,10 +38,8 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
-import android.net.MatchAllNetworkSpecifier;
import android.net.Network;
import android.net.NetworkCapabilities;
-import android.net.NetworkFactory;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
import android.net.TelephonyNetworkSpecifier;
@@ -50,7 +48,6 @@
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.telephony.CarrierConfigManager;
@@ -88,7 +85,6 @@
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.DataSwitch;
-import com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.OnDemandDataSwitch;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.subscription.SubscriptionManagerService.SubscriptionManagerServiceCallback;
@@ -267,7 +263,7 @@
@VisibleForTesting
// It decides:
// 1. In modem layer, which modem is DDS (preferred to have data traffic on)
- // 2. In TelephonyNetworkFactory, which subscription will apply default network requests, which
+ // 2. In TelephonyNetworkProvider, which subscription will apply default network requests, which
// are requests without specifying a subId.
// Corresponding phoneId after considering mOpptDataSubId, mPrimaryDataSubId and
// mPhoneIdInVoiceCall above.
@@ -290,8 +286,6 @@
private static final int EVENT_PRIMARY_DATA_SUB_CHANGED = 101;
protected static final int EVENT_SUBSCRIPTION_CHANGED = 102;
- private static final int EVENT_REQUEST_NETWORK = 103;
- private static final int EVENT_RELEASE_NETWORK = 104;
// ECBM has started/ended. If we just ended an emergency call and mEmergencyOverride is not
// null, we will wait for EVENT_EMERGENCY_TOGGLE again with ECBM ending to send the message
// EVENT_REMOVE_DDS_EMERGENCY_OVERRIDE to remove the override after the mEmergencyOverride
@@ -651,37 +645,6 @@
this, EVENT_MULTI_SIM_CONFIG_CHANGED, null);
mConnectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback, this);
-
- if (!mFlags.supportNetworkProvider()) {
- final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_IA)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_MMTEL)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_1)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_2)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_3)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_4)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_5)
- .setNetworkSpecifier(new MatchAllNetworkSpecifier());
- TelephonyNetworkRequest.getAllSupportedNetworkCapabilities()
- .forEach(builder::addCapability);
-
- if (mFlags.satelliteInternet()) {
- // TODO: b/328622096 remove the try/catch
- try {
- builder.addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE);
- } catch (IllegalArgumentException exception) {
- loge("TRANSPORT_SATELLITE is not supported.");
- }
- }
-
- NetworkFactory networkFactory = new PhoneSwitcherNetworkRequestListener(looper, context,
- builder.build(), this);
- // we want to see all requests
- networkFactory.registerIgnoringScore();
- }
-
updateHalCommandToUse();
logl("PhoneSwitcher started");
@@ -750,14 +713,6 @@
DataSwitch.Reason.DATA_SWITCH_REASON_MANUAL);
break;
}
- case EVENT_REQUEST_NETWORK: {
- onRequestNetwork((NetworkRequest)msg.obj);
- break;
- }
- case EVENT_RELEASE_NETWORK: {
- onReleaseNetwork((NetworkRequest)msg.obj);
- break;
- }
case EVENT_EMERGENCY_TOGGLE: {
boolean isInEcm = isInEmergencyCallbackMode();
if (mEmergencyOverride != null) {
@@ -1100,43 +1055,15 @@
return false;
}
- // TODO: Remove after removing TelephonyNetworkFactory
- private static class PhoneSwitcherNetworkRequestListener extends NetworkFactory {
- private final PhoneSwitcher mPhoneSwitcher;
- public PhoneSwitcherNetworkRequestListener (Looper l, Context c,
- NetworkCapabilities nc, PhoneSwitcher ps) {
- super(l, c, "PhoneSwitcherNetworkRequestListener", nc);
- mPhoneSwitcher = ps;
- }
-
- @Override
- protected void needNetworkFor(@NonNull NetworkRequest networkRequest) {
- if (VDBG) log("needNetworkFor " + networkRequest);
- Message msg = mPhoneSwitcher.obtainMessage(EVENT_REQUEST_NETWORK);
- msg.obj = networkRequest;
- msg.sendToTarget();
- }
-
- @Override
- protected void releaseNetworkFor(@NonNull NetworkRequest networkRequest) {
- if (VDBG) log("releaseNetworkFor " + networkRequest);
- Message msg = mPhoneSwitcher.obtainMessage(EVENT_RELEASE_NETWORK);
- msg.obj = networkRequest;
- msg.sendToTarget();
- }
- }
-
/**
* Called when receiving a network request.
*
* @param networkRequest The network request.
*/
// TODO: Transform to TelephonyNetworkRequest after removing TelephonyNetworkFactory
- public void onRequestNetwork(@NonNull NetworkRequest networkRequest) {
- TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
- networkRequest, PhoneFactory.getDefaultPhone(), mFlags);
- if (!mNetworkRequestList.contains(telephonyNetworkRequest)) {
- mNetworkRequestList.add(telephonyNetworkRequest);
+ public void onRequestNetwork(@NonNull TelephonyNetworkRequest networkRequest) {
+ if (!mNetworkRequestList.contains(networkRequest)) {
+ mNetworkRequestList.add(networkRequest);
onEvaluate(REQUESTS_CHANGED, "netRequest");
}
}
@@ -1146,13 +1073,9 @@
*
* @param networkRequest The network request to release.
*/
- // TODO: Transform to TelephonyNetworkRequest after removing TelephonyNetworkFactory
- public void onReleaseNetwork(@NonNull NetworkRequest networkRequest) {
- TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
- networkRequest, PhoneFactory.getDefaultPhone(), mFlags);
- if (mNetworkRequestList.remove(telephonyNetworkRequest)) {
+ public void onReleaseNetwork(@NonNull TelephonyNetworkRequest networkRequest) {
+ if (mNetworkRequestList.remove(networkRequest)) {
onEvaluate(REQUESTS_CHANGED, "netReleased");
- collectReleaseNetworkMetrics(networkRequest);
}
}
@@ -1161,18 +1084,6 @@
mDefaultNetworkCallback.mSwitchReason = reason;
}
- private void collectReleaseNetworkMetrics(NetworkRequest networkRequest) {
- // Release network for MMS will recover the network on default data subscription, this only
- // happen on multi-sim device.
- if (mActiveModemCount > 1 && networkRequest.hasCapability(
- NetworkCapabilities.NET_CAPABILITY_MMS)) {
- OnDemandDataSwitch onDemandDataSwitch = new OnDemandDataSwitch();
- onDemandDataSwitch.apn = TelephonyEvent.ApnType.APN_TYPE_MMS;
- onDemandDataSwitch.state = TelephonyEvent.EventState.EVENT_STATE_END;
- TelephonyMetrics.getInstance().writeOnDemandDataSwitch(onDemandDataSwitch);
- }
- }
-
/**
* Cancel any auto switch attempts when the current environment is not suitable for auto switch.
*/
@@ -1610,17 +1521,6 @@
}
/**
- * If preferred phone changes, or phone activation status changes, registrants
- * will be notified.
- */
- // TODO: Remove after removing TelephonyNetworkFactory
- public void registerForActivePhoneSwitch(Handler h, int what, Object o) {
- Registrant r = new Registrant(h, what, o);
- mActivePhoneRegistrants.add(r);
- r.notifyRegistrant();
- }
-
- /**
* Set opportunistic data subscription. It's an indication to switch Internet data to this
* subscription. It has to be an active subscription, and PhoneSwitcher will try to validate
* it first if needed. If subId is DEFAULT_SUBSCRIPTION_ID, it means we are un-setting
@@ -2037,10 +1937,8 @@
// Notify all registrants
mActivePhoneRegistrants.notifyRegistrants();
notifyPreferredDataSubIdChanged();
- if (mFlags.supportNetworkProvider()) {
- mPhoneSwitcherCallbacks.forEach(callback -> callback.invokeFromExecutor(
- () -> callback.onPreferredDataPhoneIdChanged(phoneId)));
- }
+ mPhoneSwitcherCallbacks.forEach(callback -> callback.invokeFromExecutor(
+ () -> callback.onPreferredDataPhoneIdChanged(phoneId)));
}
private boolean isPhoneIdValidForRetry(int phoneId) {
diff --git a/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java b/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java
deleted file mode 100644
index 7d1746c..0000000
--- a/src/java/com/android/internal/telephony/data/TelephonyNetworkFactory.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.telephony.data;
-
-import android.annotation.NonNull;
-import android.net.NetworkCapabilities;
-import android.net.NetworkFactory;
-import android.net.NetworkRequest;
-import android.net.TelephonyNetworkSpecifier;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.telephony.AccessNetworkConstants;
-import android.telephony.SubscriptionManager;
-import android.util.LocalLog;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.flags.FeatureFlags;
-import com.android.internal.telephony.metrics.NetworkRequestsStats;
-import com.android.internal.util.IndentingPrintWriter;
-import com.android.telephony.Rlog;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Telephony network factory is responsible for dispatching network requests from the connectivity
- * service to the data network controller.
- */
-public class TelephonyNetworkFactory extends NetworkFactory {
- public final String LOG_TAG;
- protected static final boolean DBG = true;
-
- private static final int REQUEST_LOG_SIZE = 256;
-
- private static final int ACTION_NO_OP = 0;
- private static final int ACTION_REQUEST = 1;
- private static final int ACTION_RELEASE = 2;
-
- private static final int TELEPHONY_NETWORK_SCORE = 50;
-
- @VisibleForTesting
- public static final int EVENT_ACTIVE_PHONE_SWITCH = 1;
- @VisibleForTesting
- public static final int EVENT_SUBSCRIPTION_CHANGED = 2;
- private static final int EVENT_NETWORK_REQUEST = 3;
- private static final int EVENT_NETWORK_RELEASE = 4;
-
- private final PhoneSwitcher mPhoneSwitcher;
- private final LocalLog mLocalLog = new LocalLog(REQUEST_LOG_SIZE);
-
- // Key: network request. Value: the transport of the network request applies to,
- // AccessNetworkConstants.TRANSPORT_TYPE_INVALID if not applied.
- private final Map<TelephonyNetworkRequest, Integer> mNetworkRequests = new HashMap<>();
-
- private final Phone mPhone;
-
- private final AccessNetworksManager mAccessNetworksManager;
-
- private int mSubscriptionId;
-
- @VisibleForTesting
- public final Handler mInternalHandler;
-
- @NonNull
- private final FeatureFlags mFlags;
-
-
- /**
- * Constructor
- *
- * @param looper The looper for the handler
- * @param phone The phone instance
- * @param featureFlags The feature flags
- */
- public TelephonyNetworkFactory(@NonNull Looper looper, @NonNull Phone phone,
- @NonNull FeatureFlags featureFlags) {
- super(looper, phone.getContext(), "TelephonyNetworkFactory[" + phone.getPhoneId()
- + "]", null);
- mPhone = phone;
- mFlags = featureFlags;
- mInternalHandler = new InternalHandler(looper);
-
- mAccessNetworksManager = mPhone.getAccessNetworksManager();
-
- setCapabilityFilter(makeNetworkFilterByPhoneId(mPhone.getPhoneId()));
- setScoreFilter(TELEPHONY_NETWORK_SCORE);
-
- mPhoneSwitcher = PhoneSwitcher.getInstance();
- LOG_TAG = "TelephonyNetworkFactory[" + mPhone.getPhoneId() + "]";
-
- mPhoneSwitcher.registerForActivePhoneSwitch(mInternalHandler, EVENT_ACTIVE_PHONE_SWITCH,
- null);
-
- mSubscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- SubscriptionManager.OnSubscriptionsChangedListener subscriptionsChangedListener =
- new SubscriptionManager.OnSubscriptionsChangedListener() {
- @Override
- public void onSubscriptionsChanged() {
- mInternalHandler.sendEmptyMessage(EVENT_SUBSCRIPTION_CHANGED);
- }};
-
- mPhone.getContext().getSystemService(SubscriptionManager.class)
- .addOnSubscriptionsChangedListener(subscriptionsChangedListener);
-
- register();
- }
-
- private NetworkCapabilities makeNetworkFilterByPhoneId(int phoneId) {
- return makeNetworkFilter(SubscriptionManager.getSubscriptionId(phoneId));
- }
-
- /**
- * Build the network request filter used by this factory.
- * @param subscriptionId the subscription ID to listen to
- * @return the filter to send to the system server
- */
- // This is used by the test to simulate the behavior of the system server, which is to
- // send requests that match the network filter.
- @VisibleForTesting
- public NetworkCapabilities makeNetworkFilter(int subscriptionId) {
- final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_IA)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_MMTEL)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_1)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_2)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_3)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_4)
- .addEnterpriseId(NetworkCapabilities.NET_ENTERPRISE_ID_5)
- .setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
- .setSubscriptionId(subscriptionId).build());
- TelephonyNetworkRequest.getAllSupportedNetworkCapabilities()
- .forEach(builder::addCapability);
-
- if (mFlags.satelliteInternet()) {
- // TODO: b/328622096 remove the try/catch
- try {
- builder.addTransportType(NetworkCapabilities.TRANSPORT_SATELLITE);
- } catch (IllegalArgumentException exception) {
- log("TRANSPORT_SATELLITE is not supported.");
- }
- }
-
- return builder.build();
- }
-
- private class InternalHandler extends Handler {
- InternalHandler(Looper looper) {
- super(looper);
- }
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case EVENT_ACTIVE_PHONE_SWITCH: {
- onActivePhoneSwitch();
- break;
- }
- case EVENT_SUBSCRIPTION_CHANGED: {
- onSubIdChange();
- break;
- }
- case EVENT_NETWORK_REQUEST: {
- onNeedNetworkFor(msg);
- break;
- }
- case EVENT_NETWORK_RELEASE: {
- onReleaseNetworkFor(msg);
- break;
- }
- }
- }
- }
-
- private int getTransportTypeFromNetworkRequest(TelephonyNetworkRequest networkRequest) {
- int transport = AccessNetworkConstants.TRANSPORT_TYPE_WWAN;
- int capability = networkRequest.getHighestPriorityApnTypeNetworkCapability();
- if (capability >= 0) {
- transport = mAccessNetworksManager
- .getPreferredTransportByNetworkCapability(capability);
- }
- return transport;
- }
-
- private static int getAction(boolean wasActive, boolean isActive) {
- if (!wasActive && isActive) {
- return ACTION_REQUEST;
- } else if (wasActive && !isActive) {
- return ACTION_RELEASE;
- } else {
- return ACTION_NO_OP;
- }
- }
-
- // apply or revoke requests if our active-ness changes
- private void onActivePhoneSwitch() {
- logl("onActivePhoneSwitch");
- for (Map.Entry<TelephonyNetworkRequest, Integer> entry : mNetworkRequests.entrySet()) {
- TelephonyNetworkRequest networkRequest = entry.getKey();
- boolean applied = entry.getValue() != AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
-
- boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest(
- networkRequest, mPhone.getPhoneId());
-
- int action = getAction(applied, shouldApply);
- if (action == ACTION_NO_OP) continue;
-
- logl("onActivePhoneSwitch: " + ((action == ACTION_REQUEST)
- ? "Requesting" : "Releasing") + " network request " + networkRequest);
- int transportType = getTransportTypeFromNetworkRequest(networkRequest);
- if (action == ACTION_REQUEST) {
- NetworkRequestsStats.addNetworkRequest(networkRequest.getNativeNetworkRequest(),
- mSubscriptionId);
- mPhone.getDataNetworkController().addNetworkRequest(networkRequest);
- } else if (action == ACTION_RELEASE) {
- mPhone.getDataNetworkController().removeNetworkRequest(networkRequest);
- }
-
- mNetworkRequests.put(networkRequest,
- shouldApply ? transportType : AccessNetworkConstants.TRANSPORT_TYPE_INVALID);
- }
- }
-
- // watch for phone->subId changes, reapply new filter and let
- // that flow through to apply/revoke of requests
- private void onSubIdChange() {
- int newSubscriptionId = SubscriptionManager.getSubscriptionId(mPhone.getPhoneId());
- if (mSubscriptionId != newSubscriptionId) {
- if (DBG) logl("onSubIdChange " + mSubscriptionId + "->" + newSubscriptionId);
- mSubscriptionId = newSubscriptionId;
- setCapabilityFilter(makeNetworkFilter(mSubscriptionId));
- }
- }
-
- @Override
- public void needNetworkFor(@NonNull NetworkRequest networkRequest) {
- Message msg = mInternalHandler.obtainMessage(EVENT_NETWORK_REQUEST);
- msg.obj = networkRequest;
- msg.sendToTarget();
- }
-
- private void onNeedNetworkFor(@NonNull Message msg) {
- TelephonyNetworkRequest networkRequest =
- new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags);
- boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest(
- networkRequest, mPhone.getPhoneId());
-
- mNetworkRequests.put(networkRequest, shouldApply
- ? getTransportTypeFromNetworkRequest(networkRequest)
- : AccessNetworkConstants.TRANSPORT_TYPE_INVALID);
-
- logl("onNeedNetworkFor " + networkRequest + " shouldApply " + shouldApply);
-
- if (shouldApply) {
- NetworkRequestsStats.addNetworkRequest(networkRequest.getNativeNetworkRequest(),
- mSubscriptionId);
- mPhone.getDataNetworkController().addNetworkRequest(networkRequest);
- }
- }
-
- @Override
- public void releaseNetworkFor(@NonNull NetworkRequest networkRequest) {
- Message msg = mInternalHandler.obtainMessage(EVENT_NETWORK_RELEASE);
- msg.obj = networkRequest;
- msg.sendToTarget();
- }
-
- private void onReleaseNetworkFor(@NonNull Message msg) {
- TelephonyNetworkRequest networkRequest =
- new TelephonyNetworkRequest((NetworkRequest) msg.obj, mPhone, mFlags);
- boolean applied = mNetworkRequests.get(networkRequest)
- != AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
-
- mNetworkRequests.remove(networkRequest);
-
- logl("onReleaseNetworkFor " + networkRequest + " applied " + applied);
-
- if (applied) {
- mPhone.getDataNetworkController().removeNetworkRequest(networkRequest);
- }
- }
-
- protected void log(String s) {
- Rlog.d(LOG_TAG, s);
- }
-
- protected void logl(String s) {
- log(s);
- mLocalLog.log(s);
- }
-
- /**
- * Dump the state of telephony network factory
- *
- * @param fd File descriptor
- * @param writer Print writer
- * @param args Arguments
- */
- public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
- final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
- pw.println("TelephonyNetworkFactory-" + mPhone.getPhoneId());
- pw.increaseIndent();
- pw.println("Network Requests:");
- pw.increaseIndent();
- for (Map.Entry<TelephonyNetworkRequest, Integer> entry : mNetworkRequests.entrySet()) {
- TelephonyNetworkRequest nr = entry.getKey();
- int transport = entry.getValue();
- pw.println(nr + (transport != AccessNetworkConstants.TRANSPORT_TYPE_INVALID
- ? (" applied on " + transport) : " not applied"));
- }
- pw.decreaseIndent();
- pw.print("Local logs:");
- pw.increaseIndent();
- mLocalLog.dump(fd, pw, args);
- pw.decreaseIndent();
- pw.decreaseIndent();
- }
-}
diff --git a/src/java/com/android/internal/telephony/data/TelephonyNetworkProvider.java b/src/java/com/android/internal/telephony/data/TelephonyNetworkProvider.java
index 63edefa..5de1e82 100644
--- a/src/java/com/android/internal/telephony/data/TelephonyNetworkProvider.java
+++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkProvider.java
@@ -152,7 +152,7 @@
return;
}
- mPhoneSwitcher.onRequestNetwork(request);
+ mPhoneSwitcher.onRequestNetwork(networkRequest);
// Check with PhoneSwitcher to see where to route the request.
int phoneId = getPhoneIdForNetworkRequest(networkRequest);
@@ -187,7 +187,7 @@
return;
}
- mPhoneSwitcher.onReleaseNetwork(request);
+ mPhoneSwitcher.onReleaseNetwork(networkRequest);
int phoneId = mNetworkRequests.remove(networkRequest);
Phone phone = PhoneFactory.getPhone(phoneId);
if (phone != null) {
diff --git a/tests/telephonytests/jarjar-rules-tests.txt b/tests/telephonytests/jarjar-rules-tests.txt
index dd69870..5a05b27 100644
--- a/tests/telephonytests/jarjar-rules-tests.txt
+++ b/tests/telephonytests/jarjar-rules-tests.txt
@@ -1,10 +1,3 @@
-# NetworkFactory is included in telephony-common and services.net
-# Rename the non-jarjared, services.net version to avoid conflicts.
-# This causes two NetworkFactory classes to appear in the test package (one used
-# by services-net and one by telephony-common), similarly to what happens on a
-# real device, except that in the test they have different package names.
-rule android.net.NetworkFactory* android.net.services.NetworkFactory@1
-
# Telephony-common has already included net-utils-framework-common lib and jarjars
# the package name. FrameworksTelephonyTests also includes net-utils-framework-common
# via net-tests-utils and tries to jarjar it again. Rename the package names with
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
index 0db881c..6517b15 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
@@ -580,7 +580,6 @@
mNullCipherNotifier = Mockito.mock(NullCipherNotifier.class);
doReturn(true).when(mFeatureFlags).minimalTelephonyCdmCheck();
- doReturn(true).when(mFeatureFlags).supportNetworkProvider();
doReturn(true).when(mFeatureFlags).hsumBroadcast();
doReturn(true).when(mFeatureFlags).hsumPackageManager();
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
index 6e41448..a9c2ece 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java
@@ -102,7 +102,6 @@
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class PhoneSwitcherTest extends TelephonyTest {
- private static final int ACTIVE_PHONE_SWITCH = 1;
private static final int EVENT_RADIO_ON = 108;
private static final int EVENT_MODEM_COMMAND_DONE = 112;
private static final int EVENT_EVALUATE_AUTO_SWITCH = 111;
@@ -118,7 +117,6 @@
private ServiceStateTracker mSST2;
private Phone mImsPhone;
private DataSettingsManager mDataSettingsManager2;
- private Handler mActivePhoneSwitchHandler;
private GsmCdmaCall mActiveCall;
private GsmCdmaCall mHoldingCall;
private GsmCdmaCall mInactiveCall;
@@ -158,7 +156,6 @@
mSST2 = mock(ServiceStateTracker.class);
mImsPhone = mock(Phone.class);
mDataSettingsManager2 = mock(DataSettingsManager.class);
- mActivePhoneSwitchHandler = mock(Handler.class);
mActiveCall = mock(GsmCdmaCall.class);
mHoldingCall = mock(GsmCdmaCall.class);
mInactiveCall = mock(GsmCdmaCall.class);
@@ -207,192 +204,6 @@
super.tearDown();
}
- /**
- * Test that a single phone case results in our phone being active and the RIL called
- */
- @Test
- public void testRegister() throws Exception {
- initialize();
-
- // verify nothing has been done while there are no inputs
- assertTrue("data should be always allowed for emergency", mDataAllowed[0]);
- assertFalse("data allowed initially", mDataAllowed[1]);
-
- NetworkRequest internetNetworkRequest = addInternetNetworkRequest(null, 50);
-
- assertFalse("phone active after request", mPhoneSwitcherUT
- .shouldApplyNetworkRequest(new TelephonyNetworkRequest(
- internetNetworkRequest, mPhone, mFeatureFlags), 0));
-
- // not registered yet - shouldn't inc
- verify(mActivePhoneSwitchHandler, never()).sendMessageAtTime(any(), anyLong());
-
- mPhoneSwitcherUT.registerForActivePhoneSwitch(mActivePhoneSwitchHandler,
- ACTIVE_PHONE_SWITCH, null);
-
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
-
- setDefaultDataSubId(0);
-
- verify(mActivePhoneSwitchHandler, never()).sendMessageAtTime(any(), anyLong());
-
- setSlotIndexToSubId(0, 0);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
-
- AsyncResult res = new AsyncResult(1, null, null);
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
-
- // now try various things that should cause the active phone to switch:
- // 1 lose default via default sub change
- // 2 gain default via default sub change
- // 3 lose default via sub->phone change
- // 4 gain default via sub->phone change
- // 5 lose default network request
- // 6 gain subscription-specific request
- // 7 lose via sub->phone change
- // 8 gain via sub->phone change
- // 9 lose subscription-specific request
- // 10 don't switch phones when in emergency mode
-
- // 1 lose default via default sub change
- setDefaultDataSubId(1);
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertFalse("data allowed", mDataAllowed[0]);
-
- setSlotIndexToSubId(1, 1);
- clearInvocations(mAutoDataSwitchController);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- verify(mAutoDataSwitchController).notifySubscriptionsMappingChanged();
- clearInvocations(mActivePhoneSwitchHandler);
- assertFalse("data allowed", mDataAllowed[0]);
- assertTrue("data not allowed", mDataAllowed[1]);
-
- // 2 gain default via default sub change
- setDefaultDataSubId(0);
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertFalse("data allowed", mDataAllowed[1]);
- assertTrue("data not allowed", mDataAllowed[0]);
-
- // 3 lose default via sub->phone change
- setSlotIndexToSubId(0, 2);
- clearInvocations(mAutoDataSwitchController);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
- verify(mAutoDataSwitchController).notifySubscriptionsMappingChanged();
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
-
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertFalse("data allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 4 gain default via sub->phone change
- setSlotIndexToSubId(0, 0);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 5 lose default network request
- releaseNetworkRequest(internetNetworkRequest);
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 6 gain subscription-specific request
- NetworkRequest specificInternetRequest = addInternetNetworkRequest(0, 50);
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 7 lose via sub->phone change
- setSlotIndexToSubId(0, 1);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertFalse("data allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 8 gain via sub->phone change
- setSlotIndexToSubId(0, 0);
- mSubChangedListener.onSubscriptionsChanged();
- processAllMessages();
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 9 lose subscription-specific request
- releaseNetworkRequest(specificInternetRequest);
-
- Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
- processAllMessages();
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
- clearInvocations(mActivePhoneSwitchHandler);
- assertTrue("data not allowed", mDataAllowed[0]);
- assertFalse("data allowed", mDataAllowed[1]);
-
- // 10 don't switch phones when in emergency mode
- // not ready yet - Phone turns out to be hard to stub out
-// phones[0].setInEmergencyCall(true);
-// connectivityServiceMock.addDefaultRequest();
-// processAllMessages();
-// if (testHandler.getActivePhoneSwitchCount() != 11) {
-// fail("after release of request, ActivePhoneSwitchCount not 11!");
-// }
-// if (commandsInterfaces[0].isDataAllowed()) fail("data allowed");
-// if (commandsInterfaces[1].isDataAllowed()) fail("data allowed");
-//
-// phones[0].setInEmergencyCall(false);
-// connectivityServiceMock.addDefaultRequest();
-// processAllMessages();
-// if (testHandler.getActivePhoneSwitchCount() != 12) {
-// fail("after release of request, ActivePhoneSwitchCount not 11!");
-// }
-// if (commandsInterfaces[0].isDataAllowed()) fail("data allowed");
-// if (commandsInterfaces[1].isDataAllowed()) fail("data allowed");
- }
-
/** Test Data Auto Switch **/
@Test
public void testAutoDataSwitch_retry() throws Exception {
@@ -501,11 +312,7 @@
setSlotIndexToSubId(0, 0);
setSlotIndexToSubId(1, 1);
setDefaultDataSubId(0);
- mPhoneSwitcherUT.registerForActivePhoneSwitch(mActivePhoneSwitchHandler,
- ACTIVE_PHONE_SWITCH, null);
processAllMessages();
- // verify initial conditions
- verify(mActivePhoneSwitchHandler, times(1)).sendMessageAtTime(any(), anyLong());
assertTrue("data not allowed", mDataAllowed[0]);
assertFalse("data allowed", mDataAllowed[1]);
@@ -517,8 +324,6 @@
Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
processAllMessages();
- // After gain of network request, mActivePhoneSwitchHandler should be notified 2 times.
- verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
assertFalse("data allowed", mDataAllowed[0]);
assertTrue("data not allowed", mDataAllowed[1]);
}
@@ -714,13 +519,7 @@
public void testSetPreferredDataModemCommand() throws Exception {
doReturn(true).when(mMockRadioConfig).isSetPreferredDataCommandSupported();
initialize();
- mPhoneSwitcherUT.registerForActivePhoneSwitch(mActivePhoneSwitchHandler,
- ACTIVE_PHONE_SWITCH, null);
- mPhoneSwitcherUT.registerForActivePhoneSwitch(mActivePhoneSwitchHandler,
- ACTIVE_PHONE_SWITCH, null);
- verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
clearInvocations(mMockRadioConfig);
- clearInvocations(mActivePhoneSwitchHandler);
// Phone 0 has sub 1, phone 1 has sub 2.
// Sub 1 is default data sub.
@@ -733,16 +532,13 @@
AsyncResult res = new AsyncResult(1, null, null);
Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
processAllMessages();
- verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
clearInvocations(mMockRadioConfig);
- clearInvocations(mActivePhoneSwitchHandler);
// Notify phoneSwitcher about default data sub and default network request.
// It shouldn't change anything.
NetworkRequest internetRequest = addInternetNetworkRequest(null, 50);
NetworkRequest mmsRequest = addMmsNetworkRequest(2);
verify(mMockRadioConfig, never()).setPreferredDataModem(anyInt(), any());
- verify(mActivePhoneSwitchHandler, never()).sendMessageAtTime(any(), anyLong());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
@@ -764,7 +560,6 @@
verify(mMockRadioConfig).setPreferredDataModem(eq(1), any());
Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
processAllMessages();
- verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
@@ -775,7 +570,6 @@
new TelephonyNetworkRequest(mmsRequest, mPhone, mFeatureFlags), 1));
clearInvocations(mMockRadioConfig);
- clearInvocations(mActivePhoneSwitchHandler);
// Unset preferred sub should make phone0 preferredDataModem again.
mPhoneSwitcherUT.trySetOpportunisticDataSubscription(
@@ -787,7 +581,6 @@
verify(mMockRadioConfig).setPreferredDataModem(eq(0), any());
Message.obtain(mPhoneSwitcherUT, EVENT_MODEM_COMMAND_DONE, res).sendToTarget();
processAllMessages();
- verify(mActivePhoneSwitchHandler, times(2)).sendMessageAtTime(any(), anyLong());
assertTrue(mPhoneSwitcherUT.shouldApplyNetworkRequest(
new TelephonyNetworkRequest(internetRequest, mPhone, mFeatureFlags), 0));
assertFalse(mPhoneSwitcherUT.shouldApplyNetworkRequest(
@@ -2209,7 +2002,8 @@
NetworkRequest networkRequest = new NetworkRequest(netCap, ConnectivityManager.TYPE_NONE,
0, NetworkRequest.Type.REQUEST);
- mPhoneSwitcherUT.onRequestNetwork(networkRequest);
+ mPhoneSwitcherUT.onRequestNetwork(new TelephonyNetworkRequest(
+ networkRequest, mPhone, mFeatureFlags));
return networkRequest;
}
@@ -2227,7 +2021,8 @@
}
NetworkRequest networkRequest = new NetworkRequest(netCap, ConnectivityManager.TYPE_NONE,
1, NetworkRequest.Type.REQUEST);
- mPhoneSwitcherUT.onRequestNetwork(networkRequest);
+ mPhoneSwitcherUT.onRequestNetwork(new TelephonyNetworkRequest(
+ networkRequest, mPhone, mFeatureFlags));
return networkRequest;
}
@@ -2235,6 +2030,7 @@
* Tell PhoneSwitcher to release a network request.
*/
private void releaseNetworkRequest(NetworkRequest networkRequest) throws Exception {
- mPhoneSwitcherUT.onReleaseNetwork(networkRequest);
+ mPhoneSwitcherUT.onReleaseNetwork(new TelephonyNetworkRequest(
+ networkRequest, mPhone, mFeatureFlags));
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java
deleted file mode 100644
index e1a0eac..0000000
--- a/tests/telephonytests/src/com/android/internal/telephony/data/TelephonyNetworkFactoryTest.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (C) 2006 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.internal.telephony.data;
-
-import static com.android.internal.telephony.NetworkFactory.CMD_CANCEL_REQUEST;
-import static com.android.internal.telephony.NetworkFactory.CMD_REQUEST_NETWORK;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import android.net.NetworkCapabilities;
-import android.net.NetworkProvider;
-import android.net.NetworkRequest;
-import android.net.TelephonyNetworkSpecifier;
-import android.os.Looper;
-import android.os.Message;
-import android.testing.AndroidTestingRunner;
-import android.testing.TestableLooper;
-import android.util.ArraySet;
-
-import androidx.test.filters.FlakyTest;
-import androidx.test.filters.SmallTest;
-
-import com.android.internal.telephony.ISub;
-import com.android.internal.telephony.RadioConfig;
-import com.android.internal.telephony.TelephonyTest;
-import com.android.telephony.Rlog;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-@RunWith(AndroidTestingRunner.class)
-@TestableLooper.RunWithLooper
-public class TelephonyNetworkFactoryTest extends TelephonyTest {
- private static final String LOG_TAG = "TelephonyNetworkFactoryTest";
-
- // Mocked classes
- PhoneSwitcher mPhoneSwitcher;
- private RadioConfig mMockRadioConfig;
- private ISub mMockedIsub;
-
- private String mTestName = "";
-
- // List of all requests filed by a test
- private final ArraySet<TelephonyNetworkRequest> mAllNetworkRequestSet = new ArraySet<>();
- // List of requests active
- private final ArrayList<TelephonyNetworkRequest> mNetworkRequestList = new ArrayList<>();
- // List of complete messages associated with the network requests
- private final Map<TelephonyNetworkRequest, Message> mNetworkRequestMessageMap = new HashMap<>();
-
- private TelephonyNetworkFactory mTelephonyNetworkFactoryUT;
- private int mRequestId = 0;
-
- private void log(String str) {
- Rlog.d(LOG_TAG + " " + mTestName, str);
- }
-
- private NetworkRequest makeSubSpecificInternetRequest(int subId) {
- NetworkCapabilities netCap = (new NetworkCapabilities())
- .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
- netCap.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
- .setSubscriptionId(subId).build());
- NetworkRequest networkRequest = new NetworkRequest(netCap, -1,
- mRequestId++, NetworkRequest.Type.REQUEST);
- mTelephonyNetworkFactoryUT.obtainMessage(CMD_REQUEST_NETWORK, 0, 0, networkRequest)
- .sendToTarget();
- return networkRequest;
- }
-
- private NetworkRequest makeDefaultInternetRequest() {
- NetworkCapabilities netCap = (new NetworkCapabilities())
- .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
- NetworkRequest networkRequest = new NetworkRequest(netCap, -1,
- mRequestId++, NetworkRequest.Type.REQUEST);
- mTelephonyNetworkFactoryUT.obtainMessage(CMD_REQUEST_NETWORK, 0, 0, networkRequest)
- .sendToTarget();
- return networkRequest;
- }
-
- private NetworkRequest makeSubSpecificMmsRequest(int subId) {
- NetworkCapabilities netCap = (new NetworkCapabilities())
- .addCapability(NetworkCapabilities.NET_CAPABILITY_MMS)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
- .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
- netCap.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder()
- .setSubscriptionId(subId).build());
- NetworkRequest networkRequest = new NetworkRequest(netCap, -1,
- mRequestId++, NetworkRequest.Type.REQUEST);
- mTelephonyNetworkFactoryUT.obtainMessage(CMD_REQUEST_NETWORK, 0, 0, networkRequest)
- .sendToTarget();
- return networkRequest;
- }
-
- private void releaseNetworkRequest(NetworkRequest networkRequest) {
- mTelephonyNetworkFactoryUT.obtainMessage(CMD_CANCEL_REQUEST, 0, 0, networkRequest)
- .sendToTarget();
- }
-
- private void activatePhoneInPhoneSwitcher(int phoneId, boolean active) {
- doReturn(active).when(mPhoneSwitcher).shouldApplyNetworkRequest(any(), eq(phoneId));
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_ACTIVE_PHONE_SWITCH);
- }
-
- private void activatePhoneInPhoneSwitcher(int phoneId, NetworkRequest nr, boolean active) {
- TelephonyNetworkRequest networkRequest =
- new TelephonyNetworkRequest(nr, mPhone, mFeatureFlags);
- doReturn(active).when(mPhoneSwitcher).shouldApplyNetworkRequest(
- eq(networkRequest), eq(phoneId));
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_ACTIVE_PHONE_SWITCH);
- }
-
- @Before
- public void setUp() throws Exception {
- super.setUp(getClass().getSimpleName());
- mPhoneSwitcher = mock(PhoneSwitcher.class);
- mMockRadioConfig = mock(RadioConfig.class);
- mMockedIsub = mock(ISub.class);
- replaceInstance(RadioConfig.class, "sRadioConfig", null, mMockRadioConfig);
-
- doReturn(mMockedIsub).when(mIBinder).queryLocalInterface(anyString());
- doReturn(mPhone).when(mPhone).getImsPhone();
- mServiceManagerMockedServices.put("isub", mIBinder);
-
- mContextFixture.putStringArrayResource(com.android.internal.R.array.networkAttributes,
- new String[]{"wifi,1,1,1,-1,true", "mobile,0,0,0,-1,true",
- "mobile_mms,2,0,2,60000,true", "mobile_supl,3,0,2,60000,true",
- "mobile_dun,4,0,2,60000,true", "mobile_hipri,5,0,3,60000,true",
- "mobile_fota,10,0,2,60000,true", "mobile_ims,11,0,2,60000,true",
- "mobile_cbs,12,0,2,60000,true", "wifi_p2p,13,1,0,-1,true",
- "mobile_ia,14,0,2,-1,true", "mobile_emergency,15,0,2,-1,true"});
-
- doAnswer(invocation -> {
- final TelephonyNetworkRequest req =
- (TelephonyNetworkRequest) invocation.getArguments()[0];
- //final Message msg = (Message) invocation.getArguments()[2];
- mNetworkRequestList.add(req);
- mAllNetworkRequestSet.add(req);
- //mNetworkRequestMessageMap.put(req, msg);
- return null;
- }).when(mDataNetworkController).addNetworkRequest(any());
-
- doAnswer(invocation -> {
- mNetworkRequestList.remove((TelephonyNetworkRequest) invocation.getArguments()[0]);
- return null;
- }).when(mDataNetworkController).removeNetworkRequest(any());
- }
-
- @After
- public void tearDown() throws Exception {
- mAllNetworkRequestSet.clear();
- mNetworkRequestList.clear();
- mNetworkRequestMessageMap.clear();
- mTelephonyNetworkFactoryUT = null;
- super.tearDown();
- }
-
- private void createMockedTelephonyComponents() throws Exception {
- replaceInstance(PhoneSwitcher.class, "sPhoneSwitcher", null, mPhoneSwitcher);
-
- mTelephonyNetworkFactoryUT = new TelephonyNetworkFactory(Looper.myLooper(), mPhone,
- mFeatureFlags);
- final ArgumentCaptor<NetworkProvider> providerCaptor =
- ArgumentCaptor.forClass(NetworkProvider.class);
- verify(mConnectivityManager).registerNetworkProvider(providerCaptor.capture());
- // For NetworkFactory to function as expected, the provider ID must be set to some
- // number > 0.
- providerCaptor.getValue().setProviderId(1);
- verify(mPhoneSwitcher).registerForActivePhoneSwitch(any(), anyInt(), any());
-
- // Simulate the behavior of the system server. When offerNetwork is called, it will
- // update the factory about all requests that pass the registered filter, by calling
- // NetworkProvider#onNetworkNeeded or onNetworkUnneeded.
- // Note that this simulation is a little bit incomplete, as the system server will
- // *update* only for those requests for which the status has changed, but this
- // simulation will send REQUEST_NETWORK or CANCEL_REQUEST for all registered requests.
- // At this time it makes no difference in this test.
- // Also, this test reads from mAllNetworkRequestSet, which is not really the list of
- // requests sent to the system server as the test doesn't instrument that. Instead, it's
- // the list of requests ever sent to the factory. This also makes no difference in this
- // test at this time.
- doAnswer(invocation -> {
- final NetworkCapabilities capabilitiesFilter =
- mTelephonyNetworkFactoryUT.makeNetworkFilter(mMockedIsub.getSubId(0));
- for (final TelephonyNetworkRequest request : mAllNetworkRequestSet) {
- final int message = request.canBeSatisfiedBy(capabilitiesFilter)
- ? CMD_REQUEST_NETWORK : CMD_CANCEL_REQUEST;
- mTelephonyNetworkFactoryUT.obtainMessage(message, 0, 0,
- request.getNativeNetworkRequest()).sendToTarget();
- }
- return null;
- }).when(mConnectivityManager).offerNetwork(anyInt(), any(), any(), any());
- }
-
- /**
- * Test that phone active changes
- */
- @FlakyTest
- @Test
- @SmallTest
- public void testActive() throws Exception {
- mTestName = "testActive";
- final int phoneId = 0;
- final int subId = 0;
-
- createMockedTelephonyComponents();
-
- doReturn(false).when(mPhoneSwitcher).shouldApplyNetworkRequest(any(), anyInt());
- doReturn(subId).when(mMockedIsub).getSubId(phoneId);
- // fake onSubscriptionChangedListener being triggered.
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_SUBSCRIPTION_CHANGED);
-
- log("addDefaultRequest");
- makeDefaultInternetRequest();
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- log("setPhoneActive true: phoneId = " + phoneId);
-
- activatePhoneInPhoneSwitcher(phoneId, true);
- processAllMessages();
- assertEquals(1, mNetworkRequestList.size());
-
- log("makeSubSpecificInternetRequest: subId = " + subId);
- NetworkRequest subSpecificDefault = makeSubSpecificInternetRequest(subId);
- processAllMessages();
- assertEquals(2, mNetworkRequestList.size());
-
- log("setPhoneActive false: phoneId = " + phoneId);
- activatePhoneInPhoneSwitcher(phoneId, false);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- log("makeSubSpecificInternetRequest: subId = " + subId);
- NetworkRequest subSpecificMms = makeSubSpecificMmsRequest(subId);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- log("setPhoneActive true: phoneId = " + phoneId);
- activatePhoneInPhoneSwitcher(phoneId, true);
- processAllMessages();
- assertEquals(3, mNetworkRequestList.size());
-
- log("releaseNetworkRequest: subSpecificDefault = " + subSpecificDefault);
- releaseNetworkRequest(subSpecificDefault);
- processAllMessages();
- assertEquals(2, mNetworkRequestList.size());
-
- log("setPhoneActive false: phoneId = " + phoneId);
- activatePhoneInPhoneSwitcher(phoneId, false);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- log("releaseNetworkRequest: subSpecificMms = " + subSpecificMms);
- releaseNetworkRequest(subSpecificMms);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- log("setPhoneActive true: phoneId = " + phoneId);
- activatePhoneInPhoneSwitcher(phoneId, true);
- processAllMessages();
- assertEquals(1, mNetworkRequestList.size());
- }
-
- /**
- * Test that network request changes
- */
- @Test
- @SmallTest
- public void testRequests() throws Exception {
- mTestName = "testActive";
- final int numberOfPhones = 2;
- final int phoneId = 0;
- final int altPhoneId = 1;
- final int subId = 0;
- final int altSubId = 1;
- final int unusedSubId = 2;
-
- createMockedTelephonyComponents();
-
- doReturn(subId).when(mMockedIsub).getSubId(phoneId);
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_SUBSCRIPTION_CHANGED);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- activatePhoneInPhoneSwitcher(phoneId, true);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- makeDefaultInternetRequest();
- processAllMessages();
- assertEquals(1, mNetworkRequestList.size());
-
- doReturn(altSubId).when(mMockedIsub).getSubId(altPhoneId);
- processAllMessages();
- assertEquals(1, mNetworkRequestList.size());
-
- activatePhoneInPhoneSwitcher(phoneId, false);
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_ACTIVE_PHONE_SWITCH);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- NetworkRequest subSpecificMmsRequest = makeSubSpecificMmsRequest(subId);
- activatePhoneInPhoneSwitcher(phoneId, subSpecificMmsRequest, true);
- processAllMessages();
- assertEquals(1, mNetworkRequestList.size());
-
- doReturn(unusedSubId).when(mMockedIsub).getSubId(phoneId);
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_SUBSCRIPTION_CHANGED);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- makeSubSpecificInternetRequest(subId);
- processAllMessages();
- assertEquals(0, mNetworkRequestList.size());
-
- doReturn(subId).when(mMockedIsub).getSubId(phoneId);
- mTelephonyNetworkFactoryUT.mInternalHandler.sendEmptyMessage(
- TelephonyNetworkFactory.EVENT_SUBSCRIPTION_CHANGED);
- processAllMessages();
-
- activatePhoneInPhoneSwitcher(phoneId, true);
- processAllMessages();
- assertEquals(3, mNetworkRequestList.size());
- }
-}