Merge "Add PowerWhitelistManager.getWhitelistedAppIds." into rvc-dev

This commit is contained in:
Kweku Adams
2020-03-04 00:55:23 +00:00
committed by Android (Google) Code Review
2 changed files with 38 additions and 22 deletions

View File

@@ -24,6 +24,8 @@ import android.annotation.SystemService;
import android.annotation.TestApi; import android.annotation.TestApi;
import android.content.Context; import android.content.Context;
import libcore.util.EmptyArray;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.Collections; import java.util.Collections;
@@ -99,6 +101,28 @@ public class PowerWhitelistManager {
} }
} }
/**
* Get a list of app IDs of app that are whitelisted. This does not include temporarily
* whitelisted apps.
*
* @param includingIdle Set to true if the app should be whitelisted from device idle as well
* as other power save restrictions
* @hide
*/
@NonNull
public int[] getWhitelistedAppIds(boolean includingIdle) {
try {
if (includingIdle) {
return mService.getAppIdWhitelist();
} else {
return mService.getAppIdWhitelistExceptIdle();
}
} catch (RemoteException e) {
e.rethrowFromSystemServer();
return EmptyArray.INT;
}
}
/** /**
* Add an app to the temporary whitelist for a short amount of time. * Add an app to the temporary whitelist for a short amount of time.
* *

View File

@@ -171,7 +171,6 @@ import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerExecutor; import android.os.HandlerExecutor;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.IDeviceIdleController;
import android.os.INetworkManagementService; import android.os.INetworkManagementService;
import android.os.Message; import android.os.Message;
import android.os.MessageQueue.IdleHandler; import android.os.MessageQueue.IdleHandler;
@@ -180,11 +179,11 @@ import android.os.PowerManager;
import android.os.PowerManager.ServiceType; import android.os.PowerManager.ServiceType;
import android.os.PowerManagerInternal; import android.os.PowerManagerInternal;
import android.os.PowerSaveState; import android.os.PowerSaveState;
import android.os.PowerWhitelistManager;
import android.os.Process; import android.os.Process;
import android.os.RemoteCallbackList; import android.os.RemoteCallbackList;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ResultReceiver; import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.ShellCallback; import android.os.ShellCallback;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.SystemProperties; import android.os.SystemProperties;
@@ -411,7 +410,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private IConnectivityManager mConnManager; private IConnectivityManager mConnManager;
private PowerManagerInternal mPowerManagerInternal; private PowerManagerInternal mPowerManagerInternal;
private IDeviceIdleController mDeviceIdleController; private PowerWhitelistManager mPowerWhitelistManager;
/** Current cached value of the current Battery Saver mode's setting for restrict background. */ /** Current cached value of the current Battery Saver mode's setting for restrict background. */
@GuardedBy("mUidRulesFirstLock") @GuardedBy("mUidRulesFirstLock")
@@ -618,8 +617,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
mContext = Objects.requireNonNull(context, "missing context"); mContext = Objects.requireNonNull(context, "missing context");
mActivityManager = Objects.requireNonNull(activityManager, "missing activityManager"); mActivityManager = Objects.requireNonNull(activityManager, "missing activityManager");
mNetworkManager = Objects.requireNonNull(networkManagement, "missing networkManagement"); mNetworkManager = Objects.requireNonNull(networkManagement, "missing networkManagement");
mDeviceIdleController = IDeviceIdleController.Stub.asInterface(ServiceManager.getService( mPowerWhitelistManager = mContext.getSystemService(PowerWhitelistManager.class);
Context.DEVICE_IDLE_CONTROLLER));
mClock = Objects.requireNonNull(clock, "missing Clock"); mClock = Objects.requireNonNull(clock, "missing Clock");
mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
@@ -651,25 +649,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
} }
@GuardedBy("mUidRulesFirstLock") @GuardedBy("mUidRulesFirstLock")
void updatePowerSaveWhitelistUL() { private void updatePowerSaveWhitelistUL() {
try { int[] whitelist = mPowerWhitelistManager.getWhitelistedAppIds(/* includingIdle */ false);
int[] whitelist = mDeviceIdleController.getAppIdWhitelistExceptIdle();
mPowerSaveWhitelistExceptIdleAppIds.clear(); mPowerSaveWhitelistExceptIdleAppIds.clear();
if (whitelist != null) {
for (int uid : whitelist) { for (int uid : whitelist) {
mPowerSaveWhitelistExceptIdleAppIds.put(uid, true); mPowerSaveWhitelistExceptIdleAppIds.put(uid, true);
} }
}
whitelist = mDeviceIdleController.getAppIdWhitelist(); whitelist = mPowerWhitelistManager.getWhitelistedAppIds(/* includingIdle */ true);
mPowerSaveWhitelistAppIds.clear(); mPowerSaveWhitelistAppIds.clear();
if (whitelist != null) {
for (int uid : whitelist) { for (int uid : whitelist) {
mPowerSaveWhitelistAppIds.put(uid, true); mPowerSaveWhitelistAppIds.put(uid, true);
} }
} }
} catch (RemoteException e) {
}
}
/** /**
* Whitelists pre-defined apps for restrict background, but only if the user didn't already * Whitelists pre-defined apps for restrict background, but only if the user didn't already