From eb3fb4aa3c4ca7ae58826d6c441352e968cc6208 Mon Sep 17 00:00:00 2001 From: Candice Lo Date: Wed, 15 Feb 2023 03:47:27 +0000 Subject: [PATCH] Add feature flag to Font Scaling Tile 1. Return the flag for isAvailable in the tile 2. Update tests to verify the dialog would showup Bug: 242326166 Test: manually test the feature flag Test: atest FontScalingTileTest Change-Id: I5f44abfe6d37d0d6904195864a0ad7eafb0aedf5 --- .../systemui/qs/tiles/FontScalingTile.kt | 7 +++- .../systemui/qs/tiles/FontScalingTileTest.kt | 40 ++++++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt index 721046d217c97..9b4ac1b3437e7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt @@ -27,6 +27,8 @@ import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.flags.FeatureFlags +import com.android.systemui.flags.Flags import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.qs.QSTile @@ -50,7 +52,8 @@ constructor( activityStarter: ActivityStarter, qsLogger: QSLogger, private val dialogLaunchAnimator: DialogLaunchAnimator, - private val systemSettings: SystemSettings + private val systemSettings: SystemSettings, + private val featureFlags: FeatureFlags ) : QSTileImpl( host, @@ -65,7 +68,7 @@ constructor( private val icon = ResourceIcon.get(R.drawable.ic_qs_font_scaling) override fun isAvailable(): Boolean { - return false + return featureFlags.isEnabled(Flags.ENABLE_FONT_SCALING_TILE) } override fun newTileState(): QSTile.State { diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt index 528978ab5ee20..257d42a83ba4c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt @@ -18,21 +18,30 @@ package com.android.systemui.qs.tiles import android.os.Handler import android.testing.AndroidTestingRunner import android.testing.TestableLooper +import android.view.View import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger +import com.android.internal.logging.UiEventLogger import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.classifier.FalsingManagerFake +import com.android.systemui.flags.FakeFeatureFlags +import com.android.systemui.flags.Flags import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.qs.QSTileHost import com.android.systemui.qs.logging.QSLogger +import com.android.systemui.util.mockito.any +import com.android.systemui.util.mockito.eq +import com.android.systemui.util.mockito.nullable import com.android.systemui.util.settings.FakeSettings import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito.anyBoolean +import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations @@ -46,15 +55,20 @@ class FontScalingTileTest : SysuiTestCase() { @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var qsLogger: QSLogger @Mock private lateinit var dialogLaunchAnimator: DialogLaunchAnimator + @Mock private lateinit var uiEventLogger: UiEventLogger private lateinit var testableLooper: TestableLooper private lateinit var fontScalingTile: FontScalingTile + val featureFlags = FakeFeatureFlags() + @Before fun setUp() { MockitoAnnotations.initMocks(this) testableLooper = TestableLooper.get(this) `when`(qsHost.getContext()).thenReturn(mContext) + `when`(qsHost.uiEventLogger).thenReturn(uiEventLogger) + fontScalingTile = FontScalingTile( qsHost, @@ -66,15 +80,37 @@ class FontScalingTileTest : SysuiTestCase() { activityStarter, qsLogger, dialogLaunchAnimator, - FakeSettings() + FakeSettings(), + featureFlags ) fontScalingTile.initialize() + testableLooper.processAllMessages() } @Test - fun isNotAvailable_whenNotSupportedDevice_returnsFalse() { + fun isAvailable_whenFlagIsFalse_returnsFalse() { + featureFlags.set(Flags.ENABLE_FONT_SCALING_TILE, false) + val isAvailable = fontScalingTile.isAvailable() assertThat(isAvailable).isFalse() } + + @Test + fun isAvailable_whenFlagIsTrue_returnsTrue() { + featureFlags.set(Flags.ENABLE_FONT_SCALING_TILE, true) + + val isAvailable = fontScalingTile.isAvailable() + + assertThat(isAvailable).isTrue() + } + + @Test + fun clickTile_showDialog() { + val view = View(context) + fontScalingTile.click(view) + testableLooper.processAllMessages() + + verify(dialogLaunchAnimator).showFromView(any(), eq(view), nullable(), anyBoolean()) + } }