Commit 780c0dac authored by Mehran Mahmoudi's avatar Mehran Mahmoudi Committed by Commit Bot

[Paint Preview] Cross-fade on upgrade to live tab

This CL adds a fade out animation to the paint preview on exit.

Bug: 1131497
Change-Id: Id1b99d4ed4e98ced4aaa2acae6a579de65b8bce5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2425461Reviewed-by: default avatarCalder Kitagawa <ckitagawa@chromium.org>
Commit-Queue: Mehran Mahmoudi <mahmoudi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809909}
parent af048839
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
package org.chromium.chrome.browser.paint_preview; package org.chromium.chrome.browser.paint_preview;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Point; import android.graphics.Point;
import android.os.Handler; import android.os.Handler;
...@@ -42,6 +44,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -42,6 +44,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
TabbedPaintPreviewPlayer.class; TabbedPaintPreviewPlayer.class;
private static final int SNACKBAR_DURATION_MS = 8 * 1000; private static final int SNACKBAR_DURATION_MS = 8 * 1000;
private static final int CROSS_FADE_DURATION_MS = 500;
private static final int DEFAULT_INITIAL_REMOVE_DELAY_MS = 0; private static final int DEFAULT_INITIAL_REMOVE_DELAY_MS = 0;
private static final String INITIAL_REMOVE_DELAY_PARAM = "initial_remove_delay_ms"; private static final String INITIAL_REMOVE_DELAY_PARAM = "initial_remove_delay_ms";
...@@ -55,6 +58,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -55,6 +58,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
private TabbedPaintPreviewObserver mObserver; private TabbedPaintPreviewObserver mObserver;
private long mLastShownSnackBarTime; private long mLastShownSnackBarTime;
private boolean mDidStartRestore; private boolean mDidStartRestore;
private boolean mFadingOut;
private int mSnackbarShownCount; private int mSnackbarShownCount;
private TabbedPaintPreviewMetricsHelper mMetricsHelper; private TabbedPaintPreviewMetricsHelper mMetricsHelper;
...@@ -205,16 +209,30 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -205,16 +209,30 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
PaintPreviewCompositorUtils.stopWarmCompositor(); PaintPreviewCompositorUtils.stopWarmCompositor();
mOnDismissed = null; mOnDismissed = null;
mInitializing = false; mInitializing = false;
if (mTab == null || mPlayerManager == null) return; if (mTab == null || mPlayerManager == null || mFadingOut) return;
mFadingOut = true;
Point scrollPosition = mPlayerManager.getScrollPosition(); Point scrollPosition = mPlayerManager.getScrollPosition();
if (mTab.getWebContents() != null && scrollPosition != null) { if (mTab.getWebContents() != null && scrollPosition != null) {
mTab.getWebContents().getEventForwarder().scrollTo(scrollPosition.x, scrollPosition.y); mTab.getWebContents().getEventForwarder().scrollTo(scrollPosition.x, scrollPosition.y);
} }
boolean needsAnimation = exitCause == ExitCause.TAB_FINISHED_LOADING
mTab.getTabViewManager().removeTabViewProvider(this); || exitCause == ExitCause.SNACK_BAR_ACTION
mPlayerManager.destroy(); || exitCause == ExitCause.PULL_TO_REFRESH;
mPlayerManager = null; getView()
.animate()
.alpha(0f)
.setDuration(needsAnimation ? CROSS_FADE_DURATION_MS : 0)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mTab.getTabViewManager().removeTabViewProvider(
TabbedPaintPreviewPlayer.this);
mPlayerManager.destroy();
mPlayerManager = null;
mFadingOut = false;
}
});
mMetricsHelper.recordExitMetrics(exitCause, mSnackbarShownCount); mMetricsHelper.recordExitMetrics(exitCause, mSnackbarShownCount);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment