[DO NOT MERGE] Allow manually specified time

Additionally, disable layout animation from test

Bug: 229771520
Test: Automated
Change-Id: I2518d293f5b03e7bea7a45d8ef24ec6a998b5d30
This commit is contained in:
Hawkwood Glazier
2022-08-07 02:48:28 +00:00
parent 60eb90b1b3
commit ed1efe9f31
3 changed files with 10 additions and 4 deletions

View File

@@ -44,9 +44,13 @@ import platform.test.screenshot.DeviceEmulationSpec
import platform.test.screenshot.MaterialYouColorsRule import platform.test.screenshot.MaterialYouColorsRule
import platform.test.screenshot.ScreenshotTestRule import platform.test.screenshot.ScreenshotTestRule
import platform.test.screenshot.getEmulatedDevicePathConfig import platform.test.screenshot.getEmulatedDevicePathConfig
import platform.test.screenshot.matchers.BitmapMatcher
/** A rule for View screenshot diff unit tests. */ /** A rule for View screenshot diff unit tests. */
class ViewScreenshotTestRule(emulationSpec: DeviceEmulationSpec) : TestRule { class ViewScreenshotTestRule(
emulationSpec: DeviceEmulationSpec,
private val matcher: BitmapMatcher = UnitTestBitmapMatcher
) : TestRule {
private val colorsRule = MaterialYouColorsRule() private val colorsRule = MaterialYouColorsRule()
private val deviceEmulationRule = DeviceEmulationRule(emulationSpec) private val deviceEmulationRule = DeviceEmulationRule(emulationSpec)
private val screenshotRule = private val screenshotRule =
@@ -59,7 +63,6 @@ class ViewScreenshotTestRule(emulationSpec: DeviceEmulationSpec) : TestRule {
.around(deviceEmulationRule) .around(deviceEmulationRule)
.around(screenshotRule) .around(screenshotRule)
.around(activityRule) .around(activityRule)
private val matcher = UnitTestBitmapMatcher
override fun apply(base: Statement, description: Description): Statement { override fun apply(base: Statement, description: Description): Statement {
return delegateRule.apply(base, description) return delegateRule.apply(base, description)

View File

@@ -69,6 +69,8 @@ class AnimatableClockView @JvmOverloads constructor(
private var textAnimator: TextAnimator? = null private var textAnimator: TextAnimator? = null
private var onTextAnimatorInitialized: Runnable? = null private var onTextAnimatorInitialized: Runnable? = null
var timeOverrideInMillis: Long? = null
val dozingWeight: Int val dozingWeight: Int
get() = if (useBoldedVersion()) dozingWeightInternal + 100 else dozingWeightInternal get() = if (useBoldedVersion()) dozingWeightInternal + 100 else dozingWeightInternal
@@ -125,7 +127,7 @@ class AnimatableClockView @JvmOverloads constructor(
} }
fun refreshTime() { fun refreshTime() {
time.timeInMillis = System.currentTimeMillis() time.timeInMillis = timeOverrideInMillis ?: System.currentTimeMillis()
contentDescription = DateFormat.format(descFormat, time) contentDescription = DateFormat.format(descFormat, time)
val formattedText = DateFormat.format(format, time) val formattedText = DateFormat.format(format, time)
// Setting text actually triggers a layout pass (because the text view is set to // Setting text actually triggers a layout pass (because the text view is set to

View File

@@ -88,6 +88,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
private int mClockSwitchYAmount; private int mClockSwitchYAmount;
@VisibleForTesting boolean mChildrenAreLaidOut = false; @VisibleForTesting boolean mChildrenAreLaidOut = false;
@VisibleForTesting boolean mAnimateOnLayout = true;
public KeyguardClockSwitch(Context context, AttributeSet attrs) { public KeyguardClockSwitch(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
@@ -305,7 +306,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
super.onLayout(changed, l, t, r, b); super.onLayout(changed, l, t, r, b);
if (mDisplayedClockSize != null && !mChildrenAreLaidOut) { if (mDisplayedClockSize != null && !mChildrenAreLaidOut) {
post(() -> updateClockViews(mDisplayedClockSize == LARGE, /* animate */ true)); post(() -> updateClockViews(mDisplayedClockSize == LARGE, mAnimateOnLayout));
} }
mChildrenAreLaidOut = true; mChildrenAreLaidOut = true;