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

Commit 341016da authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Set per display status bar window titles" into main

parents 210bcb87 b0e880d4
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