summaryrefslogtreecommitdiff
path: root/libs/androidfw/AssetsProvider.cpp
diff options
context:
space:
mode:
author Ryan Mitchell <rtmitchell@google.com> 2021-03-01 15:18:15 -0800
committer Ryan Mitchell <rtmitchell@google.com> 2021-05-13 13:41:26 -0700
commitbdc0ae12471f1a4a4cae8adbbf83f33a0f3e4ea9 (patch)
tree6df0116ab11c976ad7884b97d91c7293856df478 /libs/androidfw/AssetsProvider.cpp
parent969f4ec61b7f6d069726ffcc795d438af7d47f7d (diff)
Set ApkAssets path for fabricated rros
Fabricated RROs do not provide assets but are stored on disk. Ensure that the path to the frro is returned when querying for the ApkAssets path (which is mostly for debug purposes). Bug: 181338216 Test: enable frro, use cmd overlay lookup to see path in resolution Change-Id: Ibf9b1bf0a995325affbf084c71b1e87c5682e734
Diffstat (limited to 'libs/androidfw/AssetsProvider.cpp')
-rw-r--r--libs/androidfw/AssetsProvider.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/libs/androidfw/AssetsProvider.cpp b/libs/androidfw/AssetsProvider.cpp
index 0aaf0b359b60..6c7a25307247 100644
--- a/libs/androidfw/AssetsProvider.cpp
+++ b/libs/androidfw/AssetsProvider.cpp
@@ -386,8 +386,15 @@ bool MultiAssetsProvider::IsUpToDate() const {
return primary_->IsUpToDate() && secondary_->IsUpToDate();
}
+EmptyAssetsProvider::EmptyAssetsProvider(std::optional<std::string>&& path) :
+ path_(std::move(path)) {}
+
std::unique_ptr<AssetsProvider> EmptyAssetsProvider::Create() {
- return std::make_unique<EmptyAssetsProvider>();
+ return std::unique_ptr<EmptyAssetsProvider>(new EmptyAssetsProvider({}));
+}
+
+std::unique_ptr<AssetsProvider> EmptyAssetsProvider::Create(const std::string& path) {
+ return std::unique_ptr<EmptyAssetsProvider>(new EmptyAssetsProvider(path));
}
std::unique_ptr<Asset> EmptyAssetsProvider::OpenInternal(const std::string& /* path */,
@@ -406,10 +413,16 @@ bool EmptyAssetsProvider::ForEachFile(
}
std::optional<std::string_view> EmptyAssetsProvider::GetPath() const {
+ if (path_.has_value()) {
+ return *path_;
+ }
return {};
}
const std::string& EmptyAssetsProvider::GetDebugName() const {
+ if (path_.has_value()) {
+ return *path_;
+ }
const static std::string kEmpty = kEmptyDebugString;
return kEmpty;
}