diff options
author | 2020-11-13 23:55:20 +0000 | |
---|---|---|
committer | 2020-11-13 23:55:20 +0000 | |
commit | 6ca48473e533a8b89abac6294a0bb8130b8c8c89 (patch) | |
tree | da96bc5ed4429763b2aec93021ec7d0340ce0b98 /libs/androidfw/AssetManager2.cpp | |
parent | 06a7331b84ceb4b39d39e4af187d1f988475893a (diff) |
Revert "Cache resolved theme values"
Revert "Move map_ptr to incfs namspace"
Revert submission 12787270
Reason for revert: b/173250495
Reverted Changes:
I5cd1bc8a2:libandroidfw hardening for IncFs
Ice5dbcfb2:Move map_ptr to incfs namspace
I29ccdc8ed:Do not cache bag parent stack until requested
I1e9e9acaa:Cache resolved theme values
Change-Id: Ibec051c79dfd28783a57b9ae82ebd8cdbed82fce
Diffstat (limited to 'libs/androidfw/AssetManager2.cpp')
-rw-r--r-- | libs/androidfw/AssetManager2.cpp | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp index d349628c2ab4..3e54dc67db76 100644 --- a/libs/androidfw/AssetManager2.cpp +++ b/libs/androidfw/AssetManager2.cpp @@ -963,25 +963,14 @@ base::expected<AssetManager2::SelectedValue, NullOrIOError> AssetManager2::GetRe } base::expected<std::monostate, NullOrIOError> AssetManager2::ResolveReference( - AssetManager2::SelectedValue& value, bool cache_value) const { + AssetManager2::SelectedValue& value) const { if (value.type != Res_value::TYPE_REFERENCE || value.data == 0U) { // Not a reference. Nothing to do. return {}; } - const uint32_t original_flags = value.flags; - const uint32_t original_resid = value.data; - if (cache_value) { - auto cached_value = cached_resolved_values_.find(value.data); - if (cached_value != cached_resolved_values_.end()) { - value = cached_value->second; - value.flags |= original_flags; - return {}; - } - } - - uint32_t combined_flags = 0U; - uint32_t resolve_resid = original_resid; + uint32_t combined_flags = value.flags; + uint32_t resolve_resid = value.data; constexpr const uint32_t kMaxIterations = 20; for (uint32_t i = 0U;; i++) { auto result = GetResource(resolve_resid, true /*may_be_bag*/); @@ -992,15 +981,9 @@ base::expected<std::monostate, NullOrIOError> AssetManager2::ResolveReference( if (result->type != Res_value::TYPE_REFERENCE || result->data == Res_value::DATA_NULL_UNDEFINED || result->data == resolve_resid || i == kMaxIterations) { - result->flags |= combined_flags; - if (cache_value) { - cached_resolved_values_[original_resid] = *result; - } - - // Add the original flags after caching the result so queries with a different set of original - // flags do not include these original flags. + // This reference can't be resolved, so exit now and let the caller deal with it. value = *result; - value.flags |= original_flags; + value.flags |= combined_flags; return {}; } @@ -1370,8 +1353,6 @@ void AssetManager2::InvalidateCaches(uint32_t diff) { ++iter; } } - - cached_resolved_values_.clear(); } uint8_t AssetManager2::GetAssignedPackageId(const LoadedPackage* package) const { @@ -1552,7 +1533,7 @@ base::expected<std::monostate, NullOrIOError> Theme::ResolveAttributeReference( return base::unexpected(std::nullopt); } - auto resolve_result = asset_manager_->ResolveReference(*result, true /* cache_value */); + auto resolve_result = asset_manager_->ResolveReference(*result); if (resolve_result.has_value()) { result->flags |= value.flags; value = *result; |