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

Commit 72207756 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fix canAffectSystemUiFlags

While trying to simplify the method, a bit too much was
simplified. We still need the translucent check in all cases.

Test: go/wm-smoke
Test: WindowStateTests

Change-Id: Ibd4275ddb80a9ef768a0c39ac53a9edeea431411
Fixes: 71512667
parent 7efb442a
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -1521,10 +1521,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    @Override
    @Override
    public boolean canAffectSystemUiFlags() {
    public boolean canAffectSystemUiFlags() {
        final boolean translucent = mAttrs.alpha == 0.0f;
        final boolean translucent = mAttrs.alpha == 0.0f;
        if (translucent) {
            return false;
        }
        if (mAppToken == null) {
        if (mAppToken == null) {
            final boolean shown = mWinAnimator.getShown();
            final boolean shown = mWinAnimator.getShown();
            final boolean exiting = mAnimatingExit || mDestroying;
            final boolean exiting = mAnimatingExit || mDestroying;
            return shown && !exiting && !translucent;
            return shown && !exiting;
        } else {
        } else {
            return !mAppToken.isHidden();
            return !mAppToken.isHidden();
        }
        }
+13 −3
Original line number Original line Diff line number Diff line
@@ -16,7 +16,6 @@


package com.android.server.wm;
package com.android.server.wm;


import android.util.MergedConfiguration;
import android.view.WindowManager;
import android.view.WindowManager;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
@@ -45,8 +44,7 @@ import static org.junit.Assert.assertTrue;
/**
/**
 * Tests for the {@link WindowState} class.
 * Tests for the {@link WindowState} class.
 *
 *
 * Build/Install/Run:
 * atest FrameworksServicesTests:com.android.server.wm.WindowStateTests
 *  bit FrameworksServicesTests:com.android.server.wm.WindowStateTests
 */
 */
@SmallTest
@SmallTest
@Presubmit
@Presubmit
@@ -213,6 +211,18 @@ public class WindowStateTests extends WindowTestsBase {
        testPrepareWindowToDisplayDuringRelayout(true /*wasVisible*/);
        testPrepareWindowToDisplayDuringRelayout(true /*wasVisible*/);
    }
    }


    @Test
    public void testCanAffectSystemUiFlags() throws Exception {
        final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
        app.mToken.setHidden(false);
        assertTrue(app.canAffectSystemUiFlags());
        app.mToken.setHidden(true);
        assertFalse(app.canAffectSystemUiFlags());
        app.mToken.setHidden(false);
        app.mAttrs.alpha = 0.0f;
        assertFalse(app.canAffectSystemUiFlags());
    }

    private void testPrepareWindowToDisplayDuringRelayout(boolean wasVisible) {
    private void testPrepareWindowToDisplayDuringRelayout(boolean wasVisible) {
        final WindowState root = createWindow(null, TYPE_APPLICATION, "root");
        final WindowState root = createWindow(null, TYPE_APPLICATION, "root");
        root.mAttrs.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
        root.mAttrs.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;