chromium/chrome/android/java/src/org/chromium/chrome/browser/customtabs/FirstMeaningfulPaintObserver.java

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.customtabs;

import org.chromium.chrome.browser.page_load_metrics.PageLoadMetrics;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.WebContents;

/** Notifies the provided {@link CustomTabObserver} when first meaningful paint occurs. */
public class FirstMeaningfulPaintObserver implements PageLoadMetrics.Observer {
    private final Tab mTab;
    private final CustomTabObserver mCustomTabObserver;

    public FirstMeaningfulPaintObserver(CustomTabObserver tabObserver, Tab tab) {
        mCustomTabObserver = tabObserver;
        mTab = tab;
    }

    @Override
    public void onFirstMeaningfulPaint(
            WebContents webContents,
            long navigationId,
            long navigationStartMicros,
            long firstContentfulPaintMs) {
        if (webContents != mTab.getWebContents()) return;

        mCustomTabObserver.onFirstMeaningfulPaint(mTab);
    }
}