From 54409112e2055cca1b779ea5320dcbf5e0b8b75f Mon Sep 17 00:00:00 2001 From: Pawan Wagh Date: Fri, 26 Jan 2024 17:03:44 +0000 Subject: [PATCH] Publish system update info when updates are in progress Publish separate update status when updates are in progress and device is waiting for restart Test: m Settings && adb install -r $ANDROID_PRODUCT_OUT/system_ext/priv-app/Settings/Settings.apk Bug: 295035851 Change-Id: I42936431791055536fe73d018545dd9b2d658cf0 --- .../Enable16kPagesPreferenceController.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/development/Enable16kPagesPreferenceController.java b/src/com/android/settings/development/Enable16kPagesPreferenceController.java index 37357feed0c..3f9da578bef 100644 --- a/src/com/android/settings/development/Enable16kPagesPreferenceController.java +++ b/src/com/android/settings/development/Enable16kPagesPreferenceController.java @@ -176,6 +176,7 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen public void on16kPagesDialogDismissed() {} private void installUpdate() { + // Check if there is any pending system update SystemUpdateManager manager = mContext.getSystemService(SystemUpdateManager.class); Bundle data = manager.retrieveSystemUpdateInfo(); int status = data.getInt(SystemUpdateManager.KEY_STATUS); @@ -184,6 +185,10 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen throw new RuntimeException("System has pending update!"); } + // Publish system update info + PersistableBundle info = createUpdateInfo(SystemUpdateManager.STATUS_IN_PROGRESS); + manager.updateSystemUpdateInfo(info); + String updateFilePath = mEnable16k ? OTA_16K_PATH : OTA_4K_PATH; try { File updateFile = new File(updateFilePath); @@ -315,10 +320,10 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen mEnable16k ? ENABLE_16K_PAGE_SIZE : ENABLE_4K_PAGE_SIZE); // Publish system update info - SystemUpdateManager manager = - (SystemUpdateManager) - mContext.getSystemService(Context.SYSTEM_UPDATE_SERVICE); - manager.updateSystemUpdateInfo(getUpdateInfo()); + SystemUpdateManager manager = mContext.getSystemService(SystemUpdateManager.class); + PersistableBundle info = + createUpdateInfo(SystemUpdateManager.STATUS_WAITING_REBOOT); + manager.updateSystemUpdateInfo(info); // Restart device to complete update PowerManager pm = mContext.getSystemService(PowerManager.class); @@ -345,10 +350,9 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen return builder.create(); } - private PersistableBundle getUpdateInfo() { + private PersistableBundle createUpdateInfo(int status) { PersistableBundle infoBundle = new PersistableBundle(); - infoBundle.putInt( - SystemUpdateManager.KEY_STATUS, SystemUpdateManager.STATUS_WAITING_REBOOT); + infoBundle.putInt(SystemUpdateManager.KEY_STATUS, status); infoBundle.putBoolean(SystemUpdateManager.KEY_IS_SECURITY_UPDATE, false); infoBundle.putString(SystemUpdateManager.KEY_TITLE, EXPERIMENTAL_UPDATE_TITLE); return infoBundle;