Merge "Provide the back callback instance when unregistering it from SysUI." into tm-dev am: eba6a95a29

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17650016

Change-Id: I8903e438258c5676e67c421aa774a0a74d15d8e9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-05-02 16:36:24 +00:00
committed by Automerger Merge Worker
2 changed files with 40 additions and 28 deletions

View File

@@ -45,6 +45,7 @@ import com.android.quickstep.util.RectFSpringAnim;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat;
/**
* Controls the animation of swiping back and returning to launcher.
*
@@ -87,6 +88,7 @@ public class LauncherBackAnimationController {
private boolean mAnimatorSetInProgress = false;
private float mBackProgress = 0;
private boolean mBackInProgress = false;
private IOnBackInvokedCallback mBackCallback;
public LauncherBackAnimationController(
BaseQuickstepLauncher launcher,
@@ -112,34 +114,35 @@ public class LauncherBackAnimationController {
* @param handler Handler to the thread to run the animations on.
*/
public void registerBackCallbacks(Handler handler) {
SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(
new IOnBackInvokedCallback.Stub() {
@Override
public void onBackCancelled() {
handler.post(() -> resetPositionAnimated());
}
mBackCallback = new IOnBackInvokedCallback.Stub() {
@Override
public void onBackCancelled() {
handler.post(() -> resetPositionAnimated());
}
@Override
public void onBackInvoked() {
handler.post(() -> startTransition());
}
@Override
public void onBackInvoked() {
handler.post(() -> startTransition());
}
@Override
public void onBackProgressed(BackEvent backEvent) {
mBackProgress = backEvent.getProgress();
// TODO: Update once the interpolation curve spec is finalized.
mBackProgress =
1 - (1 - mBackProgress) * (1 - mBackProgress) * (1
- mBackProgress);
if (!mBackInProgress) {
startBack(backEvent);
} else {
updateBackProgress(mBackProgress, backEvent);
}
}
@Override
public void onBackProgressed(BackEvent backEvent) {
mBackProgress = backEvent.getProgress();
// TODO: Update once the interpolation curve spec is finalized.
mBackProgress =
1 - (1 - mBackProgress) * (1 - mBackProgress) * (1
- mBackProgress);
if (!mBackInProgress) {
startBack(backEvent);
} else {
updateBackProgress(mBackProgress, backEvent);
}
}
public void onBackStarted() { }
});
@Override
public void onBackStarted() { }
};
SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback);
}
private void resetPositionAnimated() {
@@ -162,7 +165,10 @@ public class LauncherBackAnimationController {
/** Unregisters the back to launcher callback in shell. */
public void unregisterBackCallbacks() {
SystemUiProxy.INSTANCE.get(mLauncher).clearBackToLauncherCallback();
if (mBackCallback != null) {
SystemUiProxy.INSTANCE.get(mLauncher).clearBackToLauncherCallback(mBackCallback);
}
mBackCallback = null;
}
private void startBack(BackEvent backEvent) {

View File

@@ -847,8 +847,14 @@ public class SystemUiProxy implements ISystemUiProxy, DisplayController.DisplayI
}
}
/** Clears the previously registered {@link IOnBackInvokedCallback}. */
public void clearBackToLauncherCallback() {
/** Clears the previously registered {@link IOnBackInvokedCallback}.
*
* @param callback The previously registered callback instance.
*/
public void clearBackToLauncherCallback(IOnBackInvokedCallback callback) {
if (mBackToLauncherCallback != callback) {
return;
}
mBackToLauncherCallback = null;
if (mBackAnimation == null) {
return;