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

Commit 21f53177 authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Propagate the display id with SysUIState changes to launcher

This changes the ILauncherProxy.aidl interface to also allow propagating the display id from SysUI to launcher for each SysUIState update.

The SysUI part of filling SysUI state correctly has not been implemented yet. But for now, only default display flags are propagated anyway.

Bug: 362719719
Bug: 398011576
Test: LauncherProxyServiceTest
Flag: com.android.systemui.shade_window_goes_around
Change-Id: I985e77356344e40435b00e14d6305bdaa81b960b
parent 7edaa84e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ oneway interface ILauncherProxy {
    /**
     * Sent when some system ui state changes.
     */
    void onSystemUiStateChanged(long stateFlags) = 16;
    void onSystemUiStateChanged(long stateFlags, int displayId) = 16;

    /**
     * Sent when suggested rotation button could be shown
+21 −5
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
import android.view.Display;
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
@@ -94,6 +95,7 @@ import com.android.systemui.keyguard.KeyguardWmStateRefactor;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.keyguard.ui.view.InWindowLauncherUnlockAnimationManager;
import com.android.systemui.model.SysUiState;
import com.android.systemui.model.SysUiState.SysUiStateCallback;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.navigationbar.views.NavigationBar;
@@ -584,7 +586,8 @@ public class LauncherProxyService implements CallbackController<LauncherProxyLis

            // Force-update the systemui state flags
            updateSystemUiStateFlags();
            notifySystemUiStateFlags(mSysUiState.getFlags());
            // TODO b/398011576 - send the state for all displays.
            notifySystemUiStateFlags(mSysUiState.getFlags(), Display.DEFAULT_DISPLAY);

            notifyConnectionChanged();
        }
@@ -650,6 +653,17 @@ public class LauncherProxyService implements CallbackController<LauncherProxyLis
                }
            };

    private final SysUiStateCallback mSysUiStateCallback =
            new SysUiStateCallback() {
                @Override
                public void onSystemUiStateChanged(long sysUiFlags) {
                }

                @Override
                public void onSystemUiStateChangedForDisplay(long sysUiFlags, int displayId) {
                    notifySystemUiStateFlags(sysUiFlags, displayId);
                }
            };
    @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
    @Inject
    public LauncherProxyService(Context context,
@@ -708,8 +722,10 @@ public class LauncherProxyService implements CallbackController<LauncherProxyLis
                com.android.internal.R.string.config_recentsComponentName));
        mQuickStepIntent = new Intent(ACTION_QUICKSTEP)
                .setPackage(mRecentsComponentName.getPackageName());
        // TODO b/398011576 - Here we're still only handling the default display state. We should
        //  have a callback for any sysuiState change.
        mSysUiState = sysUiState;
        mSysUiState.addCallback(this::notifySystemUiStateFlags);
        mSysUiState.addCallback(mSysUiStateCallback);
        mUiEventLogger = uiEventLogger;
        mDisplayTracker = displayTracker;
        mUnfoldTransitionProgressForwarder = unfoldTransitionProgressForwarder;
@@ -815,14 +831,14 @@ public class LauncherProxyService implements CallbackController<LauncherProxyLis
        }
    }

    private void notifySystemUiStateFlags(@SystemUiStateFlags long flags) {
    private void notifySystemUiStateFlags(@SystemUiStateFlags long flags, int displayId) {
        if (SysUiState.DEBUG) {
            Log.d(TAG_OPS, "Notifying sysui state change to launcher service: proxy="
                    + mLauncherProxy + " flags=" + flags);
                    + mLauncherProxy + " flags=" + flags + " displayId=" + displayId);
        }
        try {
            if (mLauncherProxy != null) {
                mLauncherProxy.onSystemUiStateChanged(flags);
                mLauncherProxy.onSystemUiStateChanged(flags, displayId);
            }
        } catch (RemoteException e) {
            Log.e(TAG_OPS, "Failed to notify sysui state change", e);
+10 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.PowerManager
import android.os.UserManager
import android.testing.TestableContext
import android.testing.TestableLooper
import android.view.Display
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.app.AssistUtils
@@ -66,6 +67,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
@@ -165,7 +167,8 @@ class LauncherProxyServiceTest : SysuiTestCase() {

        verify(launcherProxy)
            .onSystemUiStateChanged(
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_AWAKE }
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_AWAKE },
                eq(Display.DEFAULT_DISPLAY),
            )
    }

@@ -175,7 +178,8 @@ class LauncherProxyServiceTest : SysuiTestCase() {

        verify(launcherProxy)
            .onSystemUiStateChanged(
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_WAKING }
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_WAKING },
                eq(Display.DEFAULT_DISPLAY),
            )
    }

@@ -185,7 +189,8 @@ class LauncherProxyServiceTest : SysuiTestCase() {

        verify(launcherProxy)
            .onSystemUiStateChanged(
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_ASLEEP }
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_ASLEEP },
                eq(Display.DEFAULT_DISPLAY),
            )
    }

@@ -197,7 +202,8 @@ class LauncherProxyServiceTest : SysuiTestCase() {

        verify(launcherProxy)
            .onSystemUiStateChanged(
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_GOING_TO_SLEEP }
                longThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_GOING_TO_SLEEP },
                eq(Display.DEFAULT_DISPLAY),
            )
    }