Add isGsiEnabled to GsiService
In order to re-enable the Gsi from framework, we need a method to
query the current enable status.
Bug: 125079548
Test: use the status command
Change-Id: Ia6c0ae12e2e6613f112a241d2cf5733f8bf22984
diff --git a/aidl/android/gsi/IGsiService.aidl b/aidl/android/gsi/IGsiService.aidl
index 0665223..8a0201d 100644
--- a/aidl/android/gsi/IGsiService.aidl
+++ b/aidl/android/gsi/IGsiService.aidl
@@ -92,6 +92,11 @@
int setGsiBootable(boolean oneShot);
/**
+ * @return True if Gsi is enabled
+ */
+ boolean isGsiEnabled();
+
+ /**
* Cancel an in-progress GSI install.
*/
boolean cancelGsiInstall();
diff --git a/gsi_service.cpp b/gsi_service.cpp
index ec5f584..4984597 100644
--- a/gsi_service.cpp
+++ b/gsi_service.cpp
@@ -198,6 +198,18 @@
return binder::Status::ok();
}
+binder::Status GsiService::isGsiEnabled(bool* _aidl_return) {
+ ENFORCE_SYSTEM_OR_SHELL;
+ std::lock_guard<std::mutex> guard(main_lock_);
+ std::string boot_key;
+ if (!GetInstallStatus(&boot_key)) {
+ *_aidl_return = false;
+ } else {
+ *_aidl_return = (boot_key == kInstallStatusOk);
+ }
+ return binder::Status::ok();
+}
+
binder::Status GsiService::removeGsiInstall(bool* _aidl_return) {
ENFORCE_SYSTEM_OR_SHELL;
std::lock_guard<std::mutex> guard(main_lock_);
diff --git a/gsi_service.h b/gsi_service.h
index f3cbad0..01326b5 100644
--- a/gsi_service.h
+++ b/gsi_service.h
@@ -49,6 +49,7 @@
bool* _aidl_return) override;
binder::Status cancelGsiInstall(bool* _aidl_return) override;
binder::Status setGsiBootable(bool oneShot, int* _aidl_return) override;
+ binder::Status isGsiEnabled(bool* _aidl_return) override;
binder::Status removeGsiInstall(bool* _aidl_return) override;
binder::Status disableGsiInstall(bool* _aidl_return) override;
binder::Status isGsiRunning(bool* _aidl_return) override;
diff --git a/gsi_tool.cpp b/gsi_tool.cpp
index df2fcd5..a9a6920 100644
--- a/gsi_tool.cpp
+++ b/gsi_tool.cpp
@@ -342,7 +342,6 @@
return EX_SOFTWARE;
} else if (running) {
std::cout << "running" << std::endl;
- return 0;
}
bool installed;
status = gsid->isGsiInstalled(&installed);
@@ -351,9 +350,17 @@
return EX_SOFTWARE;
} else if (installed) {
std::cout << "installed" << std::endl;
- return 0;
}
- std::cout << "normal" << std::endl;
+ bool enabled;
+ status = gsid->isGsiEnabled(&enabled);
+ if (!status.isOk()) {
+ std::cerr << status.exceptionMessage().string() << std::endl;
+ return EX_SOFTWARE;
+ } else if (running || installed) {
+ std::cout << (enabled ? "enabled" : "disabled") << std::endl;
+ } else {
+ std::cout << "normal" << std::endl;
+ }
return 0;
}