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

Commit b0e880d4 authored by Chris Göllner's avatar Chris Göllner
Browse files

Set per display status bar window titles

To make it easier to debug in web-hv or hsv, this adds per display
window titles.

For the default display, the title will be as before "StatusBar". For
non default displays, the title will have the display id suffix.
For example, if the display id is "123", the title will be
"StatusBar123".

Test: StatusBarWindowControllerImplTest.kt
Flag: com.android.systemui.shared.status_bar_connected_displays
Bug: 362720336
Change-Id: Ifc9c536c341c165e648f0d7fae70f56ea070d33a
parent 3c079626
Loading
Loading
Loading
Loading
+38 −7
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.systemui.statusbar.window

import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.view.Display
import android.view.fakeWindowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -28,7 +29,6 @@ import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.policy.mockStatusBarConfigurationController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
@@ -42,21 +42,16 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    private val kosmos =
        testKosmos().also { it.statusBarWindowViewInflater = it.fakeStatusBarWindowViewInflater }

    private lateinit var underTest: StatusBarWindowControllerImpl
    private val fakeExecutor = kosmos.fakeExecutor
    private val fakeWindowManager = kosmos.fakeWindowManager
    private val mockFragmentService = kosmos.fragmentService
    private val fakeStatusBarWindowViewInflater = kosmos.fakeStatusBarWindowViewInflater
    private val statusBarConfigurationController = kosmos.mockStatusBarConfigurationController

    @Before
    fun setUp() {
        underTest = kosmos.statusBarWindowControllerImpl
    }

    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attach_connectedDisplaysFlagEnabled_setsConfigControllerOnWindowView() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.attach()
@@ -67,6 +62,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attach_connectedDisplaysFlagDisabled_doesNotSetConfigControllerOnWindowView() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val mockWindowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.attach()
@@ -77,6 +73,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test
    @EnableFlags(StatusBarRootModernization.FLAG_NAME, StatusBarConnectedDisplays.FLAG_NAME)
    fun stop_statusBarModernizationFlagEnabled_doesNotRemoveFragment() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.stop()
@@ -89,6 +86,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @DisableFlags(StatusBarRootModernization.FLAG_NAME)
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun stop_statusBarModernizationFlagDisabled_removesFragment() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.stop()
@@ -101,6 +99,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @DisableFlags(StatusBarRootModernization.FLAG_NAME)
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun stop_statusBarModernizationFlagDisabled_removesFragmentOnExecutor() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.stop()
@@ -113,6 +112,8 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun stop_removesWindowViewFromWindowManager() {
        val underTest = kosmos.statusBarWindowControllerImpl

        underTest.attach()
        underTest.stop()

@@ -122,11 +123,14 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test(expected = IllegalStateException::class)
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun stop_connectedDisplaysFlagDisabled_crashes() {
        val underTest = kosmos.statusBarWindowControllerImpl

        underTest.stop()
    }

    @Test
    fun attach_windowViewAddedToWindowManager() {
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.attach()
@@ -137,6 +141,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attachThenStops_connectedDisplaysFlagEnabled_registersAndUnregistersConfigControllerListener() {
        val underTest = kosmos.statusBarWindowControllerImpl
        underTest.attach()

        verify(statusBarConfigurationController).addCallback(any())
@@ -149,8 +154,34 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attach_connectedDisplaysFlagDisabled_doesNotRegisterConfigControllerListener() {
        val underTest = kosmos.statusBarWindowControllerImpl

        underTest.attach()

        verify(statusBarConfigurationController, never()).addCallback(any())
    }

    @Test
    fun attach_defaultDisplay_attachedWindowHasDefaultTitle() {
        kosmos.statusBarWindowControllerImplDisplayId = Display.DEFAULT_DISPLAY
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.attach()

        val windowParams = fakeWindowManager.addedViews[windowView]!!
        assertThat(windowParams.title).isEqualTo("StatusBar")
    }

    @Test
    fun attach_nonDefaultDisplay_attachedWindowHasTitleWithDisplayId() {
        kosmos.statusBarWindowControllerImplDisplayId = 123
        val underTest = kosmos.statusBarWindowControllerImpl
        val windowView = fakeStatusBarWindowViewInflater.inflatedMockViews.first()

        underTest.attach()

        val windowParams = fakeWindowManager.addedViews[windowView]!!
        assertThat(windowParams.title).isEqualTo("StatusBar(displayId=123)")
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ interface StatusBarWindowController {
            windowManager: WindowManager,
            statusBarConfigurationController: StatusBarConfigurationController,
            contentInsetsProvider: StatusBarContentInsetsProvider,
            displayId: Int,
        ): StatusBarWindowController
    }
}
+10 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.os.Binder;
import android.os.RemoteException;
import android.os.Trace;
import android.util.Log;
import android.view.Display;
import android.view.DisplayCutout;
import android.view.Gravity;
import android.view.IWindowManager;
@@ -84,6 +85,7 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
    private final IWindowManager mIWindowManager;
    private final StatusBarContentInsetsProvider mContentInsetsProvider;
    private final Executor mMainExecutor;
    private final int mDisplayId;
    private int mBarHeight = -1;
    private final State mCurrentState = new State();
    private boolean mIsAttached;
@@ -115,8 +117,10 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
            @Assisted StatusBarContentInsetsProvider contentInsetsProvider,
            FragmentService fragmentService,
            Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider,
            @Main Executor mainExecutor) {
            @Main Executor mainExecutor,
            @Assisted int displayId) {
        mContext = context;
        mDisplayId = displayId;
        mWindowManager = windowManager;
        mStatusBarConfigurationController = statusBarConfigurationController;
        mIWindowManager = iWindowManager;
@@ -282,7 +286,9 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
        lp.token = new Binder();
        lp.gravity = Gravity.TOP;
        lp.setFitInsetsTypes(0 /* types */);
        lp.setTitle("StatusBar");
        String titleSuffix =
                mDisplayId == Display.DEFAULT_DISPLAY ? "" : "(displayId=" + mDisplayId + ")";
        lp.setTitle("StatusBar" + titleSuffix);
        lp.packageName = mContext.getPackageName();
        lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
        final InsetsFrameProvider gestureInsetsProvider =
@@ -421,7 +427,8 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
                @NonNull Context context,
                @NonNull WindowManager windowManager,
                @NonNull StatusBarConfigurationController statusBarConfigurationController,
                @NonNull StatusBarContentInsetsProvider contentInsetsProvider);
                @NonNull StatusBarContentInsetsProvider contentInsetsProvider,
                int displayId);
    }

}
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.window

import android.content.Context
import android.view.Display
import android.view.WindowManager
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
@@ -70,6 +71,7 @@ constructor(
            statusBarDisplayContext.windowManager,
            statusBarConfigurationController,
            contentInsetsProvider,
            displayId,
        )
    }

@@ -97,6 +99,7 @@ constructor(
            windowManager,
            statusBarConfigurationControllerStore.defaultDisplay,
            statusBarContentInsetsProviderStore.defaultDisplay,
            Display.DEFAULT_DISPLAY,
        )
    ) {

+1 −0
Original line number Diff line number Diff line
@@ -27,5 +27,6 @@ class FakeStatusBarWindowControllerFactory : StatusBarWindowController.Factory {
        windowManager: WindowManager,
        statusBarConfigurationController: StatusBarConfigurationController,
        contentInsetsProvider: StatusBarContentInsetsProvider,
        displayId: Int,
    ) = FakeStatusBarWindowController()
}
Loading