diff options
-rw-r--r-- | libartbase/base/hiddenapi_flags.h | 6 | ||||
-rw-r--r-- | libartbase/base/sdk_version.h | 1 | ||||
-rw-r--r-- | runtime/hidden_api_test.cc | 13 | ||||
-rw-r--r-- | tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java | 3 |
4 files changed, 20 insertions, 3 deletions
diff --git a/libartbase/base/hiddenapi_flags.h b/libartbase/base/hiddenapi_flags.h index 9ea01d7f3b..8c1ffd5739 100644 --- a/libartbase/base/hiddenapi_flags.h +++ b/libartbase/base/hiddenapi_flags.h @@ -44,11 +44,12 @@ class ApiList { // The max release code implicitly includes all maintenance releases, // e.g. GreylistMaxO is accessible to targetSdkVersion <= 27 (O_MR1). kGreylistMaxO = 3, + kGreylistMaxP = 4, // Special values kInvalid = static_cast<uint32_t>(-1), kMinValue = kWhitelist, - kMaxValue = kGreylistMaxO, + kMaxValue = kGreylistMaxP, }; static constexpr const char* kNames[] = { @@ -56,6 +57,7 @@ class ApiList { "greylist", "blacklist", "greylist-max-o", + "greylist-max-p", }; static constexpr const char* kInvalidName = "invalid"; @@ -65,6 +67,7 @@ class ApiList { /* greylist */ SdkVersion::kMax, /* blacklist */ SdkVersion::kMin, /* greylist-max-o */ SdkVersion::kO_MR1, + /* greylist-max-p */ SdkVersion::kP, }; static ApiList MinValue() { return ApiList(Value::kMinValue); } @@ -79,6 +82,7 @@ class ApiList { static ApiList Greylist() { return ApiList(Value::kGreylist); } static ApiList Blacklist() { return ApiList(Value::kBlacklist); } static ApiList GreylistMaxO() { return ApiList(Value::kGreylistMaxO); } + static ApiList GreylistMaxP() { return ApiList(Value::kGreylistMaxP); } static ApiList Invalid() { return ApiList(Value::kInvalid); } // Decodes ApiList from dex hiddenapi flags. diff --git a/libartbase/base/sdk_version.h b/libartbase/base/sdk_version.h index 4372e5a02f..e2dbc502dc 100644 --- a/libartbase/base/sdk_version.h +++ b/libartbase/base/sdk_version.h @@ -33,7 +33,6 @@ enum class SdkVersion : uint32_t { kO = 26u, kO_MR1 = 27u, kP = 28u, - kP_MR1 = 29u, kMax = std::numeric_limits<uint32_t>::max(), }; diff --git a/runtime/hidden_api_test.cc b/runtime/hidden_api_test.cc index 520dc6d935..595f0779e2 100644 --- a/runtime/hidden_api_test.cc +++ b/runtime/hidden_api_test.cc @@ -103,12 +103,14 @@ TEST_F(HiddenApiTest, CheckGetActionFromRuntimeFlags) { runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kDisabled); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Whitelist()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Greylist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxP()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxO()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Blacklist()), false); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kJustWarn); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Whitelist()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Greylist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxP()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxO()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Blacklist()), false); @@ -117,6 +119,7 @@ TEST_F(HiddenApiTest, CheckGetActionFromRuntimeFlags) { static_cast<uint32_t>(hiddenapi::ApiList::GreylistMaxO().GetMaxAllowedSdkVersion())); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Whitelist()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Greylist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxP()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxO()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Blacklist()), true); @@ -125,6 +128,16 @@ TEST_F(HiddenApiTest, CheckGetActionFromRuntimeFlags) { static_cast<uint32_t>(hiddenapi::ApiList::GreylistMaxO().GetMaxAllowedSdkVersion()) + 1); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Whitelist()), false); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Greylist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxP()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxO()), true); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Blacklist()), true); + + runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kEnabled); + runtime_->SetTargetSdkVersion( + static_cast<uint32_t>(hiddenapi::ApiList::GreylistMaxP().GetMaxAllowedSdkVersion()) + 1); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Whitelist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Greylist()), false); + ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxP()), true); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::GreylistMaxO()), true); ASSERT_EQ(ShouldDenyAccess(hiddenapi::ApiList::Blacklist()), true); } diff --git a/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java b/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java index 621ee11fa7..6305185471 100644 --- a/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java +++ b/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java @@ -62,13 +62,14 @@ public class Class2Greylist { public static final String FLAG_GREYLIST = "greylist"; public static final String FLAG_BLACKLIST = "blacklist"; public static final String FLAG_GREYLIST_MAX_O = "greylist-max-o"; + public static final String FLAG_GREYLIST_MAX_P = "greylist-max-p"; private static final Map<Integer, String> TARGET_SDK_TO_LIST_MAP; static { Map<Integer, String> map = new HashMap<>(); map.put(null, FLAG_GREYLIST); map.put(26, FLAG_GREYLIST_MAX_O); - map.put(28, FLAG_GREYLIST); + map.put(28, FLAG_GREYLIST_MAX_P); TARGET_SDK_TO_LIST_MAP = Collections.unmodifiableMap(map); } |