Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt 0 → 100644 +92 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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. */ package com.android.systemui.statusbar.policy import android.content.res.Configuration import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class ClockTest : SysuiTestCase() { private lateinit var clock: Clock @Before fun setUp() { clock = Clock(context, null) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_fontScaleChanges_paddingChanges() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.fontScale += 1.0f clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_densityChanges_paddingChanges() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.densityDpi += 1 clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_nothingChanges_paddingDoesNotChange() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @DisableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_densityChanges_flagOff_paddingDoesNotChange() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.densityDpi += 1 clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isEqualTo(initialPadding) } } packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java +13 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Rect; Loading @@ -45,6 +46,7 @@ import android.view.View; import android.widget.TextView; import com.android.settingslib.Utils; import com.android.settingslib.applications.InterestingConfigChanges; import com.android.systemui.Dependency; import com.android.systemui.FontSizeUtils; import com.android.systemui.broadcast.BroadcastDispatcher; Loading Loading @@ -98,7 +100,6 @@ public class Clock extends TextView implements private SimpleDateFormat mContentDescriptionFormat; private Locale mLocale; private DateTimePatternGenerator mDateTimePatternGenerator; private Configuration oldConfig = new Configuration(); private static final int AM_PM_STYLE_NORMAL = 0; private static final int AM_PM_STYLE_SMALL = 1; Loading @@ -108,6 +109,8 @@ public class Clock extends TextView implements private boolean mShowSeconds; private Handler mSecondsHandler; // Tracks config changes that will make the clock change dimensions private final InterestingConfigChanges mInterestingConfigChanges; /** * Color to be set on this {@link TextView}, when wallpaperTextColor is <b>not</b> utilized. */ Loading Loading @@ -143,6 +146,12 @@ public class Clock extends TextView implements } mBroadcastDispatcher = Dependency.get(BroadcastDispatcher.class); mUserTracker = Dependency.get(UserTracker.class); if (ShadeWindowGoesAround.isEnabled()) { mInterestingConfigChanges = new InterestingConfigChanges( ActivityInfo.CONFIG_FONT_SCALE | ActivityInfo.CONFIG_DENSITY); } else { mInterestingConfigChanges = null; } setIncludeFontPadding(false); } Loading Loading @@ -395,18 +404,14 @@ public class Clock extends TextView implements protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (ShadeWindowGoesAround.isEnabled()) { if (densityOrFontScaleChanged(oldConfig, newConfig)) { final boolean shouldReloadDimensions = mInterestingConfigChanges.applyNewConfig(newConfig); if (shouldReloadDimensions) { reloadDimens(); } oldConfig = newConfig; } } private boolean densityOrFontScaleChanged(Configuration oldConfig, Configuration newConfig) { return (oldConfig.densityDpi != newConfig.densityDpi) || oldConfig.fontScale != newConfig.fontScale; } private void updateShowSeconds() { if (mShowSeconds) { // Wait until we have a display to start trying to show seconds. Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt 0 → 100644 +92 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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. */ package com.android.systemui.statusbar.policy import android.content.res.Configuration import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class ClockTest : SysuiTestCase() { private lateinit var clock: Clock @Before fun setUp() { clock = Clock(context, null) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_fontScaleChanges_paddingChanges() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.fontScale += 1.0f clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_densityChanges_paddingChanges() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.densityDpi += 1 clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_nothingChanges_paddingDoesNotChange() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isNotEqualTo(initialPadding) } @Test @DisableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND) fun onConfigurationChanged_densityChanges_flagOff_paddingDoesNotChange() { val initialPadding = clock.paddingLeft val newConfig = Configuration(context.resources.configuration) newConfig.densityDpi += 1 clock.onConfigurationChanged(newConfig) assertThat(clock.paddingLeft).isEqualTo(initialPadding) } }
packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java +13 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Rect; Loading @@ -45,6 +46,7 @@ import android.view.View; import android.widget.TextView; import com.android.settingslib.Utils; import com.android.settingslib.applications.InterestingConfigChanges; import com.android.systemui.Dependency; import com.android.systemui.FontSizeUtils; import com.android.systemui.broadcast.BroadcastDispatcher; Loading Loading @@ -98,7 +100,6 @@ public class Clock extends TextView implements private SimpleDateFormat mContentDescriptionFormat; private Locale mLocale; private DateTimePatternGenerator mDateTimePatternGenerator; private Configuration oldConfig = new Configuration(); private static final int AM_PM_STYLE_NORMAL = 0; private static final int AM_PM_STYLE_SMALL = 1; Loading @@ -108,6 +109,8 @@ public class Clock extends TextView implements private boolean mShowSeconds; private Handler mSecondsHandler; // Tracks config changes that will make the clock change dimensions private final InterestingConfigChanges mInterestingConfigChanges; /** * Color to be set on this {@link TextView}, when wallpaperTextColor is <b>not</b> utilized. */ Loading Loading @@ -143,6 +146,12 @@ public class Clock extends TextView implements } mBroadcastDispatcher = Dependency.get(BroadcastDispatcher.class); mUserTracker = Dependency.get(UserTracker.class); if (ShadeWindowGoesAround.isEnabled()) { mInterestingConfigChanges = new InterestingConfigChanges( ActivityInfo.CONFIG_FONT_SCALE | ActivityInfo.CONFIG_DENSITY); } else { mInterestingConfigChanges = null; } setIncludeFontPadding(false); } Loading Loading @@ -395,18 +404,14 @@ public class Clock extends TextView implements protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (ShadeWindowGoesAround.isEnabled()) { if (densityOrFontScaleChanged(oldConfig, newConfig)) { final boolean shouldReloadDimensions = mInterestingConfigChanges.applyNewConfig(newConfig); if (shouldReloadDimensions) { reloadDimens(); } oldConfig = newConfig; } } private boolean densityOrFontScaleChanged(Configuration oldConfig, Configuration newConfig) { return (oldConfig.densityDpi != newConfig.densityDpi) || oldConfig.fontScale != newConfig.fontScale; } private void updateShowSeconds() { if (mShowSeconds) { // Wait until we have a display to start trying to show seconds. Loading