Commit c170924f authored by Mehran Mahmoudi's avatar Mehran Mahmoudi Committed by Commit Bot

[Paint Preview] Exit player on navigating away

This fixes the bug where the player would stick around after navigating
to a new page from the omnibox.

Bug: 1110020
Change-Id: I1c18993a518c5f936cfc842dd191958d9a07f3bc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2321288
Commit-Queue: Mehran Mahmoudi <mahmoudi@chromium.org>
Reviewed-by: default avatarCalder Kitagawa <ckitagawa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792070}
parent 6542c181
......@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManagerProvider;
import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.paintpreview.player.PlayerManager;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.url.GURL;
/**
......@@ -42,6 +43,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
private boolean mHasUserInteraction;
private EmptyTabObserver mTabObserver;
private long mLastShownSnackBarTime;
private boolean mDidStartRestore;
public static TabbedPaintPreviewPlayer get(Tab tab) {
if (tab.getUserDataHost().getUserData(USER_DATA_KEY) == null) {
......@@ -56,9 +58,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
mTabObserver = new EmptyTabObserver() {
@Override
public void didFirstVisuallyNonEmptyPaint(Tab tab) {
if (!mTab.getTabViewManager().isShowing(TabbedPaintPreviewPlayer.this)) {
return;
}
if (!isShowingAndNeedsBadge()) return;
if (!mHasUserInteraction) {
removePaintPreview();
......@@ -68,7 +68,25 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
showSnackbar();
}
@Override
public void onRestoreStarted(Tab tab) {
mDidStartRestore = true;
}
@Override
public void onDidStartNavigation(Tab tab, NavigationHandle navigationHandle) {
if (mPlayerManager == null || !isShowingAndNeedsBadge()) return;
// Ignore navigations from subframes. We should only remove the paint preview
// player when the user navigates to a new page.
if (!navigationHandle.isInMainFrame()) return;
// If we haven't started to restore, this is the navigation call to start the
// restoration. We shouldn't remove the paint preview player.
if (!mDidStartRestore) return;
removePaintPreview();
}
};
mTab.addObserver(mTabObserver);
}
......
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