Merge "Improve CarrierPrivilegesTracker logging and dump."
diff --git a/src/java/com/android/internal/telephony/NetworkTypeController.java b/src/java/com/android/internal/telephony/NetworkTypeController.java
index 9859f69..2a8f74b 100644
--- a/src/java/com/android/internal/telephony/NetworkTypeController.java
+++ b/src/java/com/android/internal/telephony/NetworkTypeController.java
@@ -505,6 +505,8 @@
transitionTo(mNrConnectedState);
} else if (isLte(rat) && isNrNotRestricted()) {
transitionWithTimerTo(isDataActive() ? mLteConnectedState : mIdleState);
+ } else {
+ updateOverrideNetworkType();
}
break;
case EVENT_NR_STATE_CHANGED:
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index 5afce92..cc4b0fc 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -209,8 +209,10 @@
//***** Instance Variables
@UnsupportedAppUsage
- final WakeLock mWakeLock; // Wake lock associated with request/response
- final WakeLock mAckWakeLock; // Wake lock associated with ack sent
+ @VisibleForTesting
+ public final WakeLock mWakeLock; // Wake lock associated with request/response
+ @VisibleForTesting
+ public final WakeLock mAckWakeLock; // Wake lock associated with ack sent
final int mWakeLockTimeout; // Timeout associated with request/response
final int mAckWakeLockTimeout; // Timeout associated with ack sent
// The number of wakelock requests currently active. Don't release the lock
diff --git a/src/java/com/android/internal/telephony/TelephonyTester.java b/src/java/com/android/internal/telephony/TelephonyTester.java
index 5e9a621..e1ada1d 100644
--- a/src/java/com/android/internal/telephony/TelephonyTester.java
+++ b/src/java/com/android/internal/telephony/TelephonyTester.java
@@ -144,6 +144,7 @@
private static final String EXTRA_NR_FREQUENCY_RANGE = "nr_frequency_range";
private static final String EXTRA_NR_STATE = "nr_state";
private static final String EXTRA_OPERATOR = "operator";
+ private static final String EXTRA_OPERATOR_RAW = "operator_raw";
private static final String ACTION_RESET = "reset";
@@ -403,6 +404,12 @@
ss.setOperatorName(operator, operator, "");
log("Override operator with " + operator);
}
+ if (mServiceStateTestIntent.hasExtra(EXTRA_OPERATOR_RAW)) {
+ String operator_raw = mServiceStateTestIntent.getStringExtra(EXTRA_OPERATOR_RAW);
+ ss.setOperatorAlphaLongRaw(operator_raw);
+ ss.setOperatorAlphaShortRaw(operator_raw);
+ log("Override operator_raw with " + operator_raw);
+ }
if (mServiceStateTestIntent.hasExtra(EXTRA_NR_FREQUENCY_RANGE)) {
ss.setNrFrequencyRange(mServiceStateTestIntent.getIntExtra(EXTRA_NR_FREQUENCY_RANGE,
ServiceState.FREQUENCY_RANGE_UNKNOWN));
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index 719712b..9e0f3f1 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -454,8 +454,26 @@
return mApnSetting;
}
- void setLinkPropertiesHttpProxy(ProxyInfo proxy) {
- mLinkProperties.setHttpProxy(proxy);
+ /**
+ * Update http proxy of link properties based on current apn setting
+ */
+ private void updateLinkPropertiesHttpProxy() {
+ if (mApnSetting == null
+ || TextUtils.isEmpty(mApnSetting.getProxyAddressAsString())) {
+ return;
+ }
+ try {
+ int port = mApnSetting.getProxyPort();
+ if (port == -1) {
+ port = 8080;
+ }
+ ProxyInfo proxy = ProxyInfo.buildDirectProxy(
+ mApnSetting.getProxyAddressAsString(), port);
+ mLinkProperties.setHttpProxy(proxy);
+ } catch (NumberFormatException e) {
+ loge("onDataSetupComplete: NumberFormatException making ProxyProperties ("
+ + mApnSetting.getProxyPort() + "): " + e);
+ }
}
public static class UpdateLinkPropertyResult {
@@ -2189,7 +2207,7 @@
final NetworkProvider provider = (null == factory) ? null : factory.getProvider();
mDisabledApnTypeBitMask |= getDisallowedApnTypes();
-
+ updateLinkPropertiesHttpProxy();
mNetworkAgent = new DcNetworkAgent(DataConnection.this,
mPhone, mNetworkInfo, mScore, configBuilder.build(), provider,
mTransportType);
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 31a1ccf..7319ad4 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -48,7 +48,6 @@
import android.net.NetworkCapabilities;
import android.net.NetworkPolicyManager;
import android.net.NetworkRequest;
-import android.net.ProxyInfo;
import android.net.TrafficStats;
import android.net.Uri;
import android.os.AsyncResult;
@@ -654,6 +653,7 @@
private final int mTransportType;
private DataStallRecoveryHandler mDsRecoveryHandler;
+ private HandlerThread mHandlerThread;
/**
* Request network completion message map. Key is the APN type, value is the list of completion
@@ -710,9 +710,9 @@
.getSystemService(Context.NETWORK_POLICY_SERVICE);
mNetworkPolicyManager.registerSubscriptionCallback(mSubscriptionCallback);
- HandlerThread dcHandlerThread = new HandlerThread("DcHandlerThread");
- dcHandlerThread.start();
- Handler dcHandler = new Handler(dcHandlerThread.getLooper());
+ mHandlerThread = new HandlerThread("DcHandlerThread");
+ mHandlerThread.start();
+ Handler dcHandler = new Handler(mHandlerThread.getLooper());
mDcc = DcController.makeDcc(mPhone, this, mDataServiceManager, dcHandler, tagSuffix);
mDcTesterFailBringUpAll = new DcTesterFailBringUpAll(mPhone, dcHandler);
@@ -829,6 +829,16 @@
destroyDataConnections();
}
+ /**
+ * Stop the internal handler thread
+ *
+ * TESTING ONLY
+ */
+ @VisibleForTesting
+ public void stopHandlerThread() {
+ mHandlerThread.quit();
+ }
+
private void unregisterForAllEvents() {
//Unregister for all events
if (mTransportType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) {
@@ -2828,20 +2838,6 @@
log("onDataSetupComplete: success apn=" + (apn == null ? "unknown"
: apn.getApnName()));
}
- if (apn != null && !TextUtils.isEmpty(apn.getProxyAddressAsString())) {
- try {
- int port = apn.getProxyPort();
- if (port == -1) {
- port = 8080;
- }
- ProxyInfo proxy = ProxyInfo.buildDirectProxy(
- apn.getProxyAddressAsString(), port);
- dataConnection.setLinkPropertiesHttpProxy(proxy);
- } catch (NumberFormatException e) {
- loge("onDataSetupComplete: NumberFormatException making ProxyProperties ("
- + apn.getProxyPort() + "): " + e);
- }
- }
// everything is setup
if (TextUtils.equals(apnContext.getApnType(), PhoneConstants.APN_TYPE_DEFAULT)
diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java
index 496d2f3..235bf43 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccController.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccController.java
@@ -1028,6 +1028,9 @@
boolean defaultEuiccCardIdIsStillInserted = false;
String cardString = mCardStrings.get(mDefaultEuiccCardId);
for (UiccSlot slot : mUiccSlots) {
+ if (slot.getUiccCard() == null) {
+ continue;
+ }
if (cardString.equals(
IccUtils.stripTrailingFs(slot.getUiccCard().getCardId()))) {
defaultEuiccCardIdIsStillInserted = true;
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java b/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java
index f80cf04..e2bacc2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java
@@ -89,6 +89,9 @@
@After
public void tearDown() throws Exception {
+ if (mCellularNetworkService != null) {
+ mCellularNetworkService.onDestroy();
+ }
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/RILTest.java b/tests/telephonytests/src/com/android/internal/telephony/RILTest.java
index e080820..52cb5ac 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/RILTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/RILTest.java
@@ -311,6 +311,8 @@
@After
public void tearDown() throws Exception {
+ mRILUnderTest.mWakeLock.release();
+ mRILUnderTest.mAckWakeLock.release();
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
index 184ab54..0d6ff15 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
@@ -334,6 +334,9 @@
sst = null;
mSSTTestHandler.quit();
mSSTTestHandler.join();
+ if (mCellularNetworkService != null) {
+ mCellularNetworkService.onDestroy();
+ }
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SmsDispatchersControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SmsDispatchersControllerTest.java
index 32b98d1..7111a14 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SmsDispatchersControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SmsDispatchersControllerTest.java
@@ -64,6 +64,7 @@
@After
public void tearDown() throws Exception {
+ mSmsDispatchersController.dispose();
mSmsDispatchersController = null;
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
index 87804b0..9f00c7b 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
@@ -670,6 +670,7 @@
for (TestableLooper looper : mTestableLoopers) {
looper.destroy();
}
+ TestableLooper.remove(TelephonyTest.this);
mSimulatedCommands.dispose();
SharedPreferences sharedPreferences = mContext.getSharedPreferences((String) null, 0);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java
index 15127d0..8b35d31 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java
@@ -102,6 +102,7 @@
private DataConnection mDc;
private DataConnectionTestHandler mDataConnectionTestHandler;
private DcController mDcc;
+ private CellularDataService mCellularDataService;
private ApnSetting mApn1 = ApnSetting.makeApnSetting(
2163, // id
@@ -264,7 +265,7 @@
}
private void addDataService() {
- CellularDataService cellularDataService = new CellularDataService();
+ mCellularDataService = new CellularDataService();
ServiceInfo serviceInfo = new ServiceInfo();
serviceInfo.packageName = "com.android.phone";
serviceInfo.permission = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
@@ -273,7 +274,7 @@
DataService.SERVICE_INTERFACE,
null,
"com.android.phone",
- cellularDataService.mBinder,
+ mCellularDataService.mBinder,
serviceInfo,
filter);
}
@@ -327,6 +328,7 @@
mDc = null;
mDcc = null;
mDataConnectionTestHandler.quit();
+ mCellularDataService.onDestroy();
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcTrackerTest.java
index f79e511..0cb1954 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcTrackerTest.java
@@ -166,8 +166,10 @@
private Message mMessage;
+ private CellularDataService mCellularDataService;
+
private void addDataService() {
- CellularDataService cellularDataService = new CellularDataService();
+ mCellularDataService = new CellularDataService();
ServiceInfo serviceInfo = new ServiceInfo();
serviceInfo.packageName = "com.android.phone";
serviceInfo.permission = "android.permission.BIND_TELEPHONY_DATA_SERVICE";
@@ -176,7 +178,7 @@
DataService.SERVICE_INTERFACE,
null,
"com.android.phone",
- cellularDataService.mBinder,
+ mCellularDataService.mBinder,
serviceInfo,
filter);
}
@@ -542,8 +544,10 @@
public void tearDown() throws Exception {
logd("DcTrackerTest -tearDown");
mDct.removeCallbacksAndMessages(null);
+ mDct.stopHandlerThread();
mDct = null;
mDcTrackerTestHandler.quit();
+ mCellularDataService.onDestroy();
waitForMs(100);
super.tearDown();
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/gsm/GsmInboundSmsHandlerTest.java b/tests/telephonytests/src/com/android/internal/telephony/gsm/GsmInboundSmsHandlerTest.java
index b99749c..6f0a170 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/gsm/GsmInboundSmsHandlerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/gsm/GsmInboundSmsHandlerTest.java
@@ -244,6 +244,7 @@
i++;
}
assertFalse(mGsmInboundSmsHandler.getWakeLock().isHeld());
+ mGsmInboundSmsHandler.quit();
mGsmInboundSmsHandler = null;
mContentProvider.shutdown();
super.tearDown();
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java
index f09140e..7088024 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ims/ImsManagerTest.java
@@ -873,6 +873,7 @@
fail("failed with " + ex);
}
+ ((ImsManager.ImsExecutorFactory) imsManager.mExecutorFactory).destroy();
imsManager.mExecutorFactory = Runnable::run;
return imsManager;