Refactored INetworkPolicyListener callbacks.
Methods onRestrictBackgroundWhitelistChanged() and
onRestrictBackgroundBlacklistChanged() were replaced by a more generic
onUidPoliciesChanged().
Test: m javac-check RUN_ERROR_PRONE=true
Test: m -j32 FrameworksServicesTests && adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksServicesTests/FrameworksServicesTests.apk && adb shell am instrument -e class "com.android.server.NetworkPolicyManagerServiceTest" -w "com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner"
BUG: 28791717
Change-Id: I18b2ee4af06802e0d23822b153d1be9b429d5811
diff --git a/core/java/android/net/INetworkPolicyListener.aidl b/core/java/android/net/INetworkPolicyListener.aidl
index 93463b4..005dd6e 100644
--- a/core/java/android/net/INetworkPolicyListener.aidl
+++ b/core/java/android/net/INetworkPolicyListener.aidl
@@ -22,7 +22,6 @@
void onUidRulesChanged(int uid, int uidRules);
void onMeteredIfacesChanged(in String[] meteredIfaces);
void onRestrictBackgroundChanged(boolean restrictBackground);
- void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted);
- void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted);
+ void onUidPoliciesChanged(int uid, int uidPolicies);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
index 4eb9507..0fc71d3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
@@ -74,7 +74,7 @@
private final INetworkPolicyListener mPolicyListener = new INetworkPolicyListener.Stub() {
@Override
- public void onUidRulesChanged(int i, int i1) throws RemoteException {
+ public void onUidRulesChanged(int uid, int uidRules) throws RemoteException {
}
@Override
@@ -92,10 +92,7 @@
}
@Override
- public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
- }
- @Override
- public void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted) {
+ public void onUidPoliciesChanged(int uid, int uidPolicies) throws RemoteException {
}
};
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index a739be7..b08549f 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -1538,19 +1538,10 @@
}
@Override
- public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
+ public void onUidPoliciesChanged(int uid, int uidPolicies) {
+ // caller is NPMS, since we only register with them
if (LOGD_RULES) {
- // caller is NPMS, since we only register with them
- log("onRestrictBackgroundWhitelistChanged(uid=" + uid + ", whitelisted="
- + whitelisted + ")");
- }
- }
- @Override
- public void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted) {
- if (LOGD_RULES) {
- // caller is NPMS, since we only register with them
- log("onRestrictBackgroundBlacklistChanged(uid=" + uid + ", blacklisted="
- + blacklisted + ")");
+ log("onUidRulesChanged(uid=" + uid + ", uidPolicies=" + uidPolicies + ")");
}
}
};
diff --git a/services/core/java/com/android/server/job/controllers/ConnectivityController.java b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
index 7120191..b65330a 100644
--- a/services/core/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/services/core/java/com/android/server/job/controllers/ConnectivityController.java
@@ -176,12 +176,7 @@
}
@Override
- public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
- updateTrackedJobs(uid);
- }
-
- @Override
- public void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted) {
+ public void onUidPoliciesChanged(int uid, int uidPolicies) {
updateTrackedJobs(uid);
}
};
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index ef780bc..cdecd2c 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -287,10 +287,9 @@
private static final int MSG_LIMIT_REACHED = 5;
private static final int MSG_RESTRICT_BACKGROUND_CHANGED = 6;
private static final int MSG_ADVISE_PERSIST_THRESHOLD = 7;
- private static final int MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED = 9;
private static final int MSG_UPDATE_INTERFACE_QUOTA = 10;
private static final int MSG_REMOVE_INTERFACE_QUOTA = 11;
- private static final int MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED = 12;
+ private static final int MSG_POLICIES_CHANGED = 13;
private final Context mContext;
private final IActivityManager mActivityManager;
@@ -1769,26 +1768,20 @@
private void setUidPolicyUncheckedUL(int uid, int oldPolicy, int policy, boolean persist) {
setUidPolicyUncheckedUL(uid, policy, persist);
- final boolean wasBlacklisted = oldPolicy == POLICY_REJECT_METERED_BACKGROUND;
- final boolean isBlacklisted = policy == POLICY_REJECT_METERED_BACKGROUND;
- final boolean wasWhitelisted = oldPolicy == POLICY_ALLOW_METERED_BACKGROUND;
- final boolean isWhitelisted = policy == POLICY_ALLOW_METERED_BACKGROUND;
final boolean notifyApp;
if (!isUidValidForWhitelistRules(uid)) {
notifyApp = false;
} else {
+ final boolean wasBlacklisted = oldPolicy == POLICY_REJECT_METERED_BACKGROUND;
+ final boolean isBlacklisted = policy == POLICY_REJECT_METERED_BACKGROUND;
+ final boolean wasWhitelisted = oldPolicy == POLICY_ALLOW_METERED_BACKGROUND;
+ final boolean isWhitelisted = policy == POLICY_ALLOW_METERED_BACKGROUND;
final boolean wasBlocked = wasBlacklisted || (mRestrictBackground && !wasWhitelisted);
final boolean isBlocked = isBlacklisted || (mRestrictBackground && !isWhitelisted);
notifyApp = wasBlocked != isBlocked;
}
- if (isBlacklisted != wasBlacklisted) {
- mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED, uid,
- isBlacklisted ? 1 : 0, Boolean.valueOf(notifyApp)).sendToTarget();
- }
- if (isWhitelisted != wasWhitelisted) {
- mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid,
- isWhitelisted ? 1 : 0, Boolean.valueOf(notifyApp)).sendToTarget();
- }
+ mHandler.obtainMessage(MSG_POLICIES_CHANGED, uid, policy, Boolean.valueOf(notifyApp))
+ .sendToTarget();
}
private void setUidPolicyUncheckedUL(int uid, int policy, boolean persist) {
@@ -3077,21 +3070,11 @@
}
}
- private void dispatchRestrictBackgroundWhitelistChanged(INetworkPolicyListener listener,
- int uid, boolean whitelisted) {
+ private void dispatchUidPoliciesChanged(INetworkPolicyListener listener, int uid,
+ int uidPolicies) {
if (listener != null) {
try {
- listener.onRestrictBackgroundWhitelistChanged(uid, whitelisted);
- } catch (RemoteException ignored) {
- }
- }
- }
-
- private void dispatchRestrictBackgroundBlacklistChanged(INetworkPolicyListener listener,
- int uid, boolean blacklisted) {
- if (listener != null) {
- try {
- listener.onRestrictBackgroundBlacklistChanged(uid, blacklisted);
+ listener.onUidPoliciesChanged(uid, uidPolicies);
} catch (RemoteException ignored) {
}
}
@@ -3159,37 +3142,16 @@
mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
return true;
}
- case MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED: {
+ case MSG_POLICIES_CHANGED: {
final int uid = msg.arg1;
- final boolean whitelisted = msg.arg2 == 1;
+ final int policy = msg.arg2;
final Boolean notifyApp = (Boolean) msg.obj;
// First notify internal listeners...
- dispatchRestrictBackgroundWhitelistChanged(mConnectivityListener, uid,
- whitelisted);
+ dispatchUidPoliciesChanged(mConnectivityListener, uid, policy);
final int length = mListeners.beginBroadcast();
for (int i = 0; i < length; i++) {
final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
- dispatchRestrictBackgroundWhitelistChanged(listener, uid, whitelisted);
- }
- mListeners.finishBroadcast();
- // ...then apps listening to ACTION_RESTRICT_BACKGROUND_CHANGED
- if (notifyApp.booleanValue()) {
- broadcastRestrictBackgroundChanged(uid, notifyApp);
- }
- return true;
- }
- case MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED: {
- final int uid = msg.arg1;
- final boolean blacklisted = msg.arg2 == 1;
- final Boolean notifyApp = (Boolean) msg.obj;
- // First notify internal listeners...
- dispatchRestrictBackgroundBlacklistChanged(mConnectivityListener, uid,
- blacklisted);
- final int length = mListeners.beginBroadcast();
- for (int i = 0; i < length; i++) {
- final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
- dispatchRestrictBackgroundBlacklistChanged(listener, uid,
- blacklisted);
+ dispatchUidPoliciesChanged(listener, uid, policy);
}
mListeners.finishBroadcast();
// ...then apps listening to ACTION_RESTRICT_BACKGROUND_CHANGED
diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
index f3919fd..6c52d41 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
@@ -344,14 +344,14 @@
assertUidPolicy(UID_A, POLICY_NONE);
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
- mPolicyListener.expect().onRestrictBackgroundWhitelistChanged(anyInt(), anyBoolean());
+ mPolicyListener.expect().onUidPoliciesChanged(anyInt(), anyInt());
mService.setUidPolicy(UID_A, POLICY_ALLOW_METERED_BACKGROUND);
assertWhitelistUids(UID_A);
assertUidPolicy(UID_A, POLICY_ALLOW_METERED_BACKGROUND);
- mPolicyListener.waitAndVerify().onRestrictBackgroundWhitelistChanged(APP_ID_A, true);
- mPolicyListener.verifyNotCalled().onRestrictBackgroundBlacklistChanged(APP_ID_A, true);
+ mPolicyListener.waitAndVerify()
+ .onUidPoliciesChanged(APP_ID_A, POLICY_ALLOW_METERED_BACKGROUND);
if (expectIntent) {
assertRestrictBackgroundChangedReceived(futureIntent, PKG_NAME_A);
} else {
@@ -385,14 +385,13 @@
assertUidPolicy(UID_A, POLICY_ALLOW_METERED_BACKGROUND);
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
- mPolicyListener.expect().onRestrictBackgroundWhitelistChanged(anyInt(), anyBoolean());
+ mPolicyListener.expect().onUidPoliciesChanged(anyInt(), anyInt());
mService.setUidPolicy(UID_A, POLICY_NONE);
assertWhitelistUids();
assertUidPolicy(UID_A, POLICY_NONE);
- mPolicyListener.waitAndVerify().onRestrictBackgroundWhitelistChanged(APP_ID_A, false);
- mPolicyListener.verifyNotCalled().onRestrictBackgroundBlacklistChanged(APP_ID_A, false);
+ mPolicyListener.waitAndVerify().onUidPoliciesChanged(APP_ID_A, POLICY_NONE);
if (expectIntent) {
assertRestrictBackgroundChangedReceived(futureIntent, PKG_NAME_A);
} else {
@@ -422,13 +421,13 @@
private void addRestrictBackgroundBlacklist(boolean expectIntent) throws Exception {
assertUidPolicy(UID_A, POLICY_NONE); // Sanity check.
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
- mPolicyListener.expect().onRestrictBackgroundBlacklistChanged(anyInt(), anyBoolean());
+ mPolicyListener.expect().onUidPoliciesChanged(anyInt(), anyInt());
mService.setUidPolicy(UID_A, POLICY_REJECT_METERED_BACKGROUND);
assertUidPolicy(UID_A, POLICY_REJECT_METERED_BACKGROUND);
- mPolicyListener.waitAndVerify().onRestrictBackgroundBlacklistChanged(APP_ID_A, true);
- mPolicyListener.verifyNotCalled().onRestrictBackgroundWhitelistChanged(APP_ID_A, true);
+ mPolicyListener.waitAndVerify()
+ .onUidPoliciesChanged(APP_ID_A, POLICY_REJECT_METERED_BACKGROUND);
if (expectIntent) {
assertRestrictBackgroundChangedReceived(futureIntent, PKG_NAME_A);
} else {
@@ -459,13 +458,13 @@
private void removeRestrictBackgroundBlacklist(boolean expectIntent) throws Exception {
assertUidPolicy(UID_A, POLICY_REJECT_METERED_BACKGROUND); // Sanity check.
final FutureIntent futureIntent = newRestrictBackgroundChangedFuture();
- mPolicyListener.expect().onRestrictBackgroundBlacklistChanged(anyInt(), anyBoolean());
+ mPolicyListener.expect().onUidPoliciesChanged(anyInt(), anyInt());
mService.setUidPolicy(UID_A, POLICY_NONE);
assertUidPolicy(UID_A, POLICY_NONE);
- mPolicyListener.waitAndVerify().onRestrictBackgroundBlacklistChanged(APP_ID_A, false);
- mPolicyListener.verifyNotCalled().onRestrictBackgroundWhitelistChanged(APP_ID_A, false);
+ mPolicyListener.waitAndVerify()
+ .onUidPoliciesChanged(APP_ID_A, POLICY_NONE);
if (expectIntent) {
assertRestrictBackgroundChangedReceived(futureIntent, PKG_NAME_A);
} else {
@@ -578,21 +577,10 @@
UID_C, UID_D, UID_F);
}
- // NOTE: testPolicyChangeTriggersListener() and testUidForeground() are too superficial, they
+ // NOTE: testPolicyChangeTriggersListener() is too superficial, they
// don't check for side-effects (like calls to NetworkManagementService) neither cover all
// different modes (Data Saver, Battery Saver, Doze, App idle, etc...).
// These scenarios are extensively tested on CTS' HostsideRestrictBackgroundNetworkTests.
-
- @Test
- public void testPolicyChangeTriggersListener() throws Exception {
- mPolicyListener.expect().onRestrictBackgroundBlacklistChanged(anyInt(), anyBoolean());
-
- mService.setUidPolicy(APP_ID_A, POLICY_NONE);
- mService.setUidPolicy(APP_ID_A, POLICY_REJECT_METERED_BACKGROUND);
-
- mPolicyListener.waitAndVerify().onRestrictBackgroundBlacklistChanged(APP_ID_A, true);
- }
-
@Test
public void testUidForeground() throws Exception {
// push all uids into background