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

Commit 4fd3cb52 authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Cleanup SysUIState callback interface

This gets rid of the old method without displayId parameter and refactors the few places that were using it

Bug: 362719719
Bug: 398011576
Test: SysUiStateTest
Flag: com.android.systemui.shade_window_goes_around
Change-Id: I79e72ffd3271e170ef264e73a0d70567650432f6
parent 7d55651b
Loading
Loading
Loading
Loading
+13 −20
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.view.Display;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

@@ -74,7 +76,7 @@ public class SysUiStateTest extends SysuiTestCase {
    public void addSingle_setFlag() {
        setFlags(FLAG_1);

        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1, DEFAULT_DISPLAY);
    }

    @Test
@@ -82,8 +84,8 @@ public class SysUiStateTest extends SysuiTestCase {
        setFlags(FLAG_1);
        setFlags(FLAG_2);

        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1 | FLAG_2);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1, DEFAULT_DISPLAY);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1 | FLAG_2, DEFAULT_DISPLAY);
    }

    @Test
@@ -92,9 +94,9 @@ public class SysUiStateTest extends SysuiTestCase {
        setFlags(FLAG_2);
        mFlagsContainer.setFlag(FLAG_1, false).commitUpdate(DISPLAY_ID);

        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1 | FLAG_2);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_2);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1, DEFAULT_DISPLAY);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1 | FLAG_2, DEFAULT_DISPLAY);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_2, DEFAULT_DISPLAY);
    }

    @Test
@@ -102,7 +104,7 @@ public class SysUiStateTest extends SysuiTestCase {
        setFlags(FLAG_1, FLAG_2, FLAG_3, FLAG_4);

        int expected = FLAG_1 | FLAG_2 | FLAG_3 | FLAG_4;
        verify(mCallback, times(1)).onSystemUiStateChanged(expected);
        verify(mCallback, times(1)).onSystemUiStateChanged(expected, DEFAULT_DISPLAY);
    }

    @Test
@@ -111,9 +113,9 @@ public class SysUiStateTest extends SysuiTestCase {
        mFlagsContainer.setFlag(FLAG_2, false).commitUpdate(DISPLAY_ID);

        int expected1 = FLAG_1 | FLAG_2 | FLAG_3 | FLAG_4;
        verify(mCallback, times(1)).onSystemUiStateChanged(expected1);
        verify(mCallback, times(1)).onSystemUiStateChanged(expected1, DEFAULT_DISPLAY);
        int expected2 = FLAG_1 | FLAG_3 | FLAG_4;
        verify(mCallback, times(1)).onSystemUiStateChanged(expected2);
        verify(mCallback, times(1)).onSystemUiStateChanged(expected2, DEFAULT_DISPLAY);
    }

    @Test
@@ -122,25 +124,16 @@ public class SysUiStateTest extends SysuiTestCase {
        setFlags(FLAG_1, FLAG_2, FLAG_3, FLAG_4);

        int expected = FLAG_1 | FLAG_2 | FLAG_3 | FLAG_4;
        verify(mCallback, times(0)).onSystemUiStateChanged(expected);
        verify(mCallback, times(0)).onSystemUiStateChanged(expected, DEFAULT_DISPLAY);
    }

    @Test
    public void setFlag_receivedForDefaultDisplay() {
        setFlags(FLAG_1);

        verify(mCallback, times(1)).onSystemUiStateChangedForDisplay(FLAG_1, DEFAULT_DISPLAY);
        verify(mCallback, times(1)).onSystemUiStateChanged(FLAG_1, DEFAULT_DISPLAY);
    }

    @Test
    public void setFlag_externalDisplayInstance_defaultDisplayCallbackNotPropagated() {
        var instance = createInstance(/* displayId = */ 2);
        reset(mCallback);
        setFlags(instance, FLAG_1);

        verify(mCallback, times(1)).onSystemUiStateChangedForDisplay(FLAG_1, /* displayId= */ 2);
        verify(mCallback, never()).onSystemUiStateChanged(FLAG_1);
    }

    @Test
    public void init_registersWithDumpManager() {
+5 −15
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
package com.android.systemui.model

import android.util.Log
import android.view.Display
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.display.data.repository.PerDisplayInstanceProviderWithTeardown
@@ -64,14 +63,9 @@ interface SysUiState : Dumpable {

    /** Callback to be notified whenever system UI state flags are changed. */
    interface SysUiStateCallback {
        /** To be called when any SysUiStateFlag gets updated **for the default display** */
        fun onSystemUiStateChanged(@SystemUiStateFlags sysUiFlags: Long)

        /** To be called when any SysUiStateFlag gets updated for a specific [displayId]. */
        fun onSystemUiStateChangedForDisplay(
            @SystemUiStateFlags sysUiFlags: Long,
            displayId: Int,
        ) {}
        fun onSystemUiStateChanged(@SystemUiStateFlags sysUiFlags: Long, displayId: Int)
    }

    /**
@@ -86,6 +80,8 @@ interface SysUiState : Dumpable {
    }
}

private const val TAG = "SysUIState"

class SysUiStateImpl
@AssistedInject
constructor(
@@ -117,7 +113,7 @@ constructor(
     */
    override fun addCallback(callback: SysUiStateCallback) {
        callbacks.add(callback)
        callback.onSystemUiStateChanged(flags)
        callback.onSystemUiStateChanged(flags, displayId)
    }

    /** Callback will no longer receive events on state change */
@@ -182,13 +178,7 @@ constructor(
        }
        if (newFlags != oldFlags) {
            callbacks.forEach { callback: SysUiStateCallback ->
                if (displayId == Display.DEFAULT_DISPLAY) {
                    callback.onSystemUiStateChanged(newFlags)
                }
                callback.onSystemUiStateChangedForDisplay(
                    sysUiFlags = newFlags,
                    displayId = displayId,
                )
                callback.onSystemUiStateChanged(newFlags, displayId)
            }

            _flags = newFlags
+6 −5
Original line number Diff line number Diff line
@@ -356,7 +356,8 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
    private final SysUiState.SysUiStateCallback mSysUiStateCallback =
            new SysUiState.SysUiStateCallback() {
                @Override
        public void onSystemUiStateChanged(@SystemUiStateFlags long sysUiFlags) {
                public void onSystemUiStateChanged(@SystemUiStateFlags long sysUiFlags,
                        int displayId) {
                    mSysUiFlags = sysUiFlags;
                }
            };
+1 −5
Original line number Diff line number Diff line
@@ -656,11 +656,7 @@ 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) {
                public void onSystemUiStateChanged(long sysUiFlags, int displayId) {
                    notifySystemUiStateFlags(sysUiFlags, displayId);
                }
            };
+1 −1
Original line number Diff line number Diff line
@@ -302,7 +302,7 @@ public final class WMShell implements
                        .commitUpdate(mDisplayTracker.getDefaultDisplayId());
            }
        });
        mSysUiState.addCallback(sysUiStateFlag -> {
        mSysUiState.addCallback((sysUiStateFlag, displayId) -> {
            mIsSysUiStateValid = (sysUiStateFlag & INVALID_SYSUI_STATE_MASK) == 0;
            pip.onSystemUiStateChanged(mIsSysUiStateValid, sysUiStateFlag);
        });
Loading