Commit 3df64b50 authored by Yashar Dabiran's avatar Yashar Dabiran Committed by Chromium LUCI CQ

[Paint Preview] Remove ChromeActivity reference from StartupPaintPreviewHelper

ChromeActivity is used to provide WindowAndroid, BrowserControlsManager
and the activity creation time. These dependencies are instead given
through direct constructor injection.

Bug: 1155786
Change-Id: Ibcdaaf9be26142f7ce3a5d4f0b3ba0667b966627
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2575858Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarMehran Mahmoudi <mahmoudi@chromium.org>
Commit-Queue: Yashar Dabiran <yashard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835768}
parent cc61017f
......@@ -1557,13 +1557,13 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
mInactivityTracker = new ChromeInactivityTracker(
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF);
assert getActivityTabStartupMetricsTracker() != null;
StartupPaintPreviewHelper.initialize(this, getTabModelSelector(),
shouldShowTabSwitcherOnStart(),
()
-> getToolbarManager() == null
? null
: getToolbarManager().getProgressBarCoordinator(),
getActivityTabStartupMetricsTracker()::recordVisibleContent);
StartupPaintPreviewHelper.initialize(getWindowAndroid(), getOnCreateTimestampMs(),
getBrowserControlsManager(), getTabModelSelector(),
shouldShowTabSwitcherOnStart(), () -> {
return getToolbarManager() == null
? null
: getToolbarManager().getProgressBarCoordinator();
}, getActivityTabStartupMetricsTracker()::recordVisibleContent);
}
@Override
......
......@@ -255,9 +255,6 @@ specific_include_rules = {
"AutocompleteMediator\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
],
"StartupPaintPreviewHelper\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
],
"AutoSigninSnackbarController\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
],
......
......@@ -5,13 +5,13 @@
package org.chromium.chrome.browser.paint_preview;
import android.app.Activity;
import android.content.Context;
import android.os.SystemClock;
import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.Callback;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
......@@ -62,24 +62,30 @@ public class StartupPaintPreviewHelper {
* Initializes the logic required for the Paint Preview on startup feature. Mainly, observes a
* {@link TabModelSelector} to monitor for initialization completion.
*
* @param activity The ChromeActivity that corresponds to the tabModelSelector.
* @param windowAndroid The WindowAndroid that corresponds to the tabModelSelector.
* @param activityCreationTime The time the ChromeActivity was created.
* @param browserControlsManager The BrowserControlsManager which is used to fetch the browser
* visibility delegate
* @param tabModelSelector The TabModelSelector to observe.
* @param willShowStartSurface Whether the start surface will be shown.
* @param progressBarCoordinatorSupplier Supplier for the progress bar.
*/
public static void initialize(ChromeActivity<?> activity, TabModelSelector tabModelSelector,
public static void initialize(WindowAndroid windowAndroid, long activityCreationTime,
BrowserControlsManager browserControlsManager, TabModelSelector tabModelSelector,
boolean willShowStartSurface,
Supplier<LoadProgressCoordinator> progressBarCoordinatorSupplier,
Callback<Long> visibleContentCallback) {
if (!CachedFeatureFlags.isEnabled(ChromeFeatureList.PAINT_PREVIEW_SHOW_ON_STARTUP)) return;
if (MultiWindowUtils.getInstance().areMultipleChromeInstancesRunning(activity)
if (MultiWindowUtils.getInstance().areMultipleChromeInstancesRunning(
windowAndroid.getContext().get())
|| willShowStartSurface) {
sShouldShowOnRestore = false;
}
sWindowAndroidHelperMap.put(activity.getWindowAndroid(),
new PaintPreviewWindowAndroidHelper(
activity, progressBarCoordinatorSupplier, visibleContentCallback));
sWindowAndroidHelperMap.put(windowAndroid,
new PaintPreviewWindowAndroidHelper(windowAndroid, activityCreationTime,
browserControlsManager, progressBarCoordinatorSupplier,
visibleContentCallback));
// TODO(crbug/1074428): verify this doesn't cause a memory leak if the user exits Chrome
// prior to onTabStateInitialized being called.
......@@ -92,12 +98,14 @@ public class StartupPaintPreviewHelper {
sShouldShowOnRestore = false;
}
Context context = windowAndroid.getContext().get();
boolean runAudit = context == null
|| !MultiWindowUtils.getInstance().areMultipleChromeInstancesRunning(
context);
// Avoid running the audit in multi-window mode as otherwise we will delete
// data that is possibly in use by the other Activity's TabModelSelector.
PaintPreviewTabServiceFactory.getServiceInstance().onRestoreCompleted(
tabModelSelector, /*runAudit=*/
!MultiWindowUtils.getInstance().areMultipleChromeInstancesRunning(activity),
/*captureOnSwitch=*/false);
tabModelSelector, runAudit, /*captureOnSwitch=*/false);
tabModelSelector.removeObserver(this);
}
......@@ -171,15 +179,17 @@ public class StartupPaintPreviewHelper {
private final Supplier<LoadProgressCoordinator> mProgressBarCoordinatorSupplier;
private final Callback<Long> mVisibleContentCallback;
PaintPreviewWindowAndroidHelper(ChromeActivity<?> chromeActivity,
PaintPreviewWindowAndroidHelper(WindowAndroid windowAndroid, long activityCreationTime,
BrowserControlsManager browserControlsManager,
Supplier<LoadProgressCoordinator> progressBarCoordinatorSupplier,
Callback<Long> visibleContentCallback) {
mWindowAndroid = chromeActivity.getWindowAndroid();
mActivityCreationTime = chromeActivity.getOnCreateTimestampMs();
mBrowserControlsManager = chromeActivity.getBrowserControlsManager();
mWindowAndroid = windowAndroid;
mActivityCreationTime = activityCreationTime;
mBrowserControlsManager = browserControlsManager;
mProgressBarCoordinatorSupplier = progressBarCoordinatorSupplier;
mVisibleContentCallback = visibleContentCallback;
ApplicationStatus.registerStateListenerForActivity(this, chromeActivity);
ApplicationStatus.registerStateListenerForActivity(
this, mWindowAndroid.getActivity().get());
}
long getActivityCreationTime() {
......
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