Merge "Use updated process capability name." into udc-dev
This commit is contained in:
@@ -630,7 +630,7 @@ public class ActivityManager {
|
||||
PROCESS_CAPABILITY_FOREGROUND_LOCATION,
|
||||
PROCESS_CAPABILITY_FOREGROUND_CAMERA,
|
||||
PROCESS_CAPABILITY_FOREGROUND_MICROPHONE,
|
||||
PROCESS_CAPABILITY_NETWORK,
|
||||
PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK,
|
||||
PROCESS_CAPABILITY_BFSL,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@@ -791,7 +791,7 @@ public class ActivityManager {
|
||||
public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
||||
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
||||
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
||||
| PROCESS_CAPABILITY_NETWORK
|
||||
| PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
|
||||
| PROCESS_CAPABILITY_BFSL;
|
||||
|
||||
/**
|
||||
@@ -810,7 +810,7 @@ public class ActivityManager {
|
||||
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
|
||||
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
||||
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
|
||||
pw.print((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-');
|
||||
pw.print((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-');
|
||||
pw.print((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ public class ActivityManager {
|
||||
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
|
||||
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
||||
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
|
||||
sb.append((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-');
|
||||
sb.append((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-');
|
||||
sb.append((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
|
||||
}
|
||||
|
||||
|
||||
@@ -528,7 +528,7 @@ public abstract class Context {
|
||||
|
||||
/**
|
||||
* Flag for {@link #bindService}: allow the process hosting the target service to gain
|
||||
* {@link ActivityManager#PROCESS_CAPABILITY_NETWORK}, which allows it be able
|
||||
* {@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK}, which allows it be able
|
||||
* to access network regardless of any power saving restrictions.
|
||||
*
|
||||
* @hide
|
||||
|
||||
@@ -475,8 +475,8 @@ public class NetworkPolicyManager {
|
||||
*
|
||||
* @param uid The UID whose status needs to be checked.
|
||||
* @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
|
||||
* {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED},
|
||||
* or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
|
||||
* {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED},
|
||||
* or {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
|
||||
* the current status of the UID.
|
||||
* @hide
|
||||
*/
|
||||
@@ -768,6 +768,28 @@ public class NetworkPolicyManager {
|
||||
return string.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default network capabilities
|
||||
* ({@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
|
||||
* ActivityManager.PROCESS_CAPABILITY_*}) of the specified process state.
|
||||
* This <b>DOES NOT</b> return all default process capabilities for a proc state.
|
||||
* @hide
|
||||
*/
|
||||
public static int getDefaultProcessNetworkCapabilities(int procState) {
|
||||
switch (procState) {
|
||||
case ActivityManager.PROCESS_STATE_PERSISTENT:
|
||||
case ActivityManager.PROCESS_STATE_PERSISTENT_UI:
|
||||
case ActivityManager.PROCESS_STATE_TOP:
|
||||
return ActivityManager.PROCESS_CAPABILITY_ALL;
|
||||
case ActivityManager.PROCESS_STATE_BOUND_TOP:
|
||||
case ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE:
|
||||
case ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE:
|
||||
return ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
default:
|
||||
return ActivityManager.PROCESS_CAPABILITY_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if {@param procState} is considered foreground and as such will be allowed
|
||||
* to access network when the device is idle or in battery saver mode. Otherwise, false.
|
||||
@@ -784,7 +806,7 @@ public class NetworkPolicyManager {
|
||||
public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(
|
||||
int procState, @ProcessCapability int capability) {
|
||||
return procState <= FOREGROUND_THRESHOLD_STATE
|
||||
|| (capability & ActivityManager.PROCESS_CAPABILITY_NETWORK) != 0;
|
||||
|| (capability & ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -19,7 +19,7 @@ package com.android.server.am;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL;
|
||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
|
||||
@@ -2014,7 +2014,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
||||
int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
||||
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
||||
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
||||
| PROCESS_CAPABILITY_NETWORK;
|
||||
| PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
|
||||
while ((opt=getNextOption()) != null) {
|
||||
if (opt.equals("--oom")) {
|
||||
|
||||
@@ -22,8 +22,8 @@ import static android.app.ActivityManager.PROCESS_CAPABILITY_BFSL;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_NONE;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY;
|
||||
@@ -117,6 +117,7 @@ import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.net.NetworkPolicyManager;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.PowerManagerInternal;
|
||||
@@ -2280,14 +2281,15 @@ public class OomAdjuster {
|
||||
// elevated to a high enough procstate anyway to get network unless they
|
||||
// request otherwise, so don't propagate the network capability by default
|
||||
// in this case unless they explicitly request it.
|
||||
if ((cstate.getCurCapability() & PROCESS_CAPABILITY_NETWORK) != 0) {
|
||||
if ((cstate.getCurCapability()
|
||||
& PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0) {
|
||||
if (clientProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE) {
|
||||
// This is used to grant network access to Expedited Jobs.
|
||||
if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) {
|
||||
capability |= PROCESS_CAPABILITY_NETWORK;
|
||||
capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
}
|
||||
} else {
|
||||
capability |= PROCESS_CAPABILITY_NETWORK;
|
||||
capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2798,27 +2800,33 @@ public class OomAdjuster {
|
||||
}
|
||||
|
||||
private int getDefaultCapability(ProcessRecord app, int procState) {
|
||||
final int networkCapabilities =
|
||||
NetworkPolicyManager.getDefaultProcessNetworkCapabilities(procState);
|
||||
final int baseCapabilities;
|
||||
switch (procState) {
|
||||
case PROCESS_STATE_PERSISTENT:
|
||||
case PROCESS_STATE_PERSISTENT_UI:
|
||||
case PROCESS_STATE_TOP:
|
||||
return PROCESS_CAPABILITY_ALL; // BFSL allowed
|
||||
baseCapabilities = PROCESS_CAPABILITY_ALL; // BFSL allowed
|
||||
break;
|
||||
case PROCESS_STATE_BOUND_TOP:
|
||||
return PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_BFSL;
|
||||
baseCapabilities = PROCESS_CAPABILITY_BFSL;
|
||||
break;
|
||||
case PROCESS_STATE_FOREGROUND_SERVICE:
|
||||
if (app.getActiveInstrumentation() != null) {
|
||||
return PROCESS_CAPABILITY_ALL_IMPLICIT | PROCESS_CAPABILITY_NETWORK ;
|
||||
baseCapabilities = PROCESS_CAPABILITY_ALL_IMPLICIT;
|
||||
} else {
|
||||
// Capability from foreground service is conditional depending on
|
||||
// foregroundServiceType in the manifest file and the
|
||||
// mAllowWhileInUsePermissionInFgs flag.
|
||||
return PROCESS_CAPABILITY_NETWORK;
|
||||
baseCapabilities = PROCESS_CAPABILITY_NONE;
|
||||
}
|
||||
case PROCESS_STATE_BOUND_FOREGROUND_SERVICE:
|
||||
return PROCESS_CAPABILITY_NETWORK;
|
||||
break;
|
||||
default:
|
||||
return PROCESS_CAPABILITY_NONE;
|
||||
baseCapabilities = PROCESS_CAPABILITY_NONE;
|
||||
break;
|
||||
}
|
||||
return baseCapabilities | networkCapabilities;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -528,7 +528,7 @@ public class ActivityManagerServiceTest {
|
||||
ActivityManager.PROCESS_CAPABILITY_NONE,
|
||||
ActivityManager.PROCESS_CAPABILITY_NONE,
|
||||
ActivityManager.PROCESS_CAPABILITY_NONE,
|
||||
ActivityManager.PROCESS_CAPABILITY_NETWORK,
|
||||
ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK,
|
||||
};
|
||||
final Map<Integer, ChangeRecord> changeItems = new HashMap<>();
|
||||
for (int i = 0; i < changesForPendingUidRecords.length; ++i) {
|
||||
|
||||
@@ -18,8 +18,8 @@ package com.android.server.am;
|
||||
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_ALL;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_NONE;
|
||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_CACHED_RECENT;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND;
|
||||
@@ -185,10 +185,10 @@ public class UidObserverControllerTest {
|
||||
verifyNoMoreInteractions(observer2);
|
||||
|
||||
addPendingChange(TEST_UID1, UidRecord.CHANGE_PROCSTATE | UidRecord.CHANGE_CAPABILITY,
|
||||
PROCESS_STATE_RECEIVER, 111, PROCESS_CAPABILITY_NETWORK, false);
|
||||
PROCESS_STATE_RECEIVER, 111, PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK, false);
|
||||
mUidObserverController.dispatchUidsChanged();
|
||||
verify(observer2).onUidStateChanged(TEST_UID1, PROCESS_STATE_RECEIVER,
|
||||
111, PROCESS_CAPABILITY_NETWORK);
|
||||
111, PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK);
|
||||
verifyNoMoreInteractions(observer1);
|
||||
verifyNoMoreInteractions(observer2);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user