diff options
author | Scott Lobdell <slobdell@google.com> | 2019-02-19 10:33:50 -0800 |
---|---|---|
committer | Scott Lobdell <slobdell@google.com> | 2019-02-19 11:36:09 -0800 |
commit | 81b587a542e8381268a9ba8e7461712ef23cd11f (patch) | |
tree | bace051dc4f3efad7dcd091ea0481167815bfaa7 /libs/androidfw/AssetManager2.cpp | |
parent | bf4a1865530dd9a1e4b203d4e9d67fce0958c3fa (diff) | |
parent | 13327cc461d8f54550866bc404a99205f95ab92f (diff) |
Merge QP1A.190212.003
Conflicts:
core/java/android/view/SurfaceControl.java
media/java/android/media/MediaCodecInfo.java
packages/SettingsLib/res/values/strings.xml
services/core/java/com/android/server/am/ActiveServices.java
services/core/java/com/android/server/am/OomAdjuster.java
services/core/java/com/android/server/audio/AudioDeviceInventory.java
services/core/java/com/android/server/display/LocalDisplayAdapter.java
services/core/java/com/android/server/wm/ActivityDisplay.java
services/core/java/com/android/server/wm/DisplayPolicy.java
Change-Id: Idc7582978996d2f7c44f599f221e8d7cc9eedf43
Diffstat (limited to 'libs/androidfw/AssetManager2.cpp')
-rw-r--r-- | libs/androidfw/AssetManager2.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp index 20303eba6667..66d8542553d2 100644 --- a/libs/androidfw/AssetManager2.cpp +++ b/libs/androidfw/AssetManager2.cpp @@ -203,6 +203,27 @@ const DynamicRefTable* AssetManager2::GetDynamicRefTableForCookie(ApkAssetsCooki return nullptr; } +const std::unordered_map<std::string, std::string>* + AssetManager2::GetOverlayableMapForPackage(uint32_t package_id) const { + + if (package_id >= package_ids_.size()) { + return nullptr; + } + + const size_t idx = package_ids_[package_id]; + if (idx == 0xff) { + return nullptr; + } + + const PackageGroup& package_group = package_groups_[idx]; + if (package_group.packages_.size() == 0) { + return nullptr; + } + + const auto loaded_package = package_group.packages_[0].loaded_package_; + return &loaded_package->GetOverlayableMap(); +} + void AssetManager2::SetConfiguration(const ResTable_config& configuration) { const int diff = configuration_.diff(configuration); configuration_ = configuration; @@ -704,9 +725,29 @@ ApkAssetsCookie AssetManager2::ResolveReference(ApkAssetsCookie cookie, Res_valu return cookie; } +const std::vector<uint32_t> AssetManager2::GetBagResIdStack(uint32_t resid) { + auto cached_iter = cached_bag_resid_stacks_.find(resid); + if (cached_iter != cached_bag_resid_stacks_.end()) { + return cached_iter->second; + } else { + auto found_resids = std::vector<uint32_t>(); + GetBag(resid, found_resids); + // Cache style stacks if they are not already cached. + cached_bag_resid_stacks_[resid] = found_resids; + return found_resids; + } +} + const ResolvedBag* AssetManager2::GetBag(uint32_t resid) { auto found_resids = std::vector<uint32_t>(); - return GetBag(resid, found_resids); + auto bag = GetBag(resid, found_resids); + + // Cache style stacks if they are not already cached. + auto cached_iter = cached_bag_resid_stacks_.find(resid); + if (cached_iter == cached_bag_resid_stacks_.end()) { + cached_bag_resid_stacks_[resid] = found_resids; + } + return bag; } const ResolvedBag* AssetManager2::GetBag(uint32_t resid, std::vector<uint32_t>& child_resids) { |