Commit 7292606e authored by Mehran Mahmoudi's avatar Mehran Mahmoudi Committed by Commit Bot

[Paint Preview] Add delay before removing player

This adds a finch-controllable delay before removing the paint preview
player on tab first paint, for startup experiment.

It also increases the snackbar duration from 5 to 8 seconds.

Bug: 1110360
Change-Id: I46d12eae990be2695af4ae7ca2ca27eb28f70902
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2323822Reviewed-by: default avatarCalder Kitagawa <ckitagawa@chromium.org>
Commit-Queue: Mehran Mahmoudi <mahmoudi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792314}
parent 7f749da1
...@@ -5,12 +5,14 @@ ...@@ -5,12 +5,14 @@
package org.chromium.chrome.browser.paint_preview; package org.chromium.chrome.browser.paint_preview;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Handler;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.base.UserData; import org.chromium.base.UserData;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabService; import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabService;
import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabServiceFactory; import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabServiceFactory;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
...@@ -33,7 +35,9 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -33,7 +35,9 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
public static final Class<TabbedPaintPreviewPlayer> USER_DATA_KEY = public static final Class<TabbedPaintPreviewPlayer> USER_DATA_KEY =
TabbedPaintPreviewPlayer.class; TabbedPaintPreviewPlayer.class;
private static final int SNACKBAR_DURATION_MS = 5 * 1000; private static final int SNACKBAR_DURATION_MS = 8 * 1000;
private static final int DEFAULT_INITIAL_REMOVE_DELAY_MS = 400;
private static final String INITIAL_REMOVE_DELAY_PARAM = "initial_remove_delay_ms";
private Tab mTab; private Tab mTab;
private PaintPreviewTabService mPaintPreviewTabService; private PaintPreviewTabService mPaintPreviewTabService;
...@@ -60,12 +64,23 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -60,12 +64,23 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
public void didFirstVisuallyNonEmptyPaint(Tab tab) { public void didFirstVisuallyNonEmptyPaint(Tab tab) {
if (!isShowingAndNeedsBadge()) return; if (!isShowingAndNeedsBadge()) return;
long delayMs = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.PAINT_PREVIEW_SHOW_ON_STARTUP, INITIAL_REMOVE_DELAY_PARAM,
DEFAULT_INITIAL_REMOVE_DELAY_MS);
// Delay removing paint preview after didFirstVisuallyNonEmptyPaint and no user
// interaction by |delayMs|. This is to account for 'heavy' pages that take a while
// to finish painting and avoid having flickers when switching from paint preview
// to the live page.
new Handler().postDelayed(() -> {
if (!isShowingAndNeedsBadge()) return;
if (!mHasUserInteraction) { if (!mHasUserInteraction) {
removePaintPreview(); removePaintPreview();
return; return;
} }
showSnackbar(); showSnackbar();
}, delayMs);
} }
@Override @Override
......
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