Loading libs/androidfw/AssetManager2.cpp +7 −5 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& co } AssetManager2::AssetManager2() { configurations_.resize(1); configurations_.emplace_back(); } bool AssetManager2::SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches) { Loading Loading @@ -438,7 +438,7 @@ bool AssetManager2::ContainsAllocatedTable() const { return false; } void AssetManager2::SetConfigurations(std::vector<ResTable_config> configurations, void AssetManager2::SetConfigurations(std::span<const ResTable_config> configurations, bool force_refresh) { int diff = 0; if (force_refresh) { Loading @@ -452,8 +452,10 @@ void AssetManager2::SetConfigurations(std::vector<ResTable_config> configuration } } } configurations_ = std::move(configurations); configurations_.clear(); for (auto&& config : configurations) { configurations_.emplace_back(config); } if (diff) { RebuildFilterList(); InvalidateCaches(static_cast<uint32_t>(diff)); Loading libs/androidfw/include/androidfw/AssetManager2.h +7 −5 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "androidfw/AssetManager.h" #include "androidfw/ResourceTypes.h" #include "androidfw/Util.h" #include "ftl/small_vector.h" namespace android { Loading Loading @@ -159,9 +160,10 @@ class AssetManager2 { // Sets/resets the configuration for this AssetManager. This will cause all // caches that are related to the configuration change to be invalidated. void SetConfigurations(std::vector<ResTable_config> configurations, bool force_refresh = false); void SetConfigurations(std::span<const ResTable_config> configurations, bool force_refresh = false); inline const std::vector<ResTable_config>& GetConfigurations() const { std::span<const ResTable_config> GetConfigurations() const { return configurations_; } Loading Loading @@ -470,13 +472,13 @@ class AssetManager2 { // An array mapping package ID to index into package_groups. This keeps the lookup fast // without taking too much memory. std::array<uint8_t, std::numeric_limits<uint8_t>::max() + 1> package_ids_; std::array<uint8_t, std::numeric_limits<uint8_t>::max() + 1> package_ids_ = {}; uint32_t default_locale_; uint32_t default_locale_ = 0; // The current configurations set for this AssetManager. When this changes, cached resources // may need to be purged. std::vector<ResTable_config> configurations_; ftl::SmallVector<ResTable_config, 1> configurations_; // Cached set of bags. These are cached because they can inherit keys from parent bags, // which involves some calculation. Loading libs/androidfw/tests/AssetManager2_test.cpp +10 −10 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ TEST_F(AssetManager2Test, FindsResourceFromSingleApkAssets) { desired_config.language[1] = 'e'; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -137,7 +137,7 @@ TEST_F(AssetManager2Test, FindsResourceFromMultipleApkAssets) { desired_config.language[1] = 'e'; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading Loading @@ -466,10 +466,10 @@ TEST_F(AssetManager2Test, ResolveDeepIdReference) { TEST_F(AssetManager2Test, DensityOverride) { AssetManager2 assetmanager; assetmanager.SetApkAssets({basic_assets_, basic_xhdpi_assets_, basic_xxhdpi_assets_}); assetmanager.SetConfigurations({{ assetmanager.SetConfigurations({{{ .density = ResTable_config::DENSITY_XHIGH, .sdkVersion = 21, }}); }}}); auto value = assetmanager.GetResource(basic::R::string::density, false /*may_be_bag*/); ASSERT_TRUE(value.has_value()); Loading Loading @@ -721,7 +721,7 @@ TEST_F(AssetManager2Test, GetLastPathWithoutEnablingReturnsEmpty) { ResTable_config desired_config; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); assetmanager.SetResourceResolutionLoggingEnabled(false); Loading @@ -736,7 +736,7 @@ TEST_F(AssetManager2Test, GetLastPathWithoutResolutionReturnsEmpty) { ResTable_config desired_config; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto result = assetmanager.GetLastResourceResolution(); Loading @@ -751,7 +751,7 @@ TEST_F(AssetManager2Test, GetLastPathWithSingleApkAssets) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -774,7 +774,7 @@ TEST_F(AssetManager2Test, GetLastPathWithMultipleApkAssets) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -796,7 +796,7 @@ TEST_F(AssetManager2Test, GetLastPathAfterDisablingReturnsEmpty) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -817,7 +817,7 @@ TEST_F(AssetManager2Test, GetOverlayablesToString) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({overlayable_assets_}); const auto map = assetmanager.GetOverlayableMapForPackage(0x7f); Loading libs/androidfw/tests/BenchmarkHelpers.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ void GetResourceBenchmark(const std::vector<std::string>& paths, const ResTable_ AssetManager2 assetmanager; assetmanager.SetApkAssets(apk_assets); if (config != nullptr) { assetmanager.SetConfigurations({*config}); assetmanager.SetConfigurations({{{*config}}}); } while (state.KeepRunning()) { Loading libs/androidfw/tests/Theme_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ TEST_F(ThemeTest, ThemeRebase) { ResTable_config night{}; night.uiMode = ResTable_config::UI_MODE_NIGHT_YES; night.version = 8u; am_night.SetConfigurations({night}); am_night.SetConfigurations({{night}}); auto theme = am.NewTheme(); { Loading Loading
libs/androidfw/AssetManager2.cpp +7 −5 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ AssetManager2::AssetManager2(ApkAssetsList apk_assets, const ResTable_config& co } AssetManager2::AssetManager2() { configurations_.resize(1); configurations_.emplace_back(); } bool AssetManager2::SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches) { Loading Loading @@ -438,7 +438,7 @@ bool AssetManager2::ContainsAllocatedTable() const { return false; } void AssetManager2::SetConfigurations(std::vector<ResTable_config> configurations, void AssetManager2::SetConfigurations(std::span<const ResTable_config> configurations, bool force_refresh) { int diff = 0; if (force_refresh) { Loading @@ -452,8 +452,10 @@ void AssetManager2::SetConfigurations(std::vector<ResTable_config> configuration } } } configurations_ = std::move(configurations); configurations_.clear(); for (auto&& config : configurations) { configurations_.emplace_back(config); } if (diff) { RebuildFilterList(); InvalidateCaches(static_cast<uint32_t>(diff)); Loading
libs/androidfw/include/androidfw/AssetManager2.h +7 −5 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "androidfw/AssetManager.h" #include "androidfw/ResourceTypes.h" #include "androidfw/Util.h" #include "ftl/small_vector.h" namespace android { Loading Loading @@ -159,9 +160,10 @@ class AssetManager2 { // Sets/resets the configuration for this AssetManager. This will cause all // caches that are related to the configuration change to be invalidated. void SetConfigurations(std::vector<ResTable_config> configurations, bool force_refresh = false); void SetConfigurations(std::span<const ResTable_config> configurations, bool force_refresh = false); inline const std::vector<ResTable_config>& GetConfigurations() const { std::span<const ResTable_config> GetConfigurations() const { return configurations_; } Loading Loading @@ -470,13 +472,13 @@ class AssetManager2 { // An array mapping package ID to index into package_groups. This keeps the lookup fast // without taking too much memory. std::array<uint8_t, std::numeric_limits<uint8_t>::max() + 1> package_ids_; std::array<uint8_t, std::numeric_limits<uint8_t>::max() + 1> package_ids_ = {}; uint32_t default_locale_; uint32_t default_locale_ = 0; // The current configurations set for this AssetManager. When this changes, cached resources // may need to be purged. std::vector<ResTable_config> configurations_; ftl::SmallVector<ResTable_config, 1> configurations_; // Cached set of bags. These are cached because they can inherit keys from parent bags, // which involves some calculation. Loading
libs/androidfw/tests/AssetManager2_test.cpp +10 −10 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ TEST_F(AssetManager2Test, FindsResourceFromSingleApkAssets) { desired_config.language[1] = 'e'; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -137,7 +137,7 @@ TEST_F(AssetManager2Test, FindsResourceFromMultipleApkAssets) { desired_config.language[1] = 'e'; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading Loading @@ -466,10 +466,10 @@ TEST_F(AssetManager2Test, ResolveDeepIdReference) { TEST_F(AssetManager2Test, DensityOverride) { AssetManager2 assetmanager; assetmanager.SetApkAssets({basic_assets_, basic_xhdpi_assets_, basic_xxhdpi_assets_}); assetmanager.SetConfigurations({{ assetmanager.SetConfigurations({{{ .density = ResTable_config::DENSITY_XHIGH, .sdkVersion = 21, }}); }}}); auto value = assetmanager.GetResource(basic::R::string::density, false /*may_be_bag*/); ASSERT_TRUE(value.has_value()); Loading Loading @@ -721,7 +721,7 @@ TEST_F(AssetManager2Test, GetLastPathWithoutEnablingReturnsEmpty) { ResTable_config desired_config; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); assetmanager.SetResourceResolutionLoggingEnabled(false); Loading @@ -736,7 +736,7 @@ TEST_F(AssetManager2Test, GetLastPathWithoutResolutionReturnsEmpty) { ResTable_config desired_config; AssetManager2 assetmanager; assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto result = assetmanager.GetLastResourceResolution(); Loading @@ -751,7 +751,7 @@ TEST_F(AssetManager2Test, GetLastPathWithSingleApkAssets) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -774,7 +774,7 @@ TEST_F(AssetManager2Test, GetLastPathWithMultipleApkAssets) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_, basic_de_fr_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -796,7 +796,7 @@ TEST_F(AssetManager2Test, GetLastPathAfterDisablingReturnsEmpty) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({basic_assets_}); auto value = assetmanager.GetResource(basic::R::string::test1); Loading @@ -817,7 +817,7 @@ TEST_F(AssetManager2Test, GetOverlayablesToString) { AssetManager2 assetmanager; assetmanager.SetResourceResolutionLoggingEnabled(true); assetmanager.SetConfigurations({desired_config}); assetmanager.SetConfigurations({{desired_config}}); assetmanager.SetApkAssets({overlayable_assets_}); const auto map = assetmanager.GetOverlayableMapForPackage(0x7f); Loading
libs/androidfw/tests/BenchmarkHelpers.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ void GetResourceBenchmark(const std::vector<std::string>& paths, const ResTable_ AssetManager2 assetmanager; assetmanager.SetApkAssets(apk_assets); if (config != nullptr) { assetmanager.SetConfigurations({*config}); assetmanager.SetConfigurations({{{*config}}}); } while (state.KeepRunning()) { Loading
libs/androidfw/tests/Theme_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ TEST_F(ThemeTest, ThemeRebase) { ResTable_config night{}; night.uiMode = ResTable_config::UI_MODE_NIGHT_YES; night.version = 8u; am_night.SetConfigurations({night}); am_night.SetConfigurations({{night}}); auto theme = am.NewTheme(); { Loading