Forward args to install-commit properly when using install-multi-package
--staged-ready-timeout is the only flag install-commit supports, so we
only forward that.
Bug: 183990075
Test: atest
StagedInstallInternalTest#testAdbInstallMultiPackageCommandWorksWithTimeoutFlag
Change-Id: I31c48b4a7a6f243fc130be342c584386592cec7f
Merged-In: I31c48b4a7a6f243fc130be342c584386592cec7f
(cherry picked from commit 7a5824583e1744dd9c034e90a545a2d8986f4254)
diff --git a/client/adb_install.cpp b/client/adb_install.cpp
index ea50f59..892af62 100644
--- a/client/adb_install.cpp
+++ b/client/adb_install.cpp
@@ -930,11 +930,22 @@
finalize_multi_package_session:
// Commit session if we streamed everything okay; otherwise abandon
- std::vector<std::string> service_args = {
- install_cmd,
- success == 0 ? "install-commit" : "install-abandon",
- parent_session_id_str,
- };
+ std::vector<std::string> service_args;
+ if (success) {
+ service_args.push_back(install_cmd);
+ service_args.push_back("install-commit");
+ // If successful, we need to forward args to install-commit
+ for (int i = 1; i < first_package - 1; i++) {
+ if (strcmp(argv[i], "--staged-ready-timeout") == 0) {
+ service_args.push_back(argv[i]);
+ service_args.push_back(argv[i + 1]);
+ i++;
+ }
+ }
+ service_args.push_back(parent_session_id_str);
+ } else {
+ service_args = {install_cmd, "install-abandon", parent_session_id_str};
+ }
{
unique_fd fd = send_command(service_args, &error);