chromium/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/EducationalTipCardProvider.java

// Copyright 2024 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.educational_tip;

import androidx.annotation.IntDef;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/** The interface for a card which is shown in the educational tip module. */
public interface EducationalTipCardProvider {
    /** Card types that are shown in the educational tip module on the magic stack. */
    @IntDef({
        EducationalTipCardType.DEFAULT_BROWSER_PROMO,
        EducationalTipCardType.TAB_GROUPS,
        EducationalTipCardType.TAB_GROUP_SYNC,
        EducationalTipCardType.QUICK_DELETE,
        EducationalTipCardType.NUM_ENTRIES,
    })
    @Retention(RetentionPolicy.SOURCE)
    @interface EducationalTipCardType {
        int DEFAULT_BROWSER_PROMO = 0;
        int TAB_GROUPS = 1;
        int TAB_GROUP_SYNC = 2;
        int QUICK_DELETE = 3;
        int NUM_ENTRIES = 4;
    }

    /** Gets the title of the card. */
    String getCardTitle();

    /** Gets the description of the card. */
    String getCardDescription();

    /** Gets the image of the card. */
    int getCardImage();

    /** Called when the user clicks a module button. */
    void onCardClicked();
}