Merge "[automerger skipped] Merge "Initialise hidden api usage logger pre-fork" am: 763747b7ce am: c14670fc8e am: 6706993777 -s ours am skip reason: change_id I80f82092ef779a7dc1f1322cb7c05ebf5e59939b with SHA1 6cd1b70a1e is in history"
diff --git a/api/system-current.txt b/api/system-current.txt
index 8989344..bec7acc 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -5859,10 +5859,10 @@
field public static final String NAMESPACE = "content_capture";
}
- public static interface DeviceConfig.FsiBoot {
- field public static final String NAMESPACE = "fsi_boot";
- field public static final String OOB_ENABLED = "oob_enabled";
- field public static final String OOB_WHITELIST = "oob_whitelist";
+ public static interface DeviceConfig.DexBoot {
+ field public static final String NAMESPACE = "dex_boot";
+ field public static final String PRIV_APPS_OOB_ENABLED = "priv_apps_oob_enabled";
+ field public static final String PRIV_APPS_OOB_WHITELIST = "priv_apps_oob_whitelist";
}
public static interface DeviceConfig.IntelligenceAttention {
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index 0b23fe3e..f8c355b 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -218,16 +218,15 @@
}
/**
- * Namespace for Full Stack Integrity to run privileged apps only in JIT mode. The flag applies
- * at process start, so reboot is a way to bring the device to a clean state.
+ * Namespace for how dex runs. The feature may requires reboot to a clean state.
*
* @hide
*/
@SystemApi
- public interface FsiBoot {
- String NAMESPACE = "fsi_boot";
- String OOB_ENABLED = "oob_enabled";
- String OOB_WHITELIST = "oob_whitelist";
+ public interface DexBoot {
+ String NAMESPACE = "dex_boot";
+ String PRIV_APPS_OOB_ENABLED = "priv_apps_oob_enabled";
+ String PRIV_APPS_OOB_WHITELIST = "priv_apps_oob_whitelist";
}
/**
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index 81fce8a..866325c 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -426,6 +426,9 @@
if (err == BAD_VALUE || err == ERROR_DRM_CANNOT_HANDLE) {
jniThrowException(env, "java/lang/IllegalArgumentException", msg);
return true;
+ } else if (err == ERROR_UNSUPPORTED) {
+ jniThrowException(env, "java/lang/UnsupportedOperationException", msg);
+ return true;
} else if (err == ERROR_DRM_NOT_PROVISIONED) {
jniThrowException(env, "android/media/NotProvisionedException", msg);
return true;
@@ -542,15 +545,15 @@
// static
-bool JDrm::IsCryptoSchemeSupported(const uint8_t uuid[16], const String8 &mimeType,
- DrmPlugin::SecurityLevel securityLevel) {
+status_t JDrm::IsCryptoSchemeSupported(const uint8_t uuid[16], const String8 &mimeType,
+ DrmPlugin::SecurityLevel securityLevel, bool *isSupported) {
sp<IDrm> drm = MakeDrm();
if (drm == NULL) {
- return false;
+ return BAD_VALUE;
}
- return drm->isCryptoSchemeSupported(uuid, mimeType, securityLevel);
+ return drm->isCryptoSchemeSupported(uuid, mimeType, securityLevel, isSupported);
}
status_t JDrm::initCheck() const {
@@ -977,7 +980,14 @@
}
DrmPlugin::SecurityLevel securityLevel = jintToSecurityLevel(jSecurityLevel);
- return JDrm::IsCryptoSchemeSupported(uuid.array(), mimeType, securityLevel);
+ bool isSupported;
+ status_t err = JDrm::IsCryptoSchemeSupported(uuid.array(), mimeType,
+ securityLevel, &isSupported);
+
+ if (throwExceptionAsNecessary(env, err, "Failed to query crypto scheme support")) {
+ return false;
+ }
+ return isSupported;
}
static jbyteArray android_media_MediaDrm_openSession(
diff --git a/media/jni/android_media_MediaDrm.h b/media/jni/android_media_MediaDrm.h
index 9338861..5ebac1d 100644
--- a/media/jni/android_media_MediaDrm.h
+++ b/media/jni/android_media_MediaDrm.h
@@ -37,9 +37,10 @@
};
struct JDrm : public BnDrmClient {
- static bool IsCryptoSchemeSupported(const uint8_t uuid[16],
- const String8 &mimeType,
- DrmPlugin::SecurityLevel level);
+ static status_t IsCryptoSchemeSupported(const uint8_t uuid[16],
+ const String8 &mimeType,
+ DrmPlugin::SecurityLevel level,
+ bool *isSupported);
JDrm(JNIEnv *env, jobject thiz, const uint8_t uuid[16], const String8 &appPackageName);
diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java
index 7ac7395..abbddf3 100644
--- a/services/core/java/com/android/server/pm/dex/DexManager.java
+++ b/services/core/java/com/android/server/pm/dex/DexManager.java
@@ -16,7 +16,7 @@
package com.android.server.pm.dex;
-import static android.provider.DeviceConfig.FsiBoot;
+import static android.provider.DeviceConfig.DexBoot;
import static com.android.server.pm.InstructionSets.getAppDexInstructionSets;
import static com.android.server.pm.dex.PackageDexUsage.DexUseInfo;
@@ -710,8 +710,8 @@
return isPackageSelectedToRunOobInternal(
SystemProperties.getBoolean(PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB, false),
SystemProperties.get(PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB_LIST, "ALL"),
- DeviceConfig.getProperty(FsiBoot.NAMESPACE, FsiBoot.OOB_ENABLED),
- DeviceConfig.getProperty(FsiBoot.NAMESPACE, FsiBoot.OOB_WHITELIST),
+ DeviceConfig.getProperty(DexBoot.NAMESPACE, DexBoot.PRIV_APPS_OOB_ENABLED),
+ DeviceConfig.getProperty(DexBoot.NAMESPACE, DexBoot.PRIV_APPS_OOB_WHITELIST),
packageNamesInSameProcess);
}