Commit 697dd2e2 authored by ckitagawa's avatar ckitagawa Committed by Commit Bot

[Paint Preview] Remove on tab switch

This CL removes the paint preview when the tab is hidden for any reason
other than the activity being hidden. This should hopefully avoid
possible memory leaks by keeping the preview active for hidden tabs
that didn't finish loading.

Change-Id: Ibbc66d7e9303592be4e933a37490a6ead0bcb6ed
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2416770
Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
Reviewed-by: default avatarMehran Mahmoudi <mahmoudi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808011}
parent 8d7fc776
......@@ -21,7 +21,7 @@ public class TabbedPaintPreviewMetricsHelper {
/** Used for recording the cause for exiting the Paint Preview player. */
@IntDef({ExitCause.PULL_TO_REFRESH, ExitCause.SNACK_BAR_ACTION, ExitCause.COMPOSITOR_FAILURE,
ExitCause.TAB_FINISHED_LOADING, ExitCause.LINK_CLICKED, ExitCause.NAVIGATION_STARTED,
ExitCause.TAB_DESTROYED})
ExitCause.TAB_DESTROYED, ExitCause.TAB_HIDDEN})
@interface ExitCause {
int PULL_TO_REFRESH = 0;
int SNACK_BAR_ACTION = 1;
......@@ -30,7 +30,8 @@ public class TabbedPaintPreviewMetricsHelper {
int LINK_CLICKED = 4;
int NAVIGATION_STARTED = 5;
int TAB_DESTROYED = 6;
int COUNT = 7;
int TAB_HIDDEN = 7;
int COUNT = 8;
}
private static final Map<Integer, String> UPTIME_HISTOGRAM_MAP = new HashMap<>();
......@@ -49,6 +50,8 @@ public class TabbedPaintPreviewMetricsHelper {
"Browser.PaintPreview.TabbedPlayer.UpTime.RemovedByNavigation");
UPTIME_HISTOGRAM_MAP.put(ExitCause.TAB_DESTROYED,
"Browser.PaintPreview.TabbedPlayer.UpTime.RemovedOnTabDestroy");
UPTIME_HISTOGRAM_MAP.put(ExitCause.TAB_HIDDEN,
"Browser.PaintPreview.TabbedPlayer.UpTime.RemovedOnTabHidden");
}
private long mShownTime;
......
......@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabService
import org.chromium.chrome.browser.paint_preview.services.PaintPreviewTabServiceFactory;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabHidingType;
import org.chromium.chrome.browser.tab.TabViewProvider;
import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
......@@ -108,6 +109,16 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
removePaintPreview(ExitCause.NAVIGATION_STARTED);
}
@Override
public void onHidden(Tab tab, @TabHidingType int hidingType) {
if (mPlayerManager == null || !isShowingAndNeedsBadge()) return;
// If the tab is hidden as a result of pausing the activity we shouldn't remove it.
if (hidingType == TabHidingType.ACTIVITY_HIDDEN) return;
removePaintPreview(ExitCause.TAB_HIDDEN);
}
}
private TabbedPaintPreviewPlayer(Tab tab) {
......
......@@ -69860,6 +69860,7 @@ would be helpful to identify which type is being sent.
<int value="4" label="Link Clicked"/>
<int value="5" label="Navigation Started"/>
<int value="6" label="Tab Destroyed"/>
<int value="7" label="Tab Hidden"/>
</enum>
<enum name="TabDiscardingEvents">
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