Merge "Tethering and Data Saver: There Can Be Only One!" into nyc-dev
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index f06583b..0287332 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -31,7 +31,6 @@
import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL;
import static android.net.NetworkPolicyManager.RULE_REJECT_ALL;
import static android.net.NetworkPolicyManager.RULE_REJECT_METERED;
-
import android.annotation.Nullable;
import android.app.BroadcastOptions;
import android.app.Notification;
@@ -1382,6 +1381,10 @@
if (LOGD_RULES) {
log("onRestrictBackgroundChanged(restrictBackground=" + restrictBackground + ")");
}
+ if (restrictBackground) {
+ log("onRestrictBackgroundChanged(true): disabling tethering");
+ mTethering.untetherAll();
+ }
}
@Override
@@ -1813,6 +1816,14 @@
pw.decreaseIndent();
pw.println();
+ pw.println("Metered Interfaces:");
+ pw.increaseIndent();
+ for (String value : mMeteredIfaces) {
+ pw.println(value);
+ }
+ pw.decreaseIndent();
+ pw.println();
+
pw.println("Network Requests:");
pw.increaseIndent();
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
@@ -2568,7 +2579,14 @@
public int tether(String iface) {
ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) {
- return mTethering.tether(iface);
+ final int status = mTethering.tether(iface);
+ if (status == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
+ try {
+ mPolicyManager.onTetheringChanged(iface, true);
+ } catch (RemoteException e) {
+ }
+ }
+ return status;
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}
@@ -2579,7 +2597,14 @@
ConnectivityManager.enforceTetherChangePermission(mContext);
if (isTetheringSupported()) {
- return mTethering.untether(iface);
+ final int status = mTethering.untether(iface);
+ if (status == ConnectivityManager.TETHER_ERROR_NO_ERROR) {
+ try {
+ mPolicyManager.onTetheringChanged(iface, false);
+ } catch (RemoteException e) {
+ }
+ }
+ return status;
} else {
return ConnectivityManager.TETHER_ERROR_UNSUPPORTED;
}