Merge "Simplify HIDDEN_API_ENFORCEMENT_ flags"
This commit is contained in:
@@ -27,7 +27,6 @@ import android.content.Context;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
@@ -1155,11 +1154,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
* system apps.
|
||||
* @hide
|
||||
*/
|
||||
public static final int HIDDEN_API_ENFORCEMENT_NONE = 0;
|
||||
public static final int HIDDEN_API_ENFORCEMENT_DISABLED = 0;
|
||||
/**
|
||||
* No API enforcement, but enable the detection logic and warnings. Observed behaviour is the
|
||||
* same as {@link #HIDDEN_API_ENFORCEMENT_NONE} but you may see warnings in the log when APIs
|
||||
* are accessed.
|
||||
* same as {@link #HIDDEN_API_ENFORCEMENT_DISABLED} but you may see warnings in the log when
|
||||
* APIs are accessed.
|
||||
* @hide
|
||||
* */
|
||||
public static final int HIDDEN_API_ENFORCEMENT_JUST_WARN = 1;
|
||||
@@ -1167,14 +1166,10 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
* Dark grey list enforcement. Enforces the dark grey and black lists
|
||||
* @hide
|
||||
*/
|
||||
public static final int HIDDEN_API_ENFORCEMENT_DARK_GREY_AND_BLACK = 2;
|
||||
/**
|
||||
* Blacklist enforcement only.
|
||||
* @hide
|
||||
*/
|
||||
public static final int HIDDEN_API_ENFORCEMENT_BLACK = 3;
|
||||
public static final int HIDDEN_API_ENFORCEMENT_ENABLED = 2;
|
||||
|
||||
private static final int HIDDEN_API_ENFORCEMENT_MAX = HIDDEN_API_ENFORCEMENT_BLACK;
|
||||
private static final int HIDDEN_API_ENFORCEMENT_MIN = HIDDEN_API_ENFORCEMENT_DEFAULT;
|
||||
private static final int HIDDEN_API_ENFORCEMENT_MAX = HIDDEN_API_ENFORCEMENT_ENABLED;
|
||||
|
||||
/**
|
||||
* Values in this IntDef MUST be kept in sync with enum hiddenapi::EnforcementPolicy in
|
||||
@@ -1183,17 +1178,16 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
*/
|
||||
@IntDef(prefix = { "HIDDEN_API_ENFORCEMENT_" }, value = {
|
||||
HIDDEN_API_ENFORCEMENT_DEFAULT,
|
||||
HIDDEN_API_ENFORCEMENT_NONE,
|
||||
HIDDEN_API_ENFORCEMENT_DISABLED,
|
||||
HIDDEN_API_ENFORCEMENT_JUST_WARN,
|
||||
HIDDEN_API_ENFORCEMENT_DARK_GREY_AND_BLACK,
|
||||
HIDDEN_API_ENFORCEMENT_BLACK,
|
||||
HIDDEN_API_ENFORCEMENT_ENABLED,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface HiddenApiEnforcementPolicy {}
|
||||
|
||||
/** @hide */
|
||||
public static boolean isValidHiddenApiEnforcementPolicy(int policy) {
|
||||
return policy >= HIDDEN_API_ENFORCEMENT_DEFAULT && policy <= HIDDEN_API_ENFORCEMENT_MAX;
|
||||
return policy >= HIDDEN_API_ENFORCEMENT_MIN && policy <= HIDDEN_API_ENFORCEMENT_MAX;
|
||||
}
|
||||
|
||||
private int mHiddenApiPolicy = HIDDEN_API_ENFORCEMENT_DEFAULT;
|
||||
@@ -1733,16 +1727,12 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
*/
|
||||
public @HiddenApiEnforcementPolicy int getHiddenApiEnforcementPolicy() {
|
||||
if (isAllowedToUseHiddenApis()) {
|
||||
return HIDDEN_API_ENFORCEMENT_NONE;
|
||||
return HIDDEN_API_ENFORCEMENT_DISABLED;
|
||||
}
|
||||
if (mHiddenApiPolicy != HIDDEN_API_ENFORCEMENT_DEFAULT) {
|
||||
return mHiddenApiPolicy;
|
||||
}
|
||||
if (targetSdkVersion < Build.VERSION_CODES.P) {
|
||||
return HIDDEN_API_ENFORCEMENT_BLACK;
|
||||
} else {
|
||||
return HIDDEN_API_ENFORCEMENT_DARK_GREY_AND_BLACK;
|
||||
}
|
||||
return HIDDEN_API_ENFORCEMENT_ENABLED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1761,23 +1751,15 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
|
||||
* This will have no effect if this app is not subject to hidden API enforcement, i.e. if it
|
||||
* is on the package whitelist.
|
||||
*
|
||||
* @param policyPreP configured policy for pre-P apps, or {@link
|
||||
* #HIDDEN_API_ENFORCEMENT_DEFAULT} if nothing configured.
|
||||
* @param policyP configured policy for apps targeting P or later, or {@link
|
||||
* #HIDDEN_API_ENFORCEMENT_DEFAULT} if nothing configured.
|
||||
* @param policy configured policy for this app, or {@link #HIDDEN_API_ENFORCEMENT_DEFAULT}
|
||||
* if nothing configured.
|
||||
* @hide
|
||||
*/
|
||||
public void maybeUpdateHiddenApiEnforcementPolicy(
|
||||
@HiddenApiEnforcementPolicy int policyPreP, @HiddenApiEnforcementPolicy int policyP) {
|
||||
public void maybeUpdateHiddenApiEnforcementPolicy(@HiddenApiEnforcementPolicy int policy) {
|
||||
if (isPackageWhitelistedForHiddenApis()) {
|
||||
return;
|
||||
}
|
||||
if (targetSdkVersion < Build.VERSION_CODES.P) {
|
||||
setHiddenApiEnforcementPolicy(policyPreP);
|
||||
} else if (targetSdkVersion >= Build.VERSION_CODES.P) {
|
||||
setHiddenApiEnforcementPolicy(policyP);
|
||||
}
|
||||
|
||||
setHiddenApiEnforcementPolicy(policy);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12166,27 +12166,14 @@ public final class Settings {
|
||||
"hidden_api_access_log_sampling_rate";
|
||||
|
||||
/**
|
||||
* Hidden API enforcement policy for apps targeting SDK versions prior to the latest
|
||||
* version.
|
||||
* Hidden API enforcement policy for apps.
|
||||
*
|
||||
* Values correspond to @{@link
|
||||
* android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final String HIDDEN_API_POLICY_PRE_P_APPS =
|
||||
"hidden_api_policy_pre_p_apps";
|
||||
|
||||
/**
|
||||
* Hidden API enforcement policy for apps targeting the current SDK version.
|
||||
*
|
||||
* Values correspond to @{@link
|
||||
* android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final String HIDDEN_API_POLICY_P_APPS =
|
||||
"hidden_api_policy_p_apps";
|
||||
public static final String HIDDEN_API_POLICY = "hidden_api_policy";
|
||||
|
||||
/**
|
||||
* Timeout for a single {@link android.media.soundtrigger.SoundTriggerDetectionService}
|
||||
|
||||
@@ -256,8 +256,7 @@ public class SettingsBackupTest {
|
||||
Settings.Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED,
|
||||
Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED,
|
||||
Settings.Global.HIDDEN_API_ACCESS_LOG_SAMPLING_RATE,
|
||||
Settings.Global.HIDDEN_API_POLICY_P_APPS,
|
||||
Settings.Global.HIDDEN_API_POLICY_PRE_P_APPS,
|
||||
Settings.Global.HIDDEN_API_POLICY,
|
||||
Settings.Global.HIDE_ERROR_DIALOGS,
|
||||
Settings.Global.HTTP_PROXY,
|
||||
HYBRID_SYSUI_BATTERY_WARNING_FLAGS,
|
||||
|
||||
@@ -2919,8 +2919,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
private String mExemptionsStr;
|
||||
private List<String> mExemptions = Collections.emptyList();
|
||||
private int mLogSampleRate = -1;
|
||||
@HiddenApiEnforcementPolicy private int mPolicyPreP = HIDDEN_API_ENFORCEMENT_DEFAULT;
|
||||
@HiddenApiEnforcementPolicy private int mPolicyP = HIDDEN_API_ENFORCEMENT_DEFAULT;
|
||||
@HiddenApiEnforcementPolicy private int mPolicy = HIDDEN_API_ENFORCEMENT_DEFAULT;
|
||||
|
||||
public HiddenApiSettings(Handler handler, Context context) {
|
||||
super(handler);
|
||||
@@ -2937,11 +2936,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
false,
|
||||
this);
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Global.getUriFor(Settings.Global.HIDDEN_API_POLICY_PRE_P_APPS),
|
||||
false,
|
||||
this);
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Global.getUriFor(Settings.Global.HIDDEN_API_POLICY_P_APPS),
|
||||
Settings.Global.getUriFor(Settings.Global.HIDDEN_API_POLICY),
|
||||
false,
|
||||
this);
|
||||
update();
|
||||
@@ -2976,8 +2971,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
mLogSampleRate = logSampleRate;
|
||||
zygoteProcess.setHiddenApiAccessLogSampleRate(mLogSampleRate);
|
||||
}
|
||||
mPolicyPreP = getValidEnforcementPolicy(Settings.Global.HIDDEN_API_POLICY_PRE_P_APPS);
|
||||
mPolicyP = getValidEnforcementPolicy(Settings.Global.HIDDEN_API_POLICY_P_APPS);
|
||||
mPolicy = getValidEnforcementPolicy(Settings.Global.HIDDEN_API_POLICY);
|
||||
}
|
||||
|
||||
private @HiddenApiEnforcementPolicy int getValidEnforcementPolicy(String settingsKey) {
|
||||
@@ -2994,12 +2988,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
return mBlacklistDisabled;
|
||||
}
|
||||
|
||||
@HiddenApiEnforcementPolicy int getPolicyForPrePApps() {
|
||||
return mPolicyPreP;
|
||||
}
|
||||
|
||||
@HiddenApiEnforcementPolicy int getPolicyForPApps() {
|
||||
return mPolicyP;
|
||||
@HiddenApiEnforcementPolicy int getPolicy() {
|
||||
return mPolicy;
|
||||
}
|
||||
|
||||
public void onChange(boolean selfChange) {
|
||||
@@ -4328,9 +4318,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
}
|
||||
|
||||
if (!disableHiddenApiChecks && !mHiddenApiBlacklist.isDisabled()) {
|
||||
app.info.maybeUpdateHiddenApiEnforcementPolicy(
|
||||
mHiddenApiBlacklist.getPolicyForPrePApps(),
|
||||
mHiddenApiBlacklist.getPolicyForPApps());
|
||||
app.info.maybeUpdateHiddenApiEnforcementPolicy(mHiddenApiBlacklist.getPolicy());
|
||||
@HiddenApiEnforcementPolicy int policy =
|
||||
app.info.getHiddenApiEnforcementPolicy();
|
||||
int policyBits = (policy << Zygote.API_ENFORCEMENT_POLICY_SHIFT);
|
||||
|
||||
@@ -48,7 +48,7 @@ import java.util.Map;
|
||||
|
||||
import dalvik.system.DexFile;
|
||||
|
||||
import static android.content.pm.ApplicationInfo.HIDDEN_API_ENFORCEMENT_NONE;
|
||||
import static android.content.pm.ApplicationInfo.HIDDEN_API_ENFORCEMENT_DISABLED;
|
||||
|
||||
import static com.android.server.pm.Installer.DEXOPT_BOOTCOMPLETE;
|
||||
import static com.android.server.pm.Installer.DEXOPT_DEBUGGABLE;
|
||||
@@ -540,7 +540,7 @@ public class PackageDexOptimizer {
|
||||
// Some apps are executed with restrictions on hidden API usage. If this app is one
|
||||
// of them, pass a flag to dexopt to enable the same restrictions during compilation.
|
||||
// TODO we should pass the actual flag value to dexopt, rather than assuming blacklist
|
||||
int hiddenApiFlag = info.getHiddenApiEnforcementPolicy() == HIDDEN_API_ENFORCEMENT_NONE
|
||||
int hiddenApiFlag = info.getHiddenApiEnforcementPolicy() == HIDDEN_API_ENFORCEMENT_DISABLED
|
||||
? 0
|
||||
: DEXOPT_ENABLE_HIDDEN_API_CHECKS;
|
||||
// Avoid generating CompactDex for modes that are latency critical.
|
||||
|
||||
Reference in New Issue
Block a user