Merge "Added a onRestrictBackgroundBlacklistChanged() callback." into nyc-dev

This commit is contained in:
TreeHugger Robot
2016-05-17 18:28:20 +00:00
committed by Android (Google) Code Review
5 changed files with 50 additions and 3 deletions

View File

@@ -23,5 +23,6 @@ oneway interface INetworkPolicyListener {
void onMeteredIfacesChanged(in String[] meteredIfaces); void onMeteredIfacesChanged(in String[] meteredIfaces);
void onRestrictBackgroundChanged(boolean restrictBackground); void onRestrictBackgroundChanged(boolean restrictBackground);
void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted); void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted);
void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted);
} }

View File

@@ -93,6 +93,9 @@ public class DataSaverController {
@Override @Override
public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) { public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
} }
@Override
public void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted) {
}
}; };
public interface Listener { public interface Listener {

View File

@@ -1445,6 +1445,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
+ 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 + ")");
}
}
}; };
/** /**

View File

@@ -178,6 +178,11 @@ public class ConnectivityController extends StateController implements
public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) { public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
updateTrackedJobs(uid); updateTrackedJobs(uid);
} }
@Override
public void onRestrictBackgroundBlacklistChanged(int uid, boolean blacklisted) {
updateTrackedJobs(uid);
}
}; };
@Override @Override

View File

@@ -266,6 +266,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private static final int MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED = 9; private static final int MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED = 9;
private static final int MSG_UPDATE_INTERFACE_QUOTA = 10; private static final int MSG_UPDATE_INTERFACE_QUOTA = 10;
private static final int MSG_REMOVE_INTERFACE_QUOTA = 11; private static final int MSG_REMOVE_INTERFACE_QUOTA = 11;
private static final int MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED = 12;
private final Context mContext; private final Context mContext;
private final IActivityManager mActivityManager; private final IActivityManager mActivityManager;
@@ -1707,9 +1708,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private void setUidPolicyUncheckedLocked(int uid, int oldPolicy, int policy, boolean persist) { private void setUidPolicyUncheckedLocked(int uid, int oldPolicy, int policy, boolean persist) {
setUidPolicyUncheckedLocked(uid, policy, persist); setUidPolicyUncheckedLocked(uid, policy, persist);
final boolean isBlacklisted = policy == POLICY_REJECT_METERED_BACKGROUND;
mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED, uid,
isBlacklisted ? 1 : 0).sendToTarget();
final boolean wasBlacklisted = oldPolicy == POLICY_REJECT_METERED_BACKGROUND;
// Checks if app was added or removed to the blacklist. // Checks if app was added or removed to the blacklist.
if ((oldPolicy == POLICY_NONE && policy == POLICY_REJECT_METERED_BACKGROUND) if ((oldPolicy == POLICY_NONE && isBlacklisted)
|| (oldPolicy == POLICY_REJECT_METERED_BACKGROUND && policy == POLICY_NONE)) { || (wasBlacklisted && policy == POLICY_NONE)) {
mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 1, null) mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 1, null)
.sendToTarget(); .sendToTarget();
} }
@@ -3096,6 +3102,16 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
} }
} }
private void dispatchRestrictBackgroundBlacklistChanged(INetworkPolicyListener listener,
int uid, boolean blacklisted) {
if (listener != null) {
try {
listener.onRestrictBackgroundBlacklistChanged(uid, blacklisted);
} catch (RemoteException ignored) {
}
}
}
private Handler.Callback mHandlerCallback = new Handler.Callback() { private Handler.Callback mHandlerCallback = new Handler.Callback() {
@Override @Override
public boolean handleMessage(Message msg) { public boolean handleMessage(Message msg) {
@@ -3186,7 +3202,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
} }
mListeners.finishBroadcast(); mListeners.finishBroadcast();
} }
final PackageManager pm = mContext.getPackageManager(); final PackageManager pm = mContext.getPackageManager();
final String[] packages = pm.getPackagesForUid(uid); final String[] packages = pm.getPackagesForUid(uid);
if (changed && packages != null) { if (changed && packages != null) {
@@ -3202,6 +3217,21 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
} }
return true; return true;
} }
case MSG_RESTRICT_BACKGROUND_BLACKLIST_CHANGED: {
final int uid = msg.arg1;
final boolean blacklisted = msg.arg2 == 1;
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);
}
mListeners.finishBroadcast();
return true;
}
case MSG_ADVISE_PERSIST_THRESHOLD: { case MSG_ADVISE_PERSIST_THRESHOLD: {
final long lowestRule = (Long) msg.obj; final long lowestRule = (Long) msg.obj;
try { try {