InstallPackage now takes a package as parameter

Therefore InstallPackage() doesn't need to worry about the details of a
given Package.

Bug: 127071893
Test: run update from /bin/recovery --update_package=@path, sideload a package
Change-Id: I0caa36785b43924f884ee398e7ea640d7472a92e
This commit is contained in:
Tianjie Xu
2019-06-11 15:43:43 -07:00
parent 533a12c71e
commit 980f92ec00
7 changed files with 83 additions and 53 deletions

View File

@@ -40,12 +40,20 @@ class MemoryPackage : public Package {
~MemoryPackage() override;
PackageType GetType() const override {
return PackageType::kMemory;
}
// Memory maps the package file if necessary. Initializes the start address and size of the
// package.
uint64_t GetPackageSize() const override {
return package_size_;
}
std::string GetPath() const override {
return path_;
}
bool ReadFullyAtOffset(uint8_t* buffer, uint64_t byte_count, uint64_t offset) override;
ZipArchiveHandle GetZipArchiveHandle() override;
@@ -82,10 +90,18 @@ class FilePackage : public Package {
~FilePackage() override;
PackageType GetType() const override {
return PackageType::kFile;
}
uint64_t GetPackageSize() const override {
return package_size_;
}
std::string GetPath() const override {
return path_;
}
bool ReadFullyAtOffset(uint8_t* buffer, uint64_t byte_count, uint64_t offset) override;
ZipArchiveHandle GetZipArchiveHandle() override;
@@ -253,7 +269,7 @@ ZipArchiveHandle FilePackage::GetZipArchiveHandle() {
return zip_handle_;
}
if (auto err = OpenArchiveFd(fd_.get(), path_.c_str(), &zip_handle_); err != 0) {
if (auto err = OpenArchiveFd(fd_.get(), path_.c_str(), &zip_handle_, false); err != 0) {
LOG(ERROR) << "Can't open package" << path_ << " : " << ErrorCodeString(err);
return nullptr;
}