diff options
Diffstat (limited to 'native')
| -rw-r--r-- | native/android/TEST_MAPPING | 9 | ||||
| -rw-r--r-- | native/android/configuration.cpp | 2 | ||||
| -rw-r--r-- | native/android/performance_hint.cpp | 5 | ||||
| -rw-r--r-- | native/android/system_fonts.cpp | 9 | ||||
| -rw-r--r-- | native/android/tests/performance_hint/PerformanceHintNativeTest.cpp | 11 |
5 files changed, 29 insertions, 7 deletions
diff --git a/native/android/TEST_MAPPING b/native/android/TEST_MAPPING index 6a5d2c008b1d..fd394fc43477 100644 --- a/native/android/TEST_MAPPING +++ b/native/android/TEST_MAPPING @@ -12,6 +12,15 @@ } ], "file_patterns": ["permission_manager.cpp"] + }, + { + "name": "CtsOsTestCases", + "options": [ + { + "include-filter": "android.os.cts.PerformanceHintManagerTest" + } + ], + "file_patterns": ["performance_hint.cpp"] } ] } diff --git a/native/android/configuration.cpp b/native/android/configuration.cpp index b50514d27bac..283445fc8a9a 100644 --- a/native/android/configuration.cpp +++ b/native/android/configuration.cpp @@ -36,7 +36,7 @@ void AConfiguration_delete(AConfiguration* config) { void AConfiguration_fromAssetManager(AConfiguration* out, AAssetManager* am) { ScopedLock<AssetManager2> locked_mgr(*AssetManagerForNdkAssetManager(am)); - ResTable_config config = locked_mgr->GetConfiguration(); + ResTable_config config = locked_mgr->GetConfigurations()[0]; // AConfiguration is not a virtual subclass, so we can memcpy. memcpy(out, &config, sizeof(config)); diff --git a/native/android/performance_hint.cpp b/native/android/performance_hint.cpp index b3628fa3e5ce..6198f40bfcd1 100644 --- a/native/android/performance_hint.cpp +++ b/native/android/performance_hint.cpp @@ -274,9 +274,10 @@ int APerformanceHintSession::setThreads(const int32_t* threadIds, size_t size) { binder::Status ret = mHintManager->setHintSessionThreads(mHintSession, tids); if (!ret.isOk()) { ALOGE("%s: failed: %s", __FUNCTION__, ret.exceptionMessage().c_str()); - if (ret.exceptionCode() == binder::Status::Exception::EX_SECURITY || - ret.exceptionCode() == binder::Status::Exception::EX_ILLEGAL_ARGUMENT) { + if (ret.exceptionCode() == binder::Status::Exception::EX_ILLEGAL_ARGUMENT) { return EINVAL; + } else if (ret.exceptionCode() == binder::Status::Exception::EX_SECURITY) { + return EPERM; } return EPIPE; } diff --git a/native/android/system_fonts.cpp b/native/android/system_fonts.cpp index fe3132e3d2a3..de7ea701b26d 100644 --- a/native/android/system_fonts.cpp +++ b/native/android/system_fonts.cpp @@ -251,14 +251,15 @@ ASystemFontIterator* ASystemFontIterator_open() { locale.emplace(minikin::getLocaleString(localeId)); } std::vector<std::pair<uint32_t, float>> axes; - for (const auto& [tag, value] : font->typeface()->GetAxes()) { + for (const auto& [tag, value] : font->baseTypeface()->GetAxes()) { axes.push_back(std::make_pair(tag, value)); } - fonts.insert({font->typeface()->GetFontPath(), std::move(locale), + fonts.insert({font->baseTypeface()->GetFontPath(), std::move(locale), font->style().weight(), font->style().slant() == minikin::FontStyle::Slant::ITALIC, - static_cast<uint32_t>(font->typeface()->GetFontIndex()), axes}); + static_cast<uint32_t>(font->baseTypeface()->GetFontIndex()), + axes}); } }); @@ -323,7 +324,7 @@ AFont* _Nonnull AFontMatcher_match( .font; std::unique_ptr<AFont> result = std::make_unique<AFont>(); const android::MinikinFontSkia* minikinFontSkia = - reinterpret_cast<android::MinikinFontSkia*>(font->typeface().get()); + reinterpret_cast<android::MinikinFontSkia*>(font->baseTypeface().get()); result->mFilePath = minikinFontSkia->getFilePath(); result->mWeight = font->style().weight(); result->mItalic = font->style().slant() == minikin::FontStyle::Slant::ITALIC; diff --git a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp index 791adfd33fcd..6f7562b93a30 100644 --- a/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp +++ b/native/android/tests/performance_hint/PerformanceHintNativeTest.cpp @@ -178,4 +178,15 @@ TEST_F(PerformanceHintTest, SetThreads) { .WillOnce(Return(Status())); result = APerformanceHint_setThreads(session, newTids.data(), newTids.size()); EXPECT_EQ(0, result); + + testing::Mock::VerifyAndClearExpectations(mMockIHintManager); + std::vector<int32_t> invalidTids; + auto status = Status::fromExceptionCode(binder::Status::Exception::EX_SECURITY); + invalidTids.push_back(4); + invalidTids.push_back(6); + EXPECT_CALL(*mMockIHintManager, setHintSessionThreads(_, Eq(invalidTids))) + .Times(Exactly(1)) + .WillOnce(Return(status)); + result = APerformanceHint_setThreads(session, invalidTids.data(), invalidTids.size()); + EXPECT_EQ(EPERM, result); } |