Commit 53d0ad6a authored by Mehran Mahmoudi's avatar Mehran Mahmoudi Committed by Commit Bot

[Paint Preview] Fix NullPointerException crash

Bug: 1135054
Change-Id: Idec0ddfab4877137e6a7deca395370b6619a9206
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2450717
Commit-Queue: Mehran Mahmoudi <mahmoudi@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarCalder Kitagawa <ckitagawa@chromium.org>
Auto-Submit: Mehran Mahmoudi <mahmoudi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#813948}
parent 13f1e95c
...@@ -1497,7 +1497,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1497,7 +1497,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
mInactivityTracker = new ChromeInactivityTracker( mInactivityTracker = new ChromeInactivityTracker(
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF); ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF);
PaintPreviewHelper.initialize( PaintPreviewHelper.initialize(
this, getTabModelSelector(), () -> getToolbarManager().getProgressBarCoordinator()); this, getTabModelSelector(), () -> getToolbarManager() == null ? null :
getToolbarManager().getProgressBarCoordinator());
} }
@Override @Override
......
...@@ -41,9 +41,9 @@ public class PaintPreviewHelper { ...@@ -41,9 +41,9 @@ public class PaintPreviewHelper {
private static boolean sHasAttemptedToShowOnRestore; private static boolean sHasAttemptedToShowOnRestore;
/** /**
* A map for keeping Activity-specific variables and classes. New entries are added on calls * A map for keeping Activity-specific variables and classes. New entries are added on calls to
* to {@link #initialize(ChromeActivity, TabModelSelector)}. Entries are automatically removed * {@link #initialize(ChromeActivity, TabModelSelector)}. Entries are automatically removed when
* when their respective Activity is destroyed. * their respective Activity is destroyed.
*/ */
private static Map<WindowAndroid, PaintPreviewWindowAndroidHelper> sWindowAndroidHelperMap = private static Map<WindowAndroid, PaintPreviewWindowAndroidHelper> sWindowAndroidHelperMap =
new HashMap<>(); new HashMap<>();
...@@ -51,7 +51,8 @@ public class PaintPreviewHelper { ...@@ -51,7 +51,8 @@ public class PaintPreviewHelper {
/** /**
* Initializes the logic required for the Paint Preview on startup feature. Mainly, observes a * Initializes the logic required for the Paint Preview on startup feature. Mainly, observes a
* {@link TabModelSelector} to monitor for initialization completion. * {@link TabModelSelector} to monitor for initialization completion.
* @param activity The ChromeActivity that corresponds to the tabModelSelector. *
* @param activity The ChromeActivity that corresponds to the tabModelSelector.
* @param tabModelSelector The TabModelSelector to observe. * @param tabModelSelector The TabModelSelector to observe.
*/ */
public static void initialize(ChromeActivity<?> activity, TabModelSelector tabModelSelector, public static void initialize(ChromeActivity<?> activity, TabModelSelector tabModelSelector,
...@@ -99,13 +100,17 @@ public class PaintPreviewHelper { ...@@ -99,13 +100,17 @@ public class PaintPreviewHelper {
player.setBrowserVisibilityDelegate( player.setBrowserVisibilityDelegate(
windowAndroidHelper.getBrowserControlsManager().getBrowserVisibilityDelegate()); windowAndroidHelper.getBrowserControlsManager().getBrowserVisibilityDelegate());
player.setProgressSimulatorNeededCallback( player.setProgressSimulatorNeededCallback(
() () -> {
-> windowAndroidHelper.getLoadProgressCoordinator() if (windowAndroidHelper.getLoadProgressCoordinator() == null) return;
.simulateLoadProgressCompletion()); windowAndroidHelper.getLoadProgressCoordinator()
.simulateLoadProgressCompletion();
});
player.setProgressbarUpdatePreventionCallback( player.setProgressbarUpdatePreventionCallback(
(preventProgressbar) (preventProgressbar) -> {
-> windowAndroidHelper.getLoadProgressCoordinator().setPreventUpdates( if (windowAndroidHelper.getLoadProgressCoordinator() == null) return;
preventProgressbar)); windowAndroidHelper.getLoadProgressCoordinator().setPreventUpdates(
preventProgressbar);
});
PageLoadMetrics.Observer observer = new PageLoadMetrics.Observer() { PageLoadMetrics.Observer observer = new PageLoadMetrics.Observer() {
@Override @Override
public void onFirstMeaningfulPaint(WebContents webContents, long navigationId, public void onFirstMeaningfulPaint(WebContents webContents, long navigationId,
...@@ -115,9 +120,9 @@ public class PaintPreviewHelper { ...@@ -115,9 +120,9 @@ public class PaintPreviewHelper {
}; };
if (!player.maybeShow(() if (!player.maybeShow(()
-> PageLoadMetrics.removeObserver(observer), -> PageLoadMetrics.removeObserver(observer),
windowAndroidHelper.getActivityCreationTime(), windowAndroidHelper.getActivityCreationTime(),
() -> UmaUtils.hasComeToForeground() && !UmaUtils.hasComeToBackground())) { () -> UmaUtils.hasComeToForeground() && !UmaUtils.hasComeToBackground())) {
return; return;
} }
......
...@@ -121,9 +121,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -121,9 +121,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
public void onHidden(Tab tab, @TabHidingType int hidingType) { public void onHidden(Tab tab, @TabHidingType int hidingType) {
releasePersistentToolbar(); releasePersistentToolbar();
dismissSnackbar(); dismissSnackbar();
if (mProgressSimulatorNeededCallback != null) { setProgressPreventionNeeded(false);
mProgressPreventionCallback.onResult(false);
}
if (mPlayerManager == null || !isShowingAndNeedsBadge()) return; if (mPlayerManager == null || !isShowingAndNeedsBadge()) return;
...@@ -138,9 +136,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -138,9 +136,7 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
if (!isShowingAndNeedsBadge()) return; if (!isShowingAndNeedsBadge()) return;
showToolbarPersistent(); showToolbarPersistent();
if (mProgressSimulatorNeededCallback != null) { setProgressPreventionNeeded(true);
mProgressPreventionCallback.onResult(true);
}
} }
} }
...@@ -318,6 +314,12 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -318,6 +314,12 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
SnackbarManagerProvider.from(mTab.getWindowAndroid()).dismissSnackbars(mSnackbarController); SnackbarManagerProvider.from(mTab.getWindowAndroid()).dismissSnackbars(mSnackbarController);
} }
private void setProgressPreventionNeeded(boolean progressPrevention) {
if (mProgressPreventionCallback == null) return;
mProgressPreventionCallback.onResult(progressPrevention);
}
public boolean isShowingAndNeedsBadge() { public boolean isShowingAndNeedsBadge() {
if (mTab == null) return false; if (mTab == null) return false;
...@@ -363,14 +365,14 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData { ...@@ -363,14 +365,14 @@ public class TabbedPaintPreviewPlayer implements TabViewProvider, UserData {
@Override @Override
public void onShown() { public void onShown() {
showToolbarPersistent(); showToolbarPersistent();
if (mProgressSimulatorNeededCallback != null) mProgressPreventionCallback.onResult(true); setProgressPreventionNeeded(true);
} }
@Override @Override
public void onHidden() { public void onHidden() {
releasePersistentToolbar(); releasePersistentToolbar();
dismissSnackbar(); dismissSnackbar();
if (mProgressSimulatorNeededCallback != null) mProgressPreventionCallback.onResult(false); setProgressPreventionNeeded(false);
} }
@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