chromium/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelStateProvider.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.compositor.bottombar;

import androidx.annotation.ColorInt;

public interface OverlayPanelStateProvider {
    /** An observer to be notified of changes to the overlay panel. */
    interface Observer {
        /**
         * Called when the {@link OverlayPanel.PanelState} state of the Overlay Panel changes.
         *
         * @param state The {@link OverlayPanel.PanelState} of the overlay panel.
         * @param color The background color of the overlay panel.
         */
        default void onOverlayPanelStateChanged(
                @OverlayPanel.PanelState int state, @ColorInt int color) {}
    }

    /**
     * Add an observer to be notified of changes to the overlay panel.
     *
     * @param observer The observer to add.
     */
    void addObserver(Observer observer);

    /**
     * Remove a previously added observer.
     *
     * @param observer The observer to remove.
     */
    void removeObserver(Observer observer);

    /**
     * @return True if the overlay panel covers the full width of the screen, false if the panel
     *     only partially extends across the screen.
     */
    boolean isFullWidthSizePanel();
}