chromium/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java

// Copyright 2020 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.xsurface.feed;

import org.chromium.chrome.browser.xsurface.SurfaceScope;

// TODO(b/269234249): Don't use this in Chromium yet, it's not implemented.
/**
 * Implemented internally.
 *
 * Provides multiple types of renderers to surfaces that want to render an
 * external surface. Each renderer will reuse the same dependencies (hence
 * "Scope") but each call to provideFoo will return a new renderer, so that a
 * single surface can support multiple rendered views.
 */
public interface FeedSurfaceScope extends SurfaceScope {
    /**
     * Return the FeedLaunchReliabilityLogger associated with the surface, creating it if it
     * doesn't exist.
     * @return The surface's FeedLaunchReliabilityLogger instance.
     */
    default FeedLaunchReliabilityLogger getLaunchReliabilityLogger() {
        return new FeedLaunchReliabilityLogger() {};
    }

    default FeedUserInteractionReliabilityLogger getUserInteractionReliabilityLogger() {
        return new FeedUserInteractionReliabilityLogger() {};
    }

    default FeedCardOpeningReliabilityLogger getCardOpeningReliabilityLogger() {
        return new FeedCardOpeningReliabilityLogger() {};
    }
}