summaryrefslogtreecommitdiff
path: root/services/incremental/BinderIncrementalService.cpp
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2020-04-07 15:35:21 -0700
committerYurii Zubrytskyi <zyy@google.com>2020-04-10 12:30:49 -0700
commitda208016d65c331218ed3a1acd2f45d5ca4ce006 (patch)
tree8ebc8a5a7a7d400e5e9ef3988331ac7043b54d17 /services/incremental/BinderIncrementalService.cpp
parentb78a0f462e20676e4758a3f966c6f898cf95a2a7 (diff)
[incfs] Make native library extraction async
IncrementalService can create the library files beforehand, but delay filling in their data. As it takes quite a while in general (over a second in cases when the phone is busy), it's better to run the unzipping and filling in a separate thread and only make sure it finishes before the whole installation process is complete. This speeds up the megacity.apk installation by ~250-300ms, 1000-1100ms -> 750-800ms Bug: 153513507 Test: adb install megacity.apk Change-Id: Ia44f7e45b9e0abaebdfb6fe5352f9dcf29ab4ece
Diffstat (limited to 'services/incremental/BinderIncrementalService.cpp')
-rw-r--r--services/incremental/BinderIncrementalService.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/services/incremental/BinderIncrementalService.cpp b/services/incremental/BinderIncrementalService.cpp
index aabc58c3a297..ebebf606b1cc 100644
--- a/services/incremental/BinderIncrementalService.cpp
+++ b/services/incremental/BinderIncrementalService.cpp
@@ -116,11 +116,14 @@ binder::Status BinderIncrementalService::openStorage(const std::string& path,
return ok();
}
-binder::Status BinderIncrementalService::createStorage(const std::string& path,
- const DataLoaderParamsParcel& params,
- const ::android::sp<::android::content::pm::IDataLoaderStatusListener>& listener,
- int32_t createMode, int32_t* _aidl_return) {
- *_aidl_return = mImpl.createStorage(path, const_cast<DataLoaderParamsParcel&&>(params), listener, android::incremental::IncrementalService::CreateOptions(createMode));
+binder::Status BinderIncrementalService::createStorage(
+ const std::string& path, const DataLoaderParamsParcel& params,
+ const ::android::sp<::android::content::pm::IDataLoaderStatusListener>& listener,
+ int32_t createMode, int32_t* _aidl_return) {
+ *_aidl_return =
+ mImpl.createStorage(path, const_cast<DataLoaderParamsParcel&&>(params), listener,
+ android::incremental::IncrementalService::CreateOptions(
+ createMode));
return ok();
}
@@ -181,7 +184,8 @@ static std::tuple<int, incfs::FileId, incfs::NewFileParams> toMakeFileParams(
if (!params.signature) {
nfp.signature = {};
} else {
- nfp.signature = {(const char*)params.signature->data(), (IncFsSize)params.signature->size()};
+ nfp.signature = {(const char*)params.signature->data(),
+ (IncFsSize)params.signature->size()};
}
return {0, id, nfp};
}
@@ -278,6 +282,12 @@ binder::Status BinderIncrementalService::configureNativeBinaries(
return ok();
}
+binder::Status BinderIncrementalService::waitForNativeBinariesExtraction(int storageId,
+ bool* _aidl_return) {
+ *_aidl_return = mImpl.waitForNativeBinariesExtraction(storageId);
+ return ok();
+}
+
} // namespace android::os::incremental
jlong Incremental_IncrementalService_Start() {