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_LOCATION,
|
||||||
PROCESS_CAPABILITY_FOREGROUND_CAMERA,
|
PROCESS_CAPABILITY_FOREGROUND_CAMERA,
|
||||||
PROCESS_CAPABILITY_FOREGROUND_MICROPHONE,
|
PROCESS_CAPABILITY_FOREGROUND_MICROPHONE,
|
||||||
PROCESS_CAPABILITY_NETWORK,
|
PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK,
|
||||||
PROCESS_CAPABILITY_BFSL,
|
PROCESS_CAPABILITY_BFSL,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@@ -791,7 +791,7 @@ public class ActivityManager {
|
|||||||
public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
||||||
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
||||||
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
||||||
| PROCESS_CAPABILITY_NETWORK
|
| PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
|
||||||
| PROCESS_CAPABILITY_BFSL;
|
| 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_LOCATION) != 0 ? 'L' : '-');
|
||||||
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
||||||
pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
|
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' : '-');
|
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_LOCATION) != 0 ? 'L' : '-');
|
||||||
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
|
||||||
sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
|
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' : '-');
|
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
|
* 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.
|
* to access network regardless of any power saving restrictions.
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
|
|||||||
@@ -475,8 +475,8 @@ public class NetworkPolicyManager {
|
|||||||
*
|
*
|
||||||
* @param uid The UID whose status needs to be checked.
|
* @param uid The UID whose status needs to be checked.
|
||||||
* @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
|
* @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
|
||||||
* {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED},
|
* {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED},
|
||||||
* or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
|
* or {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
|
||||||
* the current status of the UID.
|
* the current status of the UID.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@@ -768,6 +768,28 @@ public class NetworkPolicyManager {
|
|||||||
return string.toString();
|
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
|
* 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.
|
* 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(
|
public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(
|
||||||
int procState, @ProcessCapability int capability) {
|
int procState, @ProcessCapability int capability) {
|
||||||
return procState <= FOREGROUND_THRESHOLD_STATE
|
return procState <= FOREGROUND_THRESHOLD_STATE
|
||||||
|| (capability & ActivityManager.PROCESS_CAPABILITY_NETWORK) != 0;
|
|| (capability & ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @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_CAMERA;
|
||||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
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_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.ActivityManagerInternal.ALLOW_NON_FULL;
|
||||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||||
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
|
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
|
||||||
@@ -2014,7 +2014,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
|||||||
int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION
|
||||||
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
| PROCESS_CAPABILITY_FOREGROUND_CAMERA
|
||||||
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
| PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
|
||||||
| PROCESS_CAPABILITY_NETWORK;
|
| PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||||
|
|
||||||
while ((opt=getNextOption()) != null) {
|
while ((opt=getNextOption()) != null) {
|
||||||
if (opt.equals("--oom")) {
|
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_CAMERA;
|
||||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
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_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_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_FOREGROUND_SERVICE;
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
|
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY;
|
import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY;
|
||||||
@@ -117,6 +117,7 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.ServiceInfo;
|
import android.content.pm.ServiceInfo;
|
||||||
|
import android.net.NetworkPolicyManager;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.PowerManagerInternal;
|
import android.os.PowerManagerInternal;
|
||||||
@@ -2280,14 +2281,15 @@ public class OomAdjuster {
|
|||||||
// elevated to a high enough procstate anyway to get network unless they
|
// elevated to a high enough procstate anyway to get network unless they
|
||||||
// request otherwise, so don't propagate the network capability by default
|
// request otherwise, so don't propagate the network capability by default
|
||||||
// in this case unless they explicitly request it.
|
// 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) {
|
if (clientProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE) {
|
||||||
// This is used to grant network access to Expedited Jobs.
|
// This is used to grant network access to Expedited Jobs.
|
||||||
if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) {
|
if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) {
|
||||||
capability |= PROCESS_CAPABILITY_NETWORK;
|
capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
private int getDefaultCapability(ProcessRecord app, int procState) {
|
||||||
|
final int networkCapabilities =
|
||||||
|
NetworkPolicyManager.getDefaultProcessNetworkCapabilities(procState);
|
||||||
|
final int baseCapabilities;
|
||||||
switch (procState) {
|
switch (procState) {
|
||||||
case PROCESS_STATE_PERSISTENT:
|
case PROCESS_STATE_PERSISTENT:
|
||||||
case PROCESS_STATE_PERSISTENT_UI:
|
case PROCESS_STATE_PERSISTENT_UI:
|
||||||
case PROCESS_STATE_TOP:
|
case PROCESS_STATE_TOP:
|
||||||
return PROCESS_CAPABILITY_ALL; // BFSL allowed
|
baseCapabilities = PROCESS_CAPABILITY_ALL; // BFSL allowed
|
||||||
|
break;
|
||||||
case PROCESS_STATE_BOUND_TOP:
|
case PROCESS_STATE_BOUND_TOP:
|
||||||
return PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_BFSL;
|
baseCapabilities = PROCESS_CAPABILITY_BFSL;
|
||||||
|
break;
|
||||||
case PROCESS_STATE_FOREGROUND_SERVICE:
|
case PROCESS_STATE_FOREGROUND_SERVICE:
|
||||||
if (app.getActiveInstrumentation() != null) {
|
if (app.getActiveInstrumentation() != null) {
|
||||||
return PROCESS_CAPABILITY_ALL_IMPLICIT | PROCESS_CAPABILITY_NETWORK ;
|
baseCapabilities = PROCESS_CAPABILITY_ALL_IMPLICIT;
|
||||||
} else {
|
} else {
|
||||||
// Capability from foreground service is conditional depending on
|
// Capability from foreground service is conditional depending on
|
||||||
// foregroundServiceType in the manifest file and the
|
// foregroundServiceType in the manifest file and the
|
||||||
// mAllowWhileInUsePermissionInFgs flag.
|
// mAllowWhileInUsePermissionInFgs flag.
|
||||||
return PROCESS_CAPABILITY_NETWORK;
|
baseCapabilities = PROCESS_CAPABILITY_NONE;
|
||||||
}
|
}
|
||||||
case PROCESS_STATE_BOUND_FOREGROUND_SERVICE:
|
break;
|
||||||
return PROCESS_CAPABILITY_NETWORK;
|
|
||||||
default:
|
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_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<>();
|
final Map<Integer, ChangeRecord> changeItems = new HashMap<>();
|
||||||
for (int i = 0; i < changesForPendingUidRecords.length; ++i) {
|
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_ALL;
|
||||||
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
|
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_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_CACHED_RECENT;
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
import static android.app.ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND;
|
import static android.app.ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND;
|
||||||
@@ -185,10 +185,10 @@ public class UidObserverControllerTest {
|
|||||||
verifyNoMoreInteractions(observer2);
|
verifyNoMoreInteractions(observer2);
|
||||||
|
|
||||||
addPendingChange(TEST_UID1, UidRecord.CHANGE_PROCSTATE | UidRecord.CHANGE_CAPABILITY,
|
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();
|
mUidObserverController.dispatchUidsChanged();
|
||||||
verify(observer2).onUidStateChanged(TEST_UID1, PROCESS_STATE_RECEIVER,
|
verify(observer2).onUidStateChanged(TEST_UID1, PROCESS_STATE_RECEIVER,
|
||||||
111, PROCESS_CAPABILITY_NETWORK);
|
111, PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK);
|
||||||
verifyNoMoreInteractions(observer1);
|
verifyNoMoreInteractions(observer1);
|
||||||
verifyNoMoreInteractions(observer2);
|
verifyNoMoreInteractions(observer2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user