Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54409112 authored by Pawan Wagh's avatar Pawan Wagh
Browse files

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
parent e7c4bf5e
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -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;