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

Commit e1b6efd7 authored by Robert Horvath's avatar Robert Horvath
Browse files

Use SystemUI reboot UI for factory resets

If available, use SystemUI to present the reboot UI when
rebooting for a factory reset.

Bug: 119920887
Test: Enable config_showSysuiShutdown and trigger factory reset in
      Settings -> Device Preferences -> About -> Factory reset.

Change-Id: Id1efb5a95c69468a92b4295a2f20de2d66140da8
parent 94eebca4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -32,6 +32,19 @@
        android:layout_height="32sp"
        android:text="@string/shutdown_progress"
        android:textDirection="locale"
        android:textSize="18sp"
        android:textAppearance="?attr/textAppearanceMedium"
        android:gravity="center"
        android:layout_marginBottom="24dp"
        android:visibility="gone"
        android:fontFamily="@string/config_headlineFontFamily"/>

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="32sp"
        android:text="@string/shutdown_progress"
        android:textDirection="locale"
        android:textSize="24sp"
        android:textAppearance="?attr/textAppearanceLarge"
        android:gravity="center"
+40 −6
Original line number Diff line number Diff line
@@ -17,9 +17,11 @@ package com.android.systemui.globalactions;
import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;

import android.annotation.Nullable;
import android.annotation.StringRes;
import android.app.Dialog;
import android.app.KeyguardManager;
import android.content.Context;
import android.os.PowerManager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
@@ -134,14 +136,22 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks,

        int color = Utils.getColorAttrDefaultColor(mContext,
                com.android.systemui.R.attr.wallpaperTextColor);
        boolean onKeyguard = mContext.getSystemService(
                KeyguardManager.class).isKeyguardLocked();

        ProgressBar bar = d.findViewById(R.id.progress);
        bar.getIndeterminateDrawable().setTint(color);
        TextView message = d.findViewById(R.id.text1);
        message.setTextColor(color);
        if (isReboot) message.setText(R.string.reboot_to_reset_message);

        TextView reasonView = d.findViewById(R.id.text1);
        TextView messageView = d.findViewById(R.id.text2);

        reasonView.setTextColor(color);
        messageView.setTextColor(color);

        messageView.setText(getRebootMessage(isReboot, reason));
        String rebootReasonMessage = getReasonMessage(reason);
        if (rebootReasonMessage != null) {
            reasonView.setVisibility(View.VISIBLE);
            reasonView.setText(rebootReasonMessage);
        }

        GradientColors colors = Dependency.get(SysuiColorExtractor.class).getNeutralColors();
        background.setColor(colors.getMainColor(), false);
@@ -149,6 +159,30 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks,
        d.show();
    }

    @StringRes
    private int getRebootMessage(boolean isReboot, @Nullable String reason) {
        if (reason != null && reason.startsWith(PowerManager.REBOOT_RECOVERY_UPDATE)) {
            return R.string.reboot_to_update_reboot;
        } else if (reason != null && reason.equals(PowerManager.REBOOT_RECOVERY)) {
            return R.string.reboot_to_reset_message;
        } else if (isReboot) {
            return R.string.reboot_to_reset_message;
        } else {
            return R.string.shutdown_progress;
        }
    }

    @Nullable
    private String getReasonMessage(@Nullable String reason) {
        if (reason != null && reason.startsWith(PowerManager.REBOOT_RECOVERY_UPDATE)) {
            return mContext.getString(R.string.reboot_to_update_title);
        } else if (reason != null && reason.equals(PowerManager.REBOOT_RECOVERY)) {
            return mContext.getString(R.string.reboot_to_reset_title);
        } else {
            return null;
        }
    }

    @Override
    public void disable(int displayId, int state1, int state2, boolean animate) {
        final boolean disabled = (state2 & DISABLE2_GLOBAL_ACTIONS) != 0;
+4 −2
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ import android.util.TimingsTraceLog;
import android.view.WindowManager;

import com.android.internal.telephony.ITelephony;
import com.android.server.RescueParty;
import com.android.server.LocalServices;
import com.android.server.RescueParty;
import com.android.server.pm.PackageManagerService;
import com.android.server.statusbar.StatusBarManagerInternal;

@@ -307,7 +307,9 @@ public final class ShutdownThread extends Thread {
                            com.android.internal.R.string.reboot_to_update_reboot));
            }
        } else if (mReason != null && mReason.equals(PowerManager.REBOOT_RECOVERY)) {
            if (RescueParty.isAttemptingFactoryReset()) {
            if (showSysuiReboot()) {
                return null;
            } else if (RescueParty.isAttemptingFactoryReset()) {
                // We're not actually doing a factory reset yet; we're rebooting
                // to ask the user if they'd like to reset, so give them a less
                // scary dialog message.