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

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

Merge "StatusBarContentInsetsProvider: call start in init when flag is disabled" into main

parents a6a28270 4234fccc
Loading
Loading
Loading
Loading
+98 −3
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.systemui.statusbar.phone
import android.content.Context
import android.content.res.Configuration
import android.graphics.Rect
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.view.Display
import android.view.DisplayCutout
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -29,6 +31,7 @@ import com.android.systemui.SysUICutoutProvider
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.commandline.CommandRegistry
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.leak.RotationUtils
import com.android.systemui.util.leak.RotationUtils.ROTATION_LANDSCAPE
@@ -1051,7 +1054,8 @@ class StatusBarContentInsetsProviderTest : SysuiTestCase() {
    }

    @Test
    fun onMaxBoundsChanged_beforeStart_listenerNotNotified() {
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onMaxBoundsChanged_beforeStart_flagEnabled_listenerNotNotified() {
        // Start out with an existing configuration with bounds
        configuration.windowConfiguration.setMaxBounds(0, 0, 100, 100)
        configurationController.onConfigurationChanged(configuration)
@@ -1083,7 +1087,41 @@ class StatusBarContentInsetsProviderTest : SysuiTestCase() {
    }

    @Test
    fun onDensityOrFontScaleChanged_beforeStart_listenerNotNotified() {
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onMaxBoundsChanged_beforeStart_flagDisabled_listenerNotNotified() {
        // Start out with an existing configuration with bounds
        configuration.windowConfiguration.setMaxBounds(0, 0, 100, 100)
        configurationController.onConfigurationChanged(configuration)
        val provider =
            StatusBarContentInsetsProviderImpl(
                contextMock,
                configurationController,
                mock<DumpManager>(),
                mock<CommandRegistry>(),
                mock<SysUICutoutProvider>(),
            )
        val listener =
            object : StatusBarContentInsetsChangedListener {
                var triggered = false

                override fun onStatusBarContentInsetsChanged() {
                    triggered = true
                }
            }
        provider.addCallback(listener)

        // WHEN the config is updated with new bounds
        // but provider is not started
        configuration.windowConfiguration.setMaxBounds(0, 0, 456, 789)
        configurationController.onConfigurationChanged(configuration)

        // THEN the listener is notified
        assertThat(listener.triggered).isTrue()
    }

    @Test
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onDensityOrFontScaleChanged_beforeStart_flagEnabled_listenerNotNotified() {
        configuration.densityDpi = 12
        val provider =
            StatusBarContentInsetsProviderImpl(
@@ -1111,6 +1149,36 @@ class StatusBarContentInsetsProviderTest : SysuiTestCase() {
        assertThat(listener.triggered).isFalse()
    }

    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onDensityOrFontScaleChanged_beforeStart_flagDisabled_listenerNotified() {
        configuration.densityDpi = 12
        val provider =
            StatusBarContentInsetsProviderImpl(
                contextMock,
                configurationController,
                mock<DumpManager>(),
                mock<CommandRegistry>(),
                mock<SysUICutoutProvider>(),
            )
        val listener =
            object : StatusBarContentInsetsChangedListener {
                var triggered = false

                override fun onStatusBarContentInsetsChanged() {
                    triggered = true
                }
            }
        provider.addCallback(listener)

        // WHEN the config is updated, but the provider is not started
        configuration.densityDpi = 20
        configurationController.onConfigurationChanged(configuration)

        // THEN the listener is notified
        assertThat(listener.triggered).isTrue()
    }

    @Test
    fun onDensityOrFontScaleChanged_afterStart_listenerNotified() {
        configuration.densityDpi = 12
@@ -1169,7 +1237,8 @@ class StatusBarContentInsetsProviderTest : SysuiTestCase() {
    }

    @Test
    fun onThemeChanged_beforeStart_listenerNotNotified() {
    @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onThemeChanged_beforeStart_flagEnabled_listenerNotNotified() {
        val provider =
            StatusBarContentInsetsProviderImpl(
                contextMock,
@@ -1193,6 +1262,32 @@ class StatusBarContentInsetsProviderTest : SysuiTestCase() {
        assertThat(listener.triggered).isFalse()
    }

    @Test
    @DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
    fun onThemeChanged_beforeStart_flagDisabled_listenerNotified() {
        val provider =
            StatusBarContentInsetsProviderImpl(
                contextMock,
                configurationController,
                mock<DumpManager>(),
                mock<CommandRegistry>(),
                mock<SysUICutoutProvider>(),
            )
        val listener =
            object : StatusBarContentInsetsChangedListener {
                var triggered = false

                override fun onStatusBarContentInsetsChanged() {
                    triggered = true
                }
            }
        provider.addCallback(listener)

        configurationController.notifyThemeChanged()

        assertThat(listener.triggered).isTrue()
    }

    private fun assertRects(
        expected: Rect,
        actual: Rect,
+8 −0
Original line number Diff line number Diff line
@@ -174,6 +174,14 @@ constructor(
    private val dumpableName = TAG + nameSuffix
    private val commandName = StatusBarInsetsCommand.NAME + nameSuffix

    init {
        if (!StatusBarConnectedDisplays.isEnabled) {
            // Call start(), since it is not called when the flag is disabled, to keep the old
            // behavior as it was.
            start()
        }
    }

    override fun start() {
        configurationController.addCallback(this)
        dumpManager.registerDumpable(dumpableName, this)