diff options
author | 2024-08-15 12:08:47 -0700 | |
---|---|---|
committer | 2024-08-15 21:14:16 -0700 | |
commit | c4dadee12a57b3a75a2e8d570a0650617664e288 (patch) | |
tree | ad928e9a92532b176292d6e2e0ae2f065687084d | |
parent | b6eb5b62ff0f7ad18b1a6e8509e42afb8620a560 (diff) |
[res] Start using ftl::SmallVector<> where it's most useful
Test: build + boot
Flag: EXEMPT minor change
Change-Id: I21694756674169388407e2b3c7dce850ff19e354
-rw-r--r-- | libs/androidfw/AssetManager2.cpp | 12 | ||||
-rw-r--r-- | libs/androidfw/include/androidfw/AssetManager2.h | 12 | ||||
-rw-r--r-- | libs/androidfw/tests/AssetManager2_test.cpp | 20 | ||||
-rw-r--r-- | libs/androidfw/tests/BenchmarkHelpers.cpp | 2 | ||||
-rw-r--r-- | libs/androidfw/tests/Theme_test.cpp | 2 |
5 files changed, 26 insertions, 22 deletions
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp index 822a387351e3..0fa31c7a832e 100644 --- a/libs/androidfw/AssetManager2.cpp +++ b/libs/androidfw/AssetManager2.cpp @@ -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) { @@ -438,8 +438,8 @@ bool AssetManager2::ContainsAllocatedTable() const { return false; } -void AssetManager2::SetConfigurations(std::vector<ResTable_config> configurations, - bool force_refresh) { +void AssetManager2::SetConfigurations(std::span<const ResTable_config> configurations, + bool force_refresh) { int diff = 0; if (force_refresh) { diff = -1; @@ -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)); diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h index ac46bc5c179f..0fdeefa09e26 100644 --- a/libs/androidfw/include/androidfw/AssetManager2.h +++ b/libs/androidfw/include/androidfw/AssetManager2.h @@ -32,6 +32,7 @@ #include "androidfw/AssetManager.h" #include "androidfw/ResourceTypes.h" #include "androidfw/Util.h" +#include "ftl/small_vector.h" namespace android { @@ -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_; } @@ -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. diff --git a/libs/androidfw/tests/AssetManager2_test.cpp b/libs/androidfw/tests/AssetManager2_test.cpp index c62f095e9dac..3f228841f6ba 100644 --- a/libs/androidfw/tests/AssetManager2_test.cpp +++ b/libs/androidfw/tests/AssetManager2_test.cpp @@ -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); @@ -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); @@ -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()); @@ -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); @@ -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(); @@ -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); @@ -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); @@ -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); @@ -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); diff --git a/libs/androidfw/tests/BenchmarkHelpers.cpp b/libs/androidfw/tests/BenchmarkHelpers.cpp index e3fc0a0a4e68..ec2abb84a5d5 100644 --- a/libs/androidfw/tests/BenchmarkHelpers.cpp +++ b/libs/androidfw/tests/BenchmarkHelpers.cpp @@ -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()) { diff --git a/libs/androidfw/tests/Theme_test.cpp b/libs/androidfw/tests/Theme_test.cpp index 181d1411fb91..afcb0c1ad964 100644 --- a/libs/androidfw/tests/Theme_test.cpp +++ b/libs/androidfw/tests/Theme_test.cpp @@ -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(); { |