Merge "Disabling the Done button when system applying new font size" into udc-qpr-dev
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2023 The Android Open Source Project
|
||||||
|
~
|
||||||
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||||
|
<item android:state_enabled="false"
|
||||||
|
android:color="?androidprv:attr/materialColorPrimary"
|
||||||
|
android:alpha="0.30"/>
|
||||||
|
<item android:color="?androidprv:attr/materialColorPrimary"/>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2023 The Android Open Source Project
|
||||||
|
~
|
||||||
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||||
|
<item android:state_enabled="false"
|
||||||
|
android:color="?androidprv:attr/materialColorOnPrimary"
|
||||||
|
android:alpha="0.30"/>
|
||||||
|
<item android:color="?androidprv:attr/materialColorOnPrimary"/>
|
||||||
|
</selector>
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
~ limitations under the License.
|
~ limitations under the License.
|
||||||
-->
|
-->
|
||||||
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
|
||||||
android:insetTop="@dimen/dialog_button_vertical_inset"
|
android:insetTop="@dimen/dialog_button_vertical_inset"
|
||||||
android:insetBottom="@dimen/dialog_button_vertical_inset">
|
android:insetBottom="@dimen/dialog_button_vertical_inset">
|
||||||
<ripple android:color="?android:attr/colorControlHighlight">
|
<ripple android:color="?android:attr/colorControlHighlight">
|
||||||
@@ -28,7 +27,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<corners android:radius="?android:attr/buttonCornerRadius"/>
|
<corners android:radius="?android:attr/buttonCornerRadius"/>
|
||||||
<solid android:color="?androidprv:attr/materialColorPrimary"/>
|
<solid android:color="@color/qs_dialog_btn_filled_background"/>
|
||||||
<padding android:left="@dimen/dialog_button_horizontal_padding"
|
<padding android:left="@dimen/dialog_button_horizontal_padding"
|
||||||
android:top="@dimen/dialog_button_vertical_padding"
|
android:top="@dimen/dialog_button_vertical_padding"
|
||||||
android:right="@dimen/dialog_button_horizontal_padding"
|
android:right="@dimen/dialog_button_horizontal_padding"
|
||||||
|
|||||||
@@ -1116,7 +1116,7 @@
|
|||||||
<style name="Widget.Dialog.Button">
|
<style name="Widget.Dialog.Button">
|
||||||
<item name="android:buttonCornerRadius">28dp</item>
|
<item name="android:buttonCornerRadius">28dp</item>
|
||||||
<item name="android:background">@drawable/qs_dialog_btn_filled</item>
|
<item name="android:background">@drawable/qs_dialog_btn_filled</item>
|
||||||
<item name="android:textColor">?androidprv:attr/materialColorOnPrimary</item>
|
<item name="android:textColor">@color/qs_dialog_btn_filled_text_color</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:lineHeight">20sp</item>
|
<item name="android:lineHeight">20sp</item>
|
||||||
<item name="android:fontFamily">@*android:string/config_bodyFontFamilyMedium</item>
|
<item name="android:fontFamily">@*android:string/config_bodyFontFamilyMedium</item>
|
||||||
|
|||||||
@@ -145,6 +145,8 @@ class FontScalingDialog(
|
|||||||
*/
|
*/
|
||||||
@MainThread
|
@MainThread
|
||||||
fun updateFontScaleDelayed(delayMsFromSource: Long) {
|
fun updateFontScaleDelayed(delayMsFromSource: Long) {
|
||||||
|
doneButton.isEnabled = false
|
||||||
|
|
||||||
var delayMs = delayMsFromSource
|
var delayMs = delayMsFromSource
|
||||||
if (systemClock.elapsedRealtime() - lastUpdateTime < MIN_UPDATE_INTERVAL_MS) {
|
if (systemClock.elapsedRealtime() - lastUpdateTime < MIN_UPDATE_INTERVAL_MS) {
|
||||||
delayMs += MIN_UPDATE_INTERVAL_MS
|
delayMs += MIN_UPDATE_INTERVAL_MS
|
||||||
@@ -197,17 +199,22 @@ class FontScalingDialog(
|
|||||||
title.post {
|
title.post {
|
||||||
title.setTextAppearance(R.style.TextAppearance_Dialog_Title)
|
title.setTextAppearance(R.style.TextAppearance_Dialog_Title)
|
||||||
doneButton.setTextAppearance(R.style.Widget_Dialog_Button)
|
doneButton.setTextAppearance(R.style.Widget_Dialog_Button)
|
||||||
|
doneButton.isEnabled = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
fun updateFontScale() {
|
fun updateFontScale() {
|
||||||
systemSettings.putStringForUser(
|
if (
|
||||||
|
!systemSettings.putStringForUser(
|
||||||
Settings.System.FONT_SCALE,
|
Settings.System.FONT_SCALE,
|
||||||
strEntryValues[lastProgress.get()],
|
strEntryValues[lastProgress.get()],
|
||||||
userTracker.userId
|
userTracker.userId
|
||||||
)
|
)
|
||||||
|
) {
|
||||||
|
title.post { doneButton.isEnabled = true }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
|
|||||||
@@ -15,11 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.systemui.accessibility.fontscaling
|
package com.android.systemui.accessibility.fontscaling
|
||||||
|
|
||||||
|
import android.content.res.Configuration
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Button
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
@@ -61,6 +63,7 @@ class FontScalingDialogTest : SysuiTestCase() {
|
|||||||
private lateinit var secureSettings: SecureSettings
|
private lateinit var secureSettings: SecureSettings
|
||||||
private lateinit var systemClock: FakeSystemClock
|
private lateinit var systemClock: FakeSystemClock
|
||||||
private lateinit var backgroundDelayableExecutor: FakeExecutor
|
private lateinit var backgroundDelayableExecutor: FakeExecutor
|
||||||
|
private lateinit var testableLooper: TestableLooper
|
||||||
private val fontSizeValueArray: Array<String> =
|
private val fontSizeValueArray: Array<String> =
|
||||||
mContext
|
mContext
|
||||||
.getResources()
|
.getResources()
|
||||||
@@ -73,7 +76,8 @@ class FontScalingDialogTest : SysuiTestCase() {
|
|||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
val mainHandler = Handler(TestableLooper.get(this).getLooper())
|
testableLooper = TestableLooper.get(this)
|
||||||
|
val mainHandler = Handler(testableLooper.looper)
|
||||||
systemSettings = FakeSettings()
|
systemSettings = FakeSettings()
|
||||||
// Guarantee that the systemSettings always starts with the default font scale.
|
// Guarantee that the systemSettings always starts with the default font scale.
|
||||||
systemSettings.putFloatForUser(Settings.System.FONT_SCALE, 1.0f, userTracker.userId)
|
systemSettings.putFloatForUser(Settings.System.FONT_SCALE, 1.0f, userTracker.userId)
|
||||||
@@ -286,4 +290,26 @@ class FontScalingDialogTest : SysuiTestCase() {
|
|||||||
verify(fontScalingDialog).createTextPreview(/* index= */ 0)
|
verify(fontScalingDialog).createTextPreview(/* index= */ 0)
|
||||||
fontScalingDialog.dismiss()
|
fontScalingDialog.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun changeFontSize_buttonIsDisabledBeforeFontSizeChangeFinishes() {
|
||||||
|
fontScalingDialog.show()
|
||||||
|
|
||||||
|
val iconEndFrame: ViewGroup = fontScalingDialog.findViewById(R.id.icon_end_frame)!!
|
||||||
|
val doneButton: Button = fontScalingDialog.findViewById(com.android.internal.R.id.button1)!!
|
||||||
|
|
||||||
|
iconEndFrame.performClick()
|
||||||
|
backgroundDelayableExecutor.runAllReady()
|
||||||
|
backgroundDelayableExecutor.advanceClockToNext()
|
||||||
|
backgroundDelayableExecutor.runAllReady()
|
||||||
|
|
||||||
|
// Verify that the button is disabled before receiving onConfigurationChanged
|
||||||
|
assertThat(doneButton.isEnabled).isFalse()
|
||||||
|
|
||||||
|
val config = Configuration()
|
||||||
|
config.fontScale = 1.15f
|
||||||
|
fontScalingDialog.onConfigurationChanged(config)
|
||||||
|
testableLooper.processAllMessages()
|
||||||
|
assertThat(doneButton.isEnabled).isTrue()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user