[Android] Add a cold start metric for NTP
Chromium change: https://chromium.googlesource.com/chromium/src/+/4cefe9fea9bfad8d1f4066460a5da16019812b32 [NTP Startup] Add a cold start metric for NTP loads on Clank Current start metrics work with webpage or FDT launches. With Clank Home Frequency being increased, the current startup guardian metric's volume has been diluted. This CL adds a cold start metric to capture load times for NTP launches. The metric is recorded when FeedSurfaceProvider's view (root NTP view) calls onDraw. Specifically, the metric measures the time from activity creation to the time when the first draw pass occurs on the root view. This is similar to a previous NTP startup metric (NewTabPage.TimeToFirstDraw2) that has been deprecated, but utilizing new cold-start heuristics and recording the time from activity start instead of the start of NTP construction. Bug: 369109839
This commit is contained in:
@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceProvider;
|
||||
import org.chromium.chrome.browser.feed.FeedSwipeRefreshLayout;
|
||||
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
||||
import org.chromium.chrome.browser.magic_stack.ModuleRegistry;
|
||||
import org.chromium.chrome.browser.metrics.StartupMetricsTracker;
|
||||
import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
|
||||
@@ -74,7 +75,8 @@ public class BraveNewTabPage extends NewTabPage {
|
||||
ObservableSupplier<TabContentManager> tabContentManagerSupplier,
|
||||
ObservableSupplier<Integer> tabStripHeightSupplier,
|
||||
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier) {
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
StartupMetricsTracker startupMetricsTracker) {
|
||||
super(
|
||||
activity,
|
||||
browserControlsStateProvider,
|
||||
@@ -97,7 +99,8 @@ public class BraveNewTabPage extends NewTabPage {
|
||||
tabContentManagerSupplier,
|
||||
tabStripHeightSupplier,
|
||||
moduleRegistrySupplier,
|
||||
edgeToEdgeControllerSupplier);
|
||||
edgeToEdgeControllerSupplier,
|
||||
startupMetricsTracker);
|
||||
|
||||
mJankTracker = jankTracker;
|
||||
|
||||
@@ -134,7 +137,8 @@ public class BraveNewTabPage extends NewTabPage {
|
||||
boolean isInNightMode,
|
||||
Supplier<ShareDelegate> shareDelegateSupplier,
|
||||
String url,
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier) {
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
StartupMetricsTracker startupMetricsTracker) {
|
||||
// Override surface provider
|
||||
Profile profile = Profile.fromWebContents(mTab.getWebContents());
|
||||
|
||||
|
||||
@@ -81,7 +81,8 @@ public class BraveSwipeRefreshHandlerTest {
|
||||
null,
|
||||
rootUiCoordinator.getToolbarManager().getTabStripHeightSupplier(),
|
||||
new OneshotSupplierImpl<ModuleRegistry>(),
|
||||
new ObservableSupplierImpl<EdgeToEdgeController>());
|
||||
new ObservableSupplierImpl<EdgeToEdgeController>(),
|
||||
cta.getStartupMetricsTracker());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -83,6 +83,7 @@ import org.chromium.chrome.browser.layouts.LayoutManager;
|
||||
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
||||
import org.chromium.chrome.browser.logo.CachedTintedBitmap;
|
||||
import org.chromium.chrome.browser.logo.LogoCoordinator;
|
||||
import org.chromium.chrome.browser.metrics.StartupMetricsTracker;
|
||||
import org.chromium.chrome.browser.multiwindow.MultiInstanceManager;
|
||||
import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
|
||||
import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager;
|
||||
@@ -1256,7 +1257,8 @@ public class BytecodeTest {
|
||||
ObservableSupplier.class,
|
||||
ObservableSupplier.class,
|
||||
OneshotSupplier.class,
|
||||
ObservableSupplier.class));
|
||||
ObservableSupplier.class,
|
||||
StartupMetricsTracker.class));
|
||||
Assert.assertTrue(
|
||||
constructorsMatch(
|
||||
"org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator",
|
||||
|
||||
Reference in New Issue
Block a user