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

Commit daf7bef0 authored by Behnam Heydarshahi's avatar Behnam Heydarshahi
Browse files

Remove flicker at device shutdown

Hide Quick settings shade on power off

Fix: 375573376
Flag: EXEMPT bugfix
Test: Manual. Open shade, set brightness to 90%, open power menu, restart. Should not flicker.
Test: atest GlobalActionsImplTest

Change-Id: I8e66b28120d0470c8f0b19b12f6b227330857221
parent a7dc6209
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
import android.content.Context;

import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -31,26 +31,27 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
    private final Context mContext;
    private final KeyguardStateController mKeyguardStateController;
    private final DeviceProvisionedController mDeviceProvisionedController;
    private final BlurUtils mBlurUtils;
    private final CommandQueue mCommandQueue;
    private final GlobalActionsDialogLite mGlobalActionsDialog;
    private boolean mDisabled;
    private ShutdownUi mShutdownUi;
    private ShadeController mShadeController;

    @Inject
    public GlobalActionsImpl(Context context, CommandQueue commandQueue,
            GlobalActionsDialogLite globalActionsDialog, BlurUtils blurUtils,
            GlobalActionsDialogLite globalActionsDialog,
            KeyguardStateController keyguardStateController,
            DeviceProvisionedController deviceProvisionedController,
            ShadeController shadeController,
            ShutdownUi shutdownUi) {
        mContext = context;
        mGlobalActionsDialog = globalActionsDialog;
        mKeyguardStateController = keyguardStateController;
        mDeviceProvisionedController = deviceProvisionedController;
        mCommandQueue = commandQueue;
        mBlurUtils = blurUtils;
        mCommandQueue.addCallback(this);
        mShutdownUi = shutdownUi;
        mShadeController = shadeController;
    }

    @Override
@@ -70,6 +71,7 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
    @Override
    public void showShutdownUi(boolean isReboot, String reason) {
        mShutdownUi.showShutdownUi(isReboot, reason);
        mShadeController.collapseShade();
    }
    @Override
    public void disable(int displayId, int state1, int state2, boolean animate) {
+67 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.globalactions

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.shade.ShadeController
import com.android.systemui.statusbar.commandQueue
import com.android.systemui.statusbar.policy.deviceProvisionedController
import com.android.systemui.statusbar.policy.keyguardStateController
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify

@SmallTest
@RunWith(AndroidJUnit4::class)
class GlobalActionsImplTest : SysuiTestCase() {
    private val shadeController = mock<ShadeController>()
    private lateinit var underTest: GlobalActionsImpl

    @Before
    fun setUp() {
        val kosmos = Kosmos()
        underTest =
            GlobalActionsImpl(
                context,
                kosmos.commandQueue,
                kosmos.globalActionsDialogLite,
                kosmos.keyguardStateController,
                kosmos.deviceProvisionedController,
                shadeController,
                mock<ShutdownUi>(),
            )
    }

    @Test
    fun testShutdown_collapsesShade() {
        underTest.showShutdownUi(false, "test")

        verify(shadeController).collapseShade()
    }

    @Test
    fun testReboot_collapsesShade() {
        underTest.showShutdownUi(true, "test")

        verify(shadeController).collapseShade()
    }
}