Removed screen on/off callbacks from NPMS.

am: f8dd7b4e8d

Change-Id: I0cbf6cbbbfe8a30b6257f934b76c4e88631c0f7b
This commit is contained in:
Felipe Leme
2016-08-19 22:46:05 +00:00
committed by android-build-merger
3 changed files with 15 additions and 125 deletions

View File

@@ -133,7 +133,6 @@ import android.os.Handler;
import android.os.HandlerThread;
import android.os.IDeviceIdleController;
import android.os.INetworkManagementService;
import android.os.IPowerManager;
import android.os.Message;
import android.os.MessageQueue.IdleHandler;
import android.os.PowerManager;
@@ -286,7 +285,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
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_SCREEN_ON_CHANGED = 8;
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;
@@ -294,7 +292,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private final Context mContext;
private final IActivityManager mActivityManager;
private final IPowerManager mPowerManager;
private final INetworkStatsService mNetworkStats;
private final INetworkManagementService mNetworkManager;
private UsageStatsManagerInternal mUsageStats;
@@ -312,7 +309,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
@GuardedBy("allLocks") volatile boolean mSystemReady;
@GuardedBy("mUidRulesFirstLock") volatile boolean mScreenOn;
@GuardedBy("mUidRulesFirstLock") volatile boolean mRestrictBackground;
@GuardedBy("mUidRulesFirstLock") volatile boolean mRestrictPower;
@GuardedBy("mUidRulesFirstLock") volatile boolean mDeviceIdleMode;
@@ -418,9 +414,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// TODO: migrate notifications to SystemUI
public NetworkPolicyManagerService(Context context, IActivityManager activityManager,
IPowerManager powerManager, INetworkStatsService networkStats,
INetworkManagementService networkManagement) {
this(context, activityManager, powerManager, networkStats, networkManagement,
INetworkStatsService networkStats, INetworkManagementService networkManagement) {
this(context, activityManager, networkStats, networkManagement,
NtpTrustedTime.getInstance(context), getSystemDir(), false);
}
@@ -429,12 +424,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
public NetworkPolicyManagerService(Context context, IActivityManager activityManager,
IPowerManager powerManager, INetworkStatsService networkStats,
INetworkManagementService networkManagement, TrustedTime time, File systemDir,
boolean suppressDefaultPolicy) {
INetworkStatsService networkStats, INetworkManagementService networkManagement,
TrustedTime time, File systemDir, boolean suppressDefaultPolicy) {
mContext = checkNotNull(context, "missing context");
mActivityManager = checkNotNull(activityManager, "missing activityManager");
mPowerManager = checkNotNull(powerManager, "missing powerManager");
mNetworkStats = checkNotNull(networkStats, "missing networkStats");
mNetworkManager = checkNotNull(networkManagement, "missing networkManagement");
mDeviceIdleController = IDeviceIdleController.Stub.asInterface(ServiceManager.getService(
@@ -618,8 +611,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
updateScreenOn();
try {
mActivityManager.registerUidObserver(mUidObserver,
ActivityManager.UID_OBSERVER_PROCSTATE|ActivityManager.UID_OBSERVER_GONE);
@@ -628,14 +619,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// ignored; both services live in system_server
}
// TODO: traverse existing processes to know foreground state, or have
// activitymanager dispatch current state when new observer attached.
final IntentFilter screenFilter = new IntentFilter();
screenFilter.addAction(Intent.ACTION_SCREEN_ON);
screenFilter.addAction(Intent.ACTION_SCREEN_OFF);
mContext.registerReceiver(mScreenReceiver, screenFilter);
// listen for changes to power save whitelist
final IntentFilter whitelistFilter = new IntentFilter(
PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED);
@@ -734,15 +717,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
};
final private BroadcastReceiver mScreenReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// screen-related broadcasts are protected by system, no need
// for permissions check.
mHandler.obtainMessage(MSG_SCREEN_ON_CHANGED).sendToTarget();
}
};
final private BroadcastReceiver mPackageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -2520,7 +2494,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private boolean isUidStateForegroundUL(int state) {
// only really in foreground when screen is also on
return mScreenOn && state <= ActivityManager.PROCESS_STATE_TOP;
return state <= ActivityManager.PROCESS_STATE_TOP;
}
/**
@@ -2591,31 +2565,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
private void updateScreenOn() {
synchronized (mUidRulesFirstLock) {
try {
mScreenOn = mPowerManager.isInteractive();
} catch (RemoteException e) {
// ignored; service lives in system_server
}
updateRulesForScreenUL();
}
}
/**
* Update rules that might be changed by {@link #mScreenOn} value.
*/
private void updateRulesForScreenUL() {
// only update rules for anyone with foreground activities
final int size = mUidState.size();
for (int i = 0; i < size; i++) {
if (mUidState.valueAt(i) <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) {
final int uid = mUidState.keyAt(i);
updateRestrictionRulesForUidUL(uid);
}
}
}
static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(int procState) {
return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
}
@@ -2997,12 +2946,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
mUidRules.put(uid, newUidRules);
}
boolean changed = false;
// Second step: apply bw changes based on change of state.
if (newRule != oldRule) {
changed = true;
if ((newRule & RULE_TEMPORARY_ALLOW_METERED) != 0) {
// Temporarily whitelist foreground app, removing from blacklist if necessary
// (since bw_penalty_box prevails over bw_happy_box).
@@ -3082,7 +3027,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
final boolean isIdle = isUidIdle(uid);
final boolean restrictMode = isIdle || mRestrictPower || mDeviceIdleMode;
final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE);
final int oldUidRules = mUidRules.get(uid, RULE_NONE);
final boolean isForeground = isUidForegroundOnRestrictPowerUL(uid);
@@ -3105,7 +3049,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
final int newUidRules = (oldUidRules & MASK_METERED_NETWORKS) | newRule;
if (LOGV) {
Log.v(TAG, "updateRulesForNonMeteredNetworksUL(" + uid + ")"
Log.v(TAG, "updateRulesForPowerRestrictionsUL(" + uid + ")"
+ ", isIdle: " + isIdle
+ ", mRestrictPower: " + mRestrictPower
+ ", mDeviceIdleMode: " + mDeviceIdleMode
@@ -3347,10 +3291,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
return true;
}
case MSG_SCREEN_ON_CHANGED: {
updateScreenOn();
return true;
}
case MSG_UPDATE_INTERFACE_QUOTA: {
removeInterfaceQuota((String) msg.obj);
// int params need to be stitched back into a long

View File

@@ -809,10 +809,8 @@ public final class SystemServer {
traceBeginAndSlog("StartNetworkPolicyManagerService");
try {
networkPolicy = new NetworkPolicyManagerService(
context, mActivityManagerService,
(IPowerManager)ServiceManager.getService(Context.POWER_SERVICE),
networkStats, networkManagement);
networkPolicy = new NetworkPolicyManagerService(context,
mActivityManagerService, networkStats, networkManagement);
ServiceManager.addService(Context.NETWORK_POLICY_SERVICE, networkPolicy);
} catch (Throwable e) {
reportWtf("starting NetworkPolicy Service", e);

View File

@@ -69,7 +69,6 @@ import android.net.NetworkStats;
import android.net.NetworkTemplate;
import android.os.Binder;
import android.os.INetworkManagementService;
import android.os.IPowerManager;
import android.os.MessageQueue.IdleHandler;
import android.os.UserHandle;
import android.test.AndroidTestCase;
@@ -115,7 +114,6 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
private File mPolicyDir;
private IActivityManager mActivityManager;
private IPowerManager mPowerManager;
private INetworkStatsService mStatsService;
private INetworkManagementService mNetworkManager;
private INetworkPolicyListener mPolicyListener;
@@ -187,7 +185,6 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
}
mActivityManager = createMock(IActivityManager.class);
mPowerManager = createMock(IPowerManager.class);
mStatsService = createMock(INetworkStatsService.class);
mNetworkManager = createMock(INetworkManagementService.class);
mPolicyListener = createMock(INetworkPolicyListener.class);
@@ -195,7 +192,7 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
mConnManager = createMock(IConnectivityManager.class);
mNotifManager = createMock(INotificationManager.class);
mService = new NetworkPolicyManagerService(mServiceContext, mActivityManager, mPowerManager,
mService = new NetworkPolicyManagerService(mServiceContext, mActivityManager,
mStatsService, mNetworkManager, mTime, mPolicyDir, true);
mService.bindConnectivityManager(mConnManager);
mService.bindNotificationManager(mNotifManager);
@@ -217,8 +214,6 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
mNetworkManager.registerObserver(capture(networkObserver));
expectLastCall().atLeastOnce();
// expect to answer screen status during systemReady()
expect(mPowerManager.isInteractive()).andReturn(true).atLeastOnce();
expect(mNetworkManager.isBandwidthControlEnabled()).andReturn(true).atLeastOnce();
expectCurrentTime();
@@ -240,7 +235,6 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
mPolicyDir = null;
mActivityManager = null;
mPowerManager = null;
mStatsService = null;
mPolicyListener = null;
mTime = null;
@@ -312,48 +306,6 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
assertFalse(mService.isUidForeground(UID_A));
}
@Suppress
public void testScreenChangesRules() throws Exception {
Future<Void> future;
expectSetUidMeteredNetworkBlacklist(UID_A, false);
expectSetUidForeground(UID_A, true);
future = expectRulesChanged(UID_A, RULE_ALLOW_ALL);
replay();
mProcessObserver.onForegroundActivitiesChanged(PID_1, UID_A, true);
future.get();
verifyAndReset();
// push strict policy for foreground uid, verify ALLOW rule
expectSetUidMeteredNetworkBlacklist(UID_A, false);
expectSetUidForeground(UID_A, true);
future = expectRulesChanged(UID_A, RULE_ALLOW_ALL);
replay();
mService.setUidPolicy(APP_ID_A, POLICY_REJECT_METERED_BACKGROUND);
future.get();
verifyAndReset();
// now turn screen off and verify REJECT rule
expect(mPowerManager.isInteractive()).andReturn(false).atLeastOnce();
expectSetUidMeteredNetworkBlacklist(UID_A, true);
expectSetUidForeground(UID_A, false);
future = expectRulesChanged(UID_A, RULE_REJECT_METERED);
replay();
mServiceContext.sendBroadcast(new Intent(Intent.ACTION_SCREEN_OFF));
future.get();
verifyAndReset();
// and turn screen back on, verify ALLOW rule restored
expect(mPowerManager.isInteractive()).andReturn(true).atLeastOnce();
expectSetUidMeteredNetworkBlacklist(UID_A, false);
expectSetUidForeground(UID_A, true);
future = expectRulesChanged(UID_A, RULE_ALLOW_ALL);
replay();
mServiceContext.sendBroadcast(new Intent(Intent.ACTION_SCREEN_ON));
future.get();
verifyAndReset();
}
@Suppress
public void testPolicyNone() throws Exception {
Future<Void> future;
@@ -1049,14 +1001,14 @@ public class NetworkPolicyManagerServiceTest extends AndroidTestCase {
}
private void replay() {
EasyMock.replay(mActivityManager, mPowerManager, mStatsService, mPolicyListener,
mNetworkManager, mTime, mConnManager, mNotifManager);
EasyMock.replay(mActivityManager, mStatsService, mPolicyListener, mNetworkManager, mTime,
mConnManager, mNotifManager);
}
private void verifyAndReset() {
EasyMock.verify(mActivityManager, mPowerManager, mStatsService, mPolicyListener,
mNetworkManager, mTime, mConnManager, mNotifManager);
EasyMock.reset(mActivityManager, mPowerManager, mStatsService, mPolicyListener,
mNetworkManager, mTime, mConnManager, mNotifManager);
EasyMock.verify(mActivityManager, mStatsService, mPolicyListener, mNetworkManager, mTime,
mConnManager, mNotifManager);
EasyMock.reset(mActivityManager, mStatsService, mPolicyListener, mNetworkManager, mTime,
mConnManager, mNotifManager);
}
}