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

Commit 43097536 authored by Roy Chou's avatar Roy Chou
Browse files

fix(window magnification): fix onSingleTap_enabled_scaleAnimates test flaky on...

fix(window magnification): fix onSingleTap_enabled_scaleAnimates test flaky on cf fodable and tablet

The default bounce effect duration is 200ms in WindowMagnificationController. When testing onSingleTap_enabled_scaleAnimates on cuttlefish devices, sometimes the postOnAnimation may need over 200ms to dispatch and run the checking block on the mainthread, so the bounce animation has already finished and thus the scale bounce is not detected. Therefore, in WindowMagnificationControllerTest, we adjust the bounce effect duration to 2000ms, so the bounce animation check should work in expectation.

Bug: 299537784
Test: atest locally and abtd
Change-Id: Icd33debca52d1ddf5a00985e4c5d608d8370d9d1
parent 7110a03a
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -80,8 +80,8 @@ import androidx.core.math.MathUtils;
import com.android.internal.accessibility.common.MagnificationConstants;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.res.R;
import com.android.systemui.model.SysUiState;
import com.android.systemui.res.R;
import com.android.systemui.util.settings.SecureSettings;

import java.io.PrintWriter;
@@ -205,7 +205,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
    private final Supplier<IWindowSession> mGlobalWindowSessionSupplier;
    private final SfVsyncFrameCallbackProvider mSfVsyncFrameProvider;
    private final MagnificationGestureDetector mGestureDetector;
    private final int mBounceEffectDuration;
    private int mBounceEffectDuration;
    private final Choreographer.FrameCallback mMirrorViewGeometryVsyncCallback;
    private Locale mLocale;
    private NumberFormat mPercentFormat;
@@ -272,8 +272,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold

        setupMagnificationSizeScaleOptions();

        mBounceEffectDuration = mResources.getInteger(
                com.android.internal.R.integer.config_shortAnimTime);
        setBounceEffectDuration(mResources.getInteger(
                com.android.internal.R.integer.config_shortAnimTime));
        updateDimensions();

        final Size windowFrameSize = restoreMagnificationWindowFrameSizeIfPossible();
@@ -1461,6 +1461,11 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
        mDragView.setColorFilter(filter);
    }

    @VisibleForTesting
    void setBounceEffectDuration(int duration) {
        mBounceEffectDuration = duration;
    }

    private void animateBounceEffect() {
        final ObjectAnimator scaleAnimator = ObjectAnimator.ofPropertyValuesHolder(mMirrorView,
                PropertyValuesHolder.ofFloat(View.SCALE_X, 1, mBounceEffectAnimationScale, 1),
+5 −1
Original line number Diff line number Diff line
@@ -88,9 +88,9 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;

import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.model.SysUiState;
import com.android.systemui.res.R;
import com.android.systemui.settings.FakeDisplayTracker;
import com.android.systemui.util.leak.ReferenceTestUtils;
import com.android.systemui.util.settings.SecureSettings;
@@ -121,6 +121,9 @@ import java.util.concurrent.atomic.AtomicInteger;
public class WindowMagnificationControllerTest extends SysuiTestCase {

    private static final int LAYOUT_CHANGE_TIMEOUT_MS = 5000;
    // The duration couldn't too short, otherwise the animation check on bounce effect
    // won't work in expectation. (b/299537784)
    private static final int BOUNCE_EFFECT_DURATION_MS = 2000;
    private static final long ANIMATION_DURATION_MS = 300;
    private final long mWaitingAnimationPeriod = 2 * ANIMATION_DURATION_MS;
    @Mock
@@ -205,6 +208,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
                        mSysUiState,
                        () -> mWindowSessionSpy,
                        mSecureSettings);
        mWindowMagnificationController.setBounceEffectDuration(BOUNCE_EFFECT_DURATION_MS);

        verify(mMirrorWindowControl).setWindowDelegate(
                any(MirrorWindowControl.MirrorWindowDelegate.class));