From 36147b0fdf48865c0a40c89a420c6046fdf56720 Mon Sep 17 00:00:00 2001 From: Yurii Zubrytskyi Date: Thu, 6 Feb 2025 15:41:54 -0800 Subject: Revert "Revert "[res] Don't create extra asset provider when not..." Revert submission 31216694-revert-31021037-TXGRFMNZKV Reason for revert: relanding with a fix The fix is to still return a null AssetsProvider when failing to open the supplied apk, instead of ending up with an empty provider that will fail later Reverted changes: /q/submissionid:31216694-revert-31021037-TXGRFMNZKV Change-Id: Ia8e2cdaddf81683cd58547942d1da3c5df93b087 --- libs/androidfw/AssetsProvider.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'libs/androidfw/AssetsProvider.cpp') diff --git a/libs/androidfw/AssetsProvider.cpp b/libs/androidfw/AssetsProvider.cpp index 59c6aba7b8b0..808509120462 100644 --- a/libs/androidfw/AssetsProvider.cpp +++ b/libs/androidfw/AssetsProvider.cpp @@ -24,9 +24,27 @@ #include namespace android { -namespace { -constexpr const char* kEmptyDebugString = ""; -} // namespace + +static constexpr std::string_view kEmptyDebugString = ""; + +std::unique_ptr AssetsProvider::CreateWithOverride( + std::unique_ptr provider, std::unique_ptr override) { + if (provider == nullptr) { + return {}; + } + if (override == nullptr) { + return provider; + } + return MultiAssetsProvider::Create(std::move(override), std::move(provider)); +} + +std::unique_ptr AssetsProvider::CreateFromNullable( + std::unique_ptr nullable) { + if (nullable) { + return nullable; + } + return EmptyAssetsProvider::Create(); +} std::unique_ptr AssetsProvider::Open(const std::string& path, Asset::AccessMode mode, bool* file_exists) const { @@ -425,7 +443,7 @@ const std::string& EmptyAssetsProvider::GetDebugName() const { if (path_.has_value()) { return *path_; } - const static std::string kEmpty = kEmptyDebugString; + constexpr static std::string kEmpty{kEmptyDebugString}; return kEmpty; } -- cgit v1.2.3-59-g8ed1b