Merge "Exclude DUN from data-disabled override." into nyc-mr1-dev
diff --git a/src/java/com/android/internal/telephony/dataconnection/ApnContext.java b/src/java/com/android/internal/telephony/dataconnection/ApnContext.java
index 12c3945..7865bc4 100644
--- a/src/java/com/android/internal/telephony/dataconnection/ApnContext.java
+++ b/src/java/com/android/internal/telephony/dataconnection/ApnContext.java
@@ -450,9 +450,14 @@
}
}
- public boolean hasNoRestrictedRequests() {
+ public boolean hasNoRestrictedRequests(boolean excludeDun) {
synchronized (mRefCountLock) {
for (NetworkRequest nr : mNetworkRequests) {
+ if (excludeDun &&
+ nr.networkCapabilities.hasCapability(
+ NetworkCapabilities.NET_CAPABILITY_DUN)) {
+ continue;
+ }
if (nr.networkCapabilities.hasCapability(
NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) == false) {
return false;
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index c1319a4..c7c6ec0 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -860,7 +860,7 @@
// first, if we have no restricted requests, this override can stay FALSE:
boolean noRestrictedRequests = true;
for (ApnContext apnContext : mApnContexts.keySet()) {
- noRestrictedRequests &= apnContext.hasNoRestrictedRequests();
+ noRestrictedRequests &= apnContext.hasNoRestrictedRequests(true /* exclude DUN */);
}
if (noRestrictedRequests) {
return;
@@ -948,6 +948,8 @@
}
if (mRestrictedNetworkOverride) {
result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
+ // don't use dun on restriction-overriden networks.
+ result.removeCapability(NetworkCapabilities.NET_CAPABILITY_DUN);
}
int up = 14;
@@ -2055,7 +2057,8 @@
+ " mLastFailCause=" + mLastFailCause
+ " mTag=" + mTag
+ " mLinkProperties=" + mLinkProperties
- + " linkCapabilities=" + makeNetworkCapabilities();
+ + " linkCapabilities=" + makeNetworkCapabilities()
+ + " mRestrictedNetworkOverride=" + mRestrictedNetworkOverride;
}
@Override
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 25b82ef..11e8cc1 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -1514,10 +1514,12 @@
// request for the network.
// TODO - may want restricted requests to only apply to carrier-limited data access
// rather than applying to user limited as well.
+ // Exclude DUN for the purposes of the override until we get finer grained
+ // intention in NetworkRequests
boolean checkUserDataEnabled =
ApnSetting.isMeteredApnType(apnContext.getApnType(), mPhone.getContext(),
mPhone.getSubId(), mPhone.getServiceState().getDataRoaming()) &&
- apnContext.hasNoRestrictedRequests();
+ apnContext.hasNoRestrictedRequests(true /*exclude DUN */);
DataAllowFailReason failureReason = new DataAllowFailReason();