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

Commit e054e6be authored by Nikita Ioffe's avatar Nikita Ioffe Committed by Automerger Merge Worker
Browse files

Merge "Introduce static @hide...

Merge "Introduce static @hide PowerManager.isRebootingUserspaceSupportedImpl()" am: d8f9951f am: a3fd4304

Change-Id: I4d8a505fb215e45a318e8222f924aa29a6ab5dea
parents 11a4a5e3 a3fd4304
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.sysprop.InitProperties;

public class PowerCommand extends Svc.Command {
    private static final int FORCE_SUSPEND_DELAY_DEFAULT_MILLIS = 0;
@@ -103,6 +104,8 @@ public class PowerCommand extends Svc.Command {
                        pm.reboot(false, mode, true);
                    } catch (RemoteException e) {
                        maybeLogRemoteException("Failed to reboot.");
                    } catch (Exception e) {
                        System.err.println("Failed to reboot: " + e.getMessage());
                    }
                    return;
                } else if ("shutdown".equals(args[1])) {
@@ -138,7 +141,9 @@ public class PowerCommand extends Svc.Command {
    // if it is already in shutdown flow.
    private void maybeLogRemoteException(String msg) {
        String powerProp = SystemProperties.get("sys.powerctl");
        if (powerProp.isEmpty()) {
        // Also check if userspace reboot is ongoing, since in case of userspace reboot value of the
        // sys.powerctl property will be reset.
        if (powerProp.isEmpty() && !InitProperties.userspace_reboot_in_progress().orElse(false)) {
            System.err.println(msg);
        }
    }
+14 −1
Original line number Diff line number Diff line
@@ -1332,12 +1332,25 @@ public final class PowerManager {
        }
    }


    /**
     * Returns {@code true} if this device supports rebooting userspace.
     *
     * <p>This method exists solely for the sake of re-using same logic between {@code PowerManager}
     * and {@code PowerManagerService}.
     *
     * @hide
     */
    public static boolean isRebootingUserspaceSupportedImpl() {
        return InitProperties.is_userspace_reboot_supported().orElse(false);
    }

    /**
     * Returns {@code true} if this device supports rebooting userspace.
     */
    // TODO(b/138605180): add link to documentation once it's ready.
    public boolean isRebootingUserspaceSupported() {
        return InitProperties.is_userspace_reboot_supported().orElse(false);
        return isRebootingUserspaceSupportedImpl();
    }

    /**
+4 −0
Original line number Diff line number Diff line
@@ -2843,6 +2843,10 @@ public final class PowerManagerService extends SystemService
    private void shutdownOrRebootInternal(final @HaltMode int haltMode, final boolean confirm,
            @Nullable final String reason, boolean wait) {
        if (PowerManager.REBOOT_USERSPACE.equals(reason)) {
            if (!PowerManager.isRebootingUserspaceSupportedImpl()) {
                throw new UnsupportedOperationException(
                        "Attempted userspace reboot on a device that doesn't support it");
            }
            UserspaceRebootLogger.noteUserspaceRebootWasRequested();
        }
        if (mHandler == null || !mSystemReady) {