diff options
| author | 2023-12-19 11:08:46 +0000 | |
|---|---|---|
| committer | 2023-12-19 11:08:46 +0000 | |
| commit | 787f5eee63f7ed201858bca297276096a4eb924e (patch) | |
| tree | 0d677a44fc49e01fdf69d7231cd43bc10900cc40 | |
| parent | a8dc1426151fbb228c975138d42125fa517b7f1b (diff) | |
| parent | 43502aa71e501c78283abaf558674a0379cbd076 (diff) | |
Merge "Make BackAnimationController dumpable" into main
4 files changed, 46 insertions, 7 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java index d8c691b01b61..a49823648d01 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java @@ -70,9 +70,11 @@ import com.android.wm.shell.common.RemoteCallable; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.annotations.ShellBackgroundThread; import com.android.wm.shell.common.annotations.ShellMainThread; +import com.android.wm.shell.sysui.ShellCommandHandler; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; +import java.io.PrintWriter; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -124,6 +126,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont private final Context mContext; private final ContentResolver mContentResolver; private final ShellController mShellController; + private final ShellCommandHandler mShellCommandHandler; private final ShellExecutor mShellExecutor; private final Handler mBgHandler; @@ -180,7 +183,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont @NonNull @ShellBackgroundThread Handler backgroundHandler, Context context, @NonNull BackAnimationBackground backAnimationBackground, - ShellBackAnimationRegistry shellBackAnimationRegistry) { + ShellBackAnimationRegistry shellBackAnimationRegistry, + ShellCommandHandler shellCommandHandler) { this( shellInit, shellController, @@ -190,7 +194,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont context, context.getContentResolver(), backAnimationBackground, - shellBackAnimationRegistry); + shellBackAnimationRegistry, + shellCommandHandler); } @VisibleForTesting @@ -203,7 +208,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont Context context, ContentResolver contentResolver, @NonNull BackAnimationBackground backAnimationBackground, - ShellBackAnimationRegistry shellBackAnimationRegistry) { + ShellBackAnimationRegistry shellBackAnimationRegistry, + ShellCommandHandler shellCommandHandler) { mShellController = shellController; mShellExecutor = shellExecutor; mActivityTaskManager = activityTaskManager; @@ -219,6 +225,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont .build(); mShellBackAnimationRegistry = shellBackAnimationRegistry; mLatencyTracker = LatencyTracker.getInstance(mContext); + mShellCommandHandler = shellCommandHandler; } private void onInit() { @@ -227,6 +234,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont createAdapter(); mShellController.addExternalInterface(KEY_EXTRA_SHELL_BACK_ANIMATION, this::createExternalInterface, this); + mShellCommandHandler.addDumpCallback(this::dump, this); } private void setupAnimationDeveloperSettingsObserver( @@ -968,4 +976,20 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont }; mBackAnimationAdapter = new BackAnimationAdapter(runner); } + + /** + * Description of current BackAnimationController state. + */ + private void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "BackAnimationController state:"); + pw.println(prefix + " mEnableAnimations=" + mEnableAnimations.get()); + pw.println(prefix + " mBackGestureStarted=" + mBackGestureStarted); + pw.println(prefix + " mPostCommitAnimationInProgress=" + mPostCommitAnimationInProgress); + pw.println(prefix + " mShouldStartOnNextMoveEvent=" + mShouldStartOnNextMoveEvent); + pw.println(prefix + " mCurrentTracker state:"); + mCurrentTracker.dump(pw, prefix + " "); + pw.println(prefix + " mQueuedTracker state:"); + mQueuedTracker.dump(pw, prefix + " "); + } + } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/TouchTracker.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/TouchTracker.java index ace792244778..6213f628dfd3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/TouchTracker.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/TouchTracker.java @@ -24,6 +24,8 @@ import android.view.RemoteAnimationTarget; import android.window.BackEvent; import android.window.BackMotionEvent; +import java.io.PrintWriter; + /** * Helper class to record the touch location for gesture and generate back events. */ @@ -221,6 +223,12 @@ class TouchTracker { mNonLinearFactor = nonLinearFactor; } + void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "TouchTracker state:"); + pw.println(prefix + " mState=" + mState); + pw.println(prefix + " mTriggerBack=" + mTriggerBack); + } + enum TouchTrackerState { INITIAL, ACTIVE, FINISHED } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java index 3c6bc1754c5c..fc97c7988a0f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java @@ -363,7 +363,8 @@ public abstract class WMShellBaseModule { @ShellMainThread ShellExecutor shellExecutor, @ShellBackgroundThread Handler backgroundHandler, BackAnimationBackground backAnimationBackground, - Optional<ShellBackAnimationRegistry> shellBackAnimationRegistry) { + Optional<ShellBackAnimationRegistry> shellBackAnimationRegistry, + ShellCommandHandler shellCommandHandler) { if (BackAnimationController.IS_ENABLED) { return shellBackAnimationRegistry.map( (animations) -> @@ -374,7 +375,8 @@ public abstract class WMShellBaseModule { backgroundHandler, context, backAnimationBackground, - animations)); + animations, + shellCommandHandler)); } return Optional.empty(); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java index 771876f7ce5d..9ded6ea1d187 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java @@ -63,6 +63,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.util.test.FakeSettingsProvider; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.TestShellExecutor; +import com.android.wm.shell.sysui.ShellCommandHandler; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.sysui.ShellSharedConstants; @@ -110,6 +111,8 @@ public class BackAnimationControllerTest extends ShellTestCase { @Mock private InputManager mInputManager; + @Mock + private ShellCommandHandler mShellCommandHandler; private BackAnimationController mController; private TestableContentResolver mContentResolver; @@ -145,7 +148,8 @@ public class BackAnimationControllerTest extends ShellTestCase { mContext, mContentResolver, mAnimationBackground, - mShellBackAnimationRegistry); + mShellBackAnimationRegistry, + mShellCommandHandler); mShellInit.init(); mShellExecutor.flushAll(); } @@ -298,7 +302,8 @@ public class BackAnimationControllerTest extends ShellTestCase { mContext, mContentResolver, mAnimationBackground, - mShellBackAnimationRegistry); + mShellBackAnimationRegistry, + mShellCommandHandler); shellInit.init(); registerAnimation(BackNavigationInfo.TYPE_RETURN_TO_HOME); |