chromium/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemProcessor.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.omnibox.suggestions;

import androidx.annotation.NonNull;

import org.chromium.build.annotations.MockedInTests;
import org.chromium.ui.modelutil.PropertyModel;

/** A processor of omnibox dropdown items. */
@MockedInTests
public interface DropdownItemProcessor {
    /**
     * @return The type of view the models created by this processor represent.
     */
    int getViewTypeId();

    /**
     * @return The minimum possible height of the view for this processor.
     */
    int getMinimumViewHeight();

    /**
     * Create a model for views managed by the processor.
     *
     * @return A newly created model.
     */
    @NonNull
    PropertyModel createModel();

    /** Signals that the omnibox session has been activated or deactivated. */
    default void onOmniboxSessionStateChange(boolean hasFocus) {}

    /** Signals that native initialization has completed. */
    default void onNativeInitialized() {}

    /** Signals that the dropdown list is about to be populated with new content. */
    default void onSuggestionsReceived() {}
}