Merge "Removing tile reveal animation in functional tests" into udc-qpr-dev

This commit is contained in:
Michał Brzeziński
2023-08-08 16:22:43 +00:00
committed by Android (Google) Code Review

View File

@@ -7,6 +7,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
@@ -549,10 +550,8 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
return mPages.get(0).mRecords.size();
}
public void startTileReveal(Set<String> tileSpecs, final Runnable postAnimation) {
if (tileSpecs.isEmpty() || mPages.size() < 2 || getScrollX() != 0 || !beginFakeDrag()) {
// Do not start the reveal animation unless there are tiles to animate, multiple
// TileLayouts available and the user has not already started dragging.
public void startTileReveal(Set<String> tilesToReveal, final Runnable postAnimation) {
if (shouldNotRunAnimation(tilesToReveal)) {
return;
}
@@ -560,13 +559,13 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
final TileLayout lastPage = mPages.get(lastPageNumber);
final ArrayList<Animator> bounceAnims = new ArrayList<>();
for (TileRecord tr : lastPage.mRecords) {
if (tileSpecs.contains(tr.tile.getTileSpec())) {
if (tilesToReveal.contains(tr.tile.getTileSpec())) {
bounceAnims.add(setupBounceAnimator(tr.tileView, bounceAnims.size()));
}
}
if (bounceAnims.isEmpty()) {
// All tileSpecs are on the first page. Nothing to do.
// All tilesToReveal are on the first page. Nothing to do.
// TODO: potentially show a bounce animation for first page QS tiles
endFakeDrag();
return;
@@ -588,6 +587,16 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
postInvalidateOnAnimation();
}
private boolean shouldNotRunAnimation(Set<String> tilesToReveal) {
boolean noAnimationNeeded = tilesToReveal.isEmpty() || mPages.size() < 2;
boolean scrollingInProgress = getScrollX() != 0 || !beginFakeDrag();
// isRunningInTestHarness() to disable animation in functional testing as it caused
// flakiness and is not needed there. Alternative solutions were more complex and would
// still be either potentially flaky or modify internal data.
// For more info see b/253493927 and b/293234595
return noAnimationNeeded || scrollingInProgress || ActivityManager.isRunningInTestHarness();
}
private int sanitizePageAction(int action) {
int pageLeftId = AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_LEFT.getId();
int pageRightId = AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_RIGHT.getId();