Merge "Guard against creating too many MobileSignalControllers" into qt-dev

am: a1de518e56

Change-Id: I918b499e40966665e6173d263447661224253923
This commit is contained in:
Evan Laird
2019-04-10 07:26:29 -07:00
committed by android-build-merger
2 changed files with 17 additions and 11 deletions

View File

@@ -55,6 +55,7 @@ import android.util.Log;
import android.util.MathUtils;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
@@ -108,16 +109,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
private final SubscriptionDefaults mSubDefaults;
private final DataSaverController mDataSaverController;
private final CurrentUserTracker mUserTracker;
private final Object mLock = new Object();
private Config mConfig;
private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onActiveDataSubscriptionIdChanged(int subId) {
mActiveMobileDataSubscription = subId;
doUpdateMobileControllers();
}
};
private PhoneStateListener mPhoneStateListener;
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
// Subcontrollers.
@@ -279,6 +274,14 @@ public class NetworkControllerImpl extends BroadcastReceiver
// TODO: Move off of the deprecated CONNECTIVITY_ACTION broadcast and rely on callbacks
// exclusively for status bar icons.
mConnectivityManager.registerDefaultNetworkCallback(callback, mReceiverHandler);
// Register the listener on our bg looper
mPhoneStateListener = new PhoneStateListener(bgLooper) {
@Override
public void onActiveDataSubscriptionIdChanged(int subId) {
mActiveMobileDataSubscription = subId;
doUpdateMobileControllers();
}
};
}
public DataSaverController getDataSaverController() {
@@ -600,7 +603,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
updateNoSims();
return;
}
setCurrentSubscriptions(subscriptions);
synchronized (mLock) {
setCurrentSubscriptionsLocked(subscriptions);
}
updateNoSims();
recalculateEmergency();
}
@@ -628,8 +633,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
return false;
}
@GuardedBy("mLock")
@VisibleForTesting
void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) {
public void setCurrentSubscriptionsLocked(List<SubscriptionInfo> subscriptions) {
Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() {
@Override
public int compare(SubscriptionInfo lhs, SubscriptionInfo rhs) {

View File

@@ -300,7 +300,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
// We can only test whether unregister gets called if it thinks its in a listening
// state.
mNetworkController.mListening = true;
mNetworkController.setCurrentSubscriptions(subscriptions);
mNetworkController.setCurrentSubscriptionsLocked(subscriptions);
for (int i = 0; i < testSubscriptions.length; i++) {
if (i == indexToSkipController) {