chromium/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/CustomMessageCardProvider.java

// Copyright 2023 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.tasks.tab_management;

import android.view.View;

import org.chromium.chrome.browser.tasks.tab_management.MessageCardViewProperties.MessageCardScope;
import org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.ModelType;

/** An interface that retrieves and sets information on the custom message card view. */
public interface CustomMessageCardProvider {
    /** Returns the specific message type for this custom message card. */
    public int getMessageType();

    /** Retrieve the inflated custom view for this message card. */
    public View getCustomView();

    /**
     * Retrieve the desired visibility control in normal or incognito mode for the custom message
     * card view.
     */
    public @MessageCardScope int getMessageCardVisibilityControl();

    /** Retrieve the indicated card type for the custom message card view. */
    public @ModelType int getCardType();

    /**
     * Set whether this message card will be displayed in incognito mode or not.
     *
     * @param isIncognito Whether the tab switcher will open in incognito.
     */
    public void setIsIncognito(boolean isIncognito);
}