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

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

Merge "Fix WiFi icon in shade header being too large on connected displays" into main

parents 94dd5ff9 c951e967
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -725,6 +725,16 @@ flag {
    }
}

flag {
    name: "fix_shade_header_wrong_icon_size"
    namespace: "lse_desktop_experience"
    description: "Fix system icon size in shade header on connected displays"
    bug: "412409667"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "clipboard_use_description_mimetype"
    namespace: "systemui"
+35 −25
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@ package com.android.systemui.statusbar.pipeline.wifi.ui.view

import android.annotation.SuppressLint
import android.content.Context
import android.content.res.Configuration
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.ImageView
import com.android.keyguard.AlphaOptimizedLinearLayout
import com.android.systemui.Flags
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.core.NewStatusBarIcons
@@ -60,6 +62,20 @@ class ModernStatusBarWifiView(context: Context, attrs: AttributeSet?) :
            return (LayoutInflater.from(context).inflate(R.layout.new_status_bar_wifi_group, null)
                    as ModernStatusBarWifiView)
                .apply {
                    updateDimensions()

                    initView(slot) { WifiViewBinder.bind(this, wifiViewModel) }
                }
        }
    }

    public override fun onConfigurationChanged(newConfig: Configuration?) {
        if (Flags.fixShadeHeaderWrongIconSize()) {
            updateDimensions()
        }
    }

    private fun updateDimensions() {
        // Flag-specific configuration
        if (NewStatusBarIcons.isEnabled) {
            // The newer asset does not embed whitespace around it, and is therefore
@@ -69,9 +85,7 @@ class ModernStatusBarWifiView(context: Context, attrs: AttributeSet?) :
            val lp = iconView.layoutParams
            lp.width = ViewGroup.LayoutParams.WRAP_CONTENT
            lp.height =
                            resources.getDimensionPixelSize(
                                R.dimen.status_bar_wifi_signal_height_updated
                            )
                resources.getDimensionPixelSize(R.dimen.status_bar_wifi_signal_height_updated)

            // New status bar icons have a single 3sp spacing defined
            (requireViewById<AlphaOptimizedLinearLayout>(R.id.wifi_group).layoutParams
@@ -85,9 +99,5 @@ class ModernStatusBarWifiView(context: Context, attrs: AttributeSet?) :
                    marginEnd = margin
                }
        }

                    initView(slot) { WifiViewBinder.bind(this, wifiViewModel) }
                }
        }
    }
}
+55 −5
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.systemui.statusbar.pipeline.wifi.ui.view

import android.content.res.ColorStateList
import android.content.res.Configuration
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.TestableLooper.RunWithLooper
@@ -25,12 +28,14 @@ import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.log.table.logcatTableLogBuffer
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON
import com.android.systemui.statusbar.core.NewStatusBarIcons
import com.android.systemui.statusbar.phone.StatusBarLocation
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
@@ -80,6 +85,8 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        // To ensure testable resources are being used.
        context.orCreateTestableResources
        testableLooper = TestableLooper.get(this)

        airplaneModeRepository = FakeAirplaneModeRepository()
@@ -109,11 +116,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
                scope,
                wifiConstants,
            )
        viewModel =
            viewModelForLocation(
                viewModelCommon,
                StatusBarLocation.HOME,
            )
        viewModel = viewModelForLocation(viewModelCommon, StatusBarLocation.HOME)
    }

    // Note: The following tests are more like integration tests, since they stand up a full
@@ -254,6 +257,53 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() {
        ViewUtils.detachView(view)
    }

    @Test
    @EnableFlags(NewStatusBarIcons.FLAG_NAME)
    @DisableFlags(Flags.FLAG_FIX_SHADE_HEADER_WRONG_ICON_SIZE)
    fun configChanged_dimensionsWithNewValues_flagDisabled_dimensionsNotUpdated() {
        val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
        val iconView = view.getIconView()
        val group = view.getIconGroupView()
        val initialHeight =
            context.resources.getDimensionPixelSize(R.dimen.status_bar_wifi_signal_height_updated)
        val initialMargin =
            context.resources.getDimensionPixelSize(
                R.dimen.status_bar_wifi_signal_horizontal_margin
            )

        overrideResource(R.dimen.status_bar_wifi_signal_height_updated, initialHeight + 10)
        overrideResource(R.dimen.status_bar_wifi_signal_horizontal_margin, initialMargin + 10)
        view.onConfigurationChanged(Configuration())

        assertThat(iconView.layoutParams.height).isEqualTo(initialHeight)
        val newMarginLp = group.layoutParams as ViewGroup.MarginLayoutParams
        assertThat(newMarginLp.marginStart).isEqualTo(initialMargin)
        assertThat(newMarginLp.marginEnd).isEqualTo(initialMargin)
    }

    @Test
    @EnableFlags(NewStatusBarIcons.FLAG_NAME, Flags.FLAG_FIX_SHADE_HEADER_WRONG_ICON_SIZE)
    fun configChanged_dimensionsWithNewValues_flagEnabled_dimensionsUpdated() {
        val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
        val iconView = view.getIconView()
        val group = view.getIconGroupView()
        val initialHeight =
            context.resources.getDimensionPixelSize(R.dimen.status_bar_wifi_signal_height_updated)
        val initialMargin =
            context.resources.getDimensionPixelSize(
                R.dimen.status_bar_wifi_signal_horizontal_margin
            )

        overrideResource(R.dimen.status_bar_wifi_signal_height_updated, initialHeight + 10)
        overrideResource(R.dimen.status_bar_wifi_signal_horizontal_margin, initialMargin + 10)
        view.onConfigurationChanged(Configuration())

        assertThat(iconView.layoutParams.height).isEqualTo(initialHeight + 10)
        val newMarginLp = group.layoutParams as ViewGroup.MarginLayoutParams
        assertThat(newMarginLp.marginStart).isEqualTo(initialMargin + 10)
        assertThat(newMarginLp.marginEnd).isEqualTo(initialMargin + 10)
    }

    private fun View.getIconGroupView(): View {
        return this.requireViewById(R.id.wifi_group)
    }