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

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

Merge "Change status bar window height on config change (on all displays)" into main

parents ba6b1a28 1502f3be
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import com.android.systemui.concurrency.fakeExecutor
import com.android.systemui.fragments.fragmentService
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.policy.statusBarConfigurationController
import com.android.systemui.statusbar.policy.mockStatusBarConfigurationController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -47,7 +47,7 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {
    private val fakeWindowManager = kosmos.fakeWindowManager
    private val mockFragmentService = kosmos.fragmentService
    private val fakeStatusBarWindowViewInflater = kosmos.fakeStatusBarWindowViewInflater
    private val statusBarConfigurationController = kosmos.statusBarConfigurationController
    private val statusBarConfigurationController = kosmos.mockStatusBarConfigurationController

    @Before
    fun setUp() {
@@ -133,4 +133,24 @@ class StatusBarWindowControllerImplTest : SysuiTestCase() {

        assertThat(fakeWindowManager.addedViews.keys).containsExactly(windowView)
    }

    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attachThenStops_connectedDisplaysFlagEnabled_registersAndUnregistersConfigControllerListener() {
        underTest.attach()

        verify(statusBarConfigurationController).addCallback(any())

        underTest.stop()

        verify(statusBarConfigurationController).removeCallback(any())
    }

    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun attach_connectedDisplaysFlagDisabled_doesNotRegisterConfigControllerListener() {
        underTest.attach()

        verify(statusBarConfigurationController, never()).addCallback(any())
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.Gefingerpoken;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeExpandsOnStatusBarLongPress;
import com.android.systemui.shade.StatusBarLongPressGestureDetector;
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays;
import com.android.systemui.statusbar.phone.userswitcher.StatusBarUserSwitcherContainer;
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore;
import com.android.systemui.user.ui.binder.StatusBarUserChipViewBinder;
@@ -340,6 +341,10 @@ public class PhoneStatusBarView extends FrameLayout {
        if (Flags.statusBarStopUpdatingWindowHeight()) {
            return;
        }
        if (StatusBarConnectedDisplays.isEnabled()) {
            // Handled directly from StatusBarWindowControllerImpl (for each display)
            return;
        }
        mStatusBarWindowControllerStore.getDefaultDisplay().refreshStatusBarHeight();
    }

+15 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static com.android.systemui.util.leak.RotationUtils.ROTATION_SEASCAPE;
import static com.android.systemui.util.leak.RotationUtils.ROTATION_UPSIDE_DOWN;

import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
@@ -58,6 +59,7 @@ import com.android.systemui.statusbar.core.StatusBarConnectedDisplays;
import com.android.systemui.statusbar.core.StatusBarRootModernization;
import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController;
import com.android.systemui.statusbar.layout.StatusBarContentInsetsProvider;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.window.StatusBarWindowModule.InternalWindowViewInflater;
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
import com.android.systemui.unfold.util.JankMonitorTransitionProgressListener;
@@ -95,6 +97,14 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
    private final WindowManager.LayoutParams mLpChanged;
    private final Binder mInsetsSourceOwner = new Binder();

    private final ConfigurationController.ConfigurationListener mConfigurationListener =
            new ConfigurationController.ConfigurationListener() {
                @Override
                public void onConfigChanged(Configuration newConfig) {
                    refreshStatusBarHeight();
                }
            };

    @AssistedInject
    public StatusBarWindowControllerImpl(
            @Assisted Context context,
@@ -174,6 +184,10 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
                            + " doesn't exist anymore.",
                    e);
        }
        if (StatusBarConnectedDisplays.isEnabled()) {
            mStatusBarConfigurationController.addCallback(mConfigurationListener);
            refreshStatusBarHeight();
        }
        mLpChanged.copyFrom(mLp);

        mContentInsetsProvider.addCallback(this::calculateStatusBarLocationsForAllRotations);
@@ -195,7 +209,7 @@ public class StatusBarWindowControllerImpl implements StatusBarWindowController
            // it here will fail too, since it wasn't added in the first place.
            Log.e(TAG, "Failed to remove View from WindowManager. View was not attached", e);
        }

        mStatusBarConfigurationController.removeCallback(mConfigurationListener);
        if (StatusBarRootModernization.isEnabled()) {
            return;
        }
+22 −11
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.systemui.Flags.FLAG_STATUS_BAR_SWIPE_OVER_CHIP
import com.android.systemui.Gefingerpoken
import com.android.systemui.SysuiTestCase
import com.android.systemui.res.R
import com.android.systemui.shared.Flags.FLAG_STATUS_BAR_CONNECTED_DISPLAYS
import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
import com.android.systemui.util.mockito.mock
@@ -186,24 +187,34 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
    }

    @Test
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onAttachedToWindow_flagOff_updatesWindowHeight() {
    @EnableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    @DisableFlags(FLAG_STATUS_BAR_CONNECTED_DISPLAYS)
    fun onAttachedToWindow_stopUpdatingHeightFlagOn_connectedDisplayFlagOff_doesNotUpdateWindowHeight() {
        view.onAttachedToWindow()

        verify(windowController).refreshStatusBarHeight()
        verify(windowController, never()).refreshStatusBarHeight()
    }

    @Test
    @EnableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onAttachedToWindow_flagOn_doesNotUpdateWindowHeight() {
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    @EnableFlags(FLAG_STATUS_BAR_CONNECTED_DISPLAYS)
    fun onAttachedToWindow_stopUpdatingHeightFlagOff_connectedDisplayFlagOn_doesNotUpdateWindowHeight() {
        view.onAttachedToWindow()

        verify(windowController, never()).refreshStatusBarHeight()
    }

    @Test
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onConfigurationChanged_flagOff_updatesWindowHeight() {
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT, FLAG_STATUS_BAR_CONNECTED_DISPLAYS)
    fun onAttachedToWindow_stopUpdatingHeightFlagOff_connectedDisplayFlagOff_updatesWindowHeight() {
        view.onAttachedToWindow()

        verify(windowController).refreshStatusBarHeight()
    }

    @Test
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT, FLAG_STATUS_BAR_CONNECTED_DISPLAYS)
    fun onConfigurationChanged_stopUpdatingHeightFlagOff_connectedDisplayFlagOff_updatesWindowHeight() {
        view.onConfigurationChanged(Configuration())

        verify(windowController).refreshStatusBarHeight()
@@ -211,15 +222,15 @@ class PhoneStatusBarViewTest : SysuiTestCase() {

    @Test
    @EnableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onConfigurationChanged_flagOn_doesNotUpdateWindowHeight() {
    fun onConfigurationChanged_stopUpdatingHeightFlagOn_doesNotUpdateWindowHeight() {
        view.onConfigurationChanged(Configuration())

        verify(windowController, never()).refreshStatusBarHeight()
    }

    @Test
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onConfigurationChanged_multipleCalls_flagOff_updatesWindowHeightMultipleTimes() {
    @DisableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT, FLAG_STATUS_BAR_CONNECTED_DISPLAYS)
    fun onConfigurationChanged_multipleCalls_stopUpdatingHeightFlagOff_updatesWindowHeightMultipleTimes() {
        view.onConfigurationChanged(Configuration())
        view.onConfigurationChanged(Configuration())
        view.onConfigurationChanged(Configuration())
@@ -230,7 +241,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() {

    @Test
    @EnableFlags(FLAG_STATUS_BAR_STOP_UPDATING_WINDOW_HEIGHT)
    fun onConfigurationChanged_multipleCalls_flagOn_neverUpdatesWindowHeight() {
    fun onConfigurationChanged_multipleCalls_stopUpdatingHeightFlagOn_neverUpdatesWindowHeight() {
        view.onConfigurationChanged(Configuration())
        view.onConfigurationChanged(Configuration())
        view.onConfigurationChanged(Configuration())
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.policy

import com.android.systemui.kosmos.Kosmos
import com.android.systemui.statusbar.data.repository.StatusBarConfigurationController
import org.mockito.kotlin.mock

var Kosmos.configurationController: ConfigurationController by
    Kosmos.Fixture { fakeConfigurationController }
@@ -26,5 +27,8 @@ val Kosmos.fakeConfigurationController: FakeConfigurationController by
val Kosmos.statusBarConfigurationController: StatusBarConfigurationController by
    Kosmos.Fixture { fakeConfigurationController }

val Kosmos.mockStatusBarConfigurationController by
    Kosmos.Fixture { mock<StatusBarConfigurationController>() }

val ConfigurationController.fake
    get() = this as FakeConfigurationController
Loading