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

Commit 3a254cf0 authored by Chris Göllner's avatar Chris Göllner Committed by Chris Göllner
Browse files

Make sure StatusBarContentInsetsProvider for correct display is used

Before, there were still many places retrieving the provider for the
default display, which can return wrong values when on a secondary
display.

Test: atest SystemUITests
Bug: 369337857
Flag: com.android.systemui.status_bar_connected_displays
Change-Id: I7d938e1b53d25817946d2d1da4b67ab9b7735c68
parent ffeea751
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ class QsBatteryModeControllerTest : SysuiTestCase() {

    private val kosmos = testKosmos()
    private val insetsProviderStore = kosmos.fakeStatusBarContentInsetsProviderStore
    private val insetsProvider = insetsProviderStore.defaultDisplay
    private val insetsProvider = insetsProviderStore.forDisplay(context.displayId)

    @JvmField @Rule val mockitoRule = MockitoJUnit.rule()!!

+2 −1
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() {

        Mockito.`when`(iconManagerFactory.create(ArgumentMatchers.any(), ArgumentMatchers.any()))
            .thenReturn(iconManager)
        Mockito.`when`(statusBarContentInsetsProviderStore.defaultDisplay)
        Mockito.`when`(statusBarContentInsetsProviderStore.forDisplay(context.displayId))
            .thenReturn(kosmos.statusBarContentInsetsProvider)
        allowTestableLooperAsMainThread()
        looper.runWithLooper {
@@ -178,6 +178,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() {
    private fun createController(): KeyguardStatusBarViewController {
        return KeyguardStatusBarViewController(
            kosmos.testDispatcher,
            context,
            keyguardStatusBarView,
            carrierTextController,
            configurationController,
+3 −2
Original line number Diff line number Diff line
@@ -15,10 +15,11 @@ class QsBatteryModeController
@Inject
constructor(
    @ShadeDisplayAware private val context: Context,
    insetsProviderStore: StatusBarContentInsetsProviderStore,
    private val insetsProviderStore: StatusBarContentInsetsProviderStore,
) {

    private val insetsProvider = insetsProviderStore.defaultDisplay
    private val insetsProvider
        get() = insetsProviderStore.forDisplay(context.displayId)

    private companion object {
        // MotionLayout frames are in [0, 100]. Where 0 and 100 are reserved for start and end
+4 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter
import android.annotation.IdRes
import android.app.PendingIntent
import android.app.StatusBarManager
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.graphics.Insets
@@ -92,6 +93,7 @@ constructor(
    private val privacyIconsController: HeaderPrivacyIconsController,
    private val insetsProviderStore: StatusBarContentInsetsProviderStore,
    @ShadeDisplayAware private val configurationController: ConfigurationController,
    @ShadeDisplayAware private val shadeDisplayAwareContext: Context,
    private val variableDateViewControllerFactory: VariableDateViewController.Factory,
    @Named(SHADE_HEADER) private val batteryMeterViewController: BatteryMeterViewController,
    private val dumpManager: DumpManager,
@@ -104,7 +106,8 @@ constructor(
    private val statusOverlayHoverListenerFactory: StatusOverlayHoverListenerFactory,
) : ViewController<View>(header), Dumpable {

    private val insetsProvider = insetsProviderStore.defaultDisplay
    private val insetsProvider
        get() = insetsProviderStore.forDisplay(shadeDisplayAwareContext.displayId)

    companion object {
        /** IDs for transitions and constraints for the [MotionLayout]. */
+13 −4
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.systemui.Flags.updateUserSwitcherBackground;
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow;

import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.ContentObserver;
@@ -56,6 +57,7 @@ import com.android.systemui.log.core.LogLevel;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.res.R;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.ShadeViewStateProvider;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarState;
@@ -113,6 +115,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
            R.id.keyguard_hun_animator_start_tag);

    private final CoroutineDispatcher mCoroutineDispatcher;
    private final Context mContext;
    private final CarrierTextController mCarrierTextController;
    private final ConfigurationController mConfigurationController;
    private final SystemStatusAnimationScheduler mAnimationScheduler;
@@ -128,7 +131,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
    private final KeyguardStatusBarViewModel mKeyguardStatusBarViewModel;
    private final BiometricUnlockController mBiometricUnlockController;
    private final SysuiStatusBarStateController mStatusBarStateController;
    private final StatusBarContentInsetsProvider mInsetsProvider;
    private final StatusBarContentInsetsProviderStore mInsetsProviderStore;
    private final UserManager mUserManager;
    private final StatusBarUserChipViewModel mStatusBarUserChipViewModel;
    private final SecureSettings mSecureSettings;
@@ -313,6 +316,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
    @Inject
    public KeyguardStatusBarViewController(
            @Main CoroutineDispatcher dispatcher,
            @ShadeDisplayAware Context context,
            KeyguardStatusBarView view,
            CarrierTextController carrierTextController,
            ConfigurationController configurationController,
@@ -346,6 +350,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
    ) {
        super(view);
        mCoroutineDispatcher = dispatcher;
        mContext = context;
        mCarrierTextController = carrierTextController;
        mConfigurationController = configurationController;
        mAnimationScheduler = animationScheduler;
@@ -361,7 +366,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
        mKeyguardStatusBarViewModel = keyguardStatusBarViewModel;
        mBiometricUnlockController = biometricUnlockController;
        mStatusBarStateController = statusBarStateController;
        mInsetsProvider = statusBarContentInsetsProviderStore.getDefaultDisplay();
        mInsetsProviderStore = statusBarContentInsetsProviderStore;
        mUserManager = userManager;
        mStatusBarUserChipViewModel = userChipViewModel;
        mSecureSettings = secureSettings;
@@ -403,6 +408,10 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
        mStatusOverlayHoverListenerFactory = statusOverlayHoverListenerFactory;
    }

    private StatusBarContentInsetsProvider insetsProvider() {
        return mInsetsProviderStore.forDisplay(mContext.getDisplayId());
    }

    @Override
    protected void onInit() {
        super.onInit();
@@ -445,7 +454,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
                .createDarkAwareListener(mSystemIconsContainer, mView.darkChangeFlow());
        mSystemIconsContainer.setOnHoverListener(hoverListener);
        mView.setOnApplyWindowInsetsListener(
                (view, windowInsets) -> mView.updateWindowInsets(windowInsets, mInsetsProvider));
                (view, windowInsets) -> mView.updateWindowInsets(windowInsets, insetsProvider()));
        mSecureSettings.registerContentObserverForUserSync(
                Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON,
                false,
@@ -643,7 +652,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
     * {@code OnApplyWindowInsetsListener}s.
     */
    public void setDisplayCutout(@Nullable DisplayCutout displayCutout) {
        mView.setDisplayCutout(displayCutout, mInsetsProvider);
        mView.setDisplayCutout(displayCutout, insetsProvider());
    }

    /**
Loading