summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabián Kozynski <kozynski@google.com> 2023-10-03 12:16:26 -0400
committer Fabián Kozynski <kozynski@google.com> 2023-10-03 12:16:26 -0400
commit9bc94e9c25cb27432071951dced62aeb8cd761a9 (patch)
tree7fb581b7c9047593fd8b711e1926d4558cc4ff69
parentd346a1f1651d0e83cf8216997e67705f74c6e13e (diff)
Re-write conditional checks for animation
When they were extracted into a separate method and split by type of check, we lost some behavior that was guaranteed to be prevented by the short-circuiting. This CL makes sure that the checks do not depend on short circuiting by removing side effect methods from the checks. If the checks pass (we can animate) we do one last check that will try to enable fakeDrag. Test: manual Fixes: 297488363 Change-Id: Iebda8c9acfbf75a49522887687702b2e8c0158de
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index 19012e29b184..fa18b35b215e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -27,11 +27,11 @@ import androidx.viewpager.widget.ViewPager;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.logging.UiEventLogger;
-import com.android.systemui.res.R;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSPanelControllerBase.TileRecord;
import com.android.systemui.qs.logging.QSLogger;
+import com.android.systemui.res.R;
import java.util.ArrayList;
import java.util.List;
@@ -562,6 +562,12 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
if (shouldNotRunAnimation(tilesToReveal)) {
return;
}
+ // This method has side effects (beings the fake drag, if it returns true). If we have
+ // decided that we want to do a tile reveal, we do a last check to verify that we can
+ // actually perform a fake drag.
+ if (!beginFakeDrag()) {
+ return;
+ }
final int lastPageNumber = mPages.size() - 1;
final TileLayout lastPage = mPages.get(lastPageNumber);
@@ -596,8 +602,10 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
}
private boolean shouldNotRunAnimation(Set<String> tilesToReveal) {
+ // None of these have side effects. That way, we don't need to rely on short-circuiting
+ // behavior
boolean noAnimationNeeded = tilesToReveal.isEmpty() || mPages.size() < 2;
- boolean scrollingInProgress = getScrollX() != 0 || !beginFakeDrag();
+ boolean scrollingInProgress = getScrollX() != 0 || !isFakeDragging();
// checking mRunningInTestHarness 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.