// Copyright 2022 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.toolbar.optional_button;
import android.content.res.ColorStateList;
import android.view.ViewGroup;
import org.chromium.base.Callback;
import org.chromium.chrome.browser.toolbar.ButtonData;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableIntPropertyKey;
import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey;
import java.util.function.BooleanSupplier;
class OptionalButtonProperties {
// We skip equality checks because some controllers update their button by changing the
// ButtonSpec value on the same ButtonData instance. In addition we don't split this into
// BUTTON_SPEC and CAN_SHOW because it would be hard to avoid two animations when both the spec
// and visibility change at the same time.
public static final WritableObjectPropertyKey<ButtonData> BUTTON_DATA =
new WritableObjectPropertyKey<>(/* skipEquality= */ true);
public static final WritableBooleanPropertyKey IS_ENABLED = new WritableBooleanPropertyKey();
public static final WritableObjectPropertyKey<Callback<Integer>> TRANSITION_STARTED_CALLBACK =
new WritableObjectPropertyKey<>();
public static final WritableObjectPropertyKey<Callback<Integer>> TRANSITION_FINISHED_CALLBACK =
new WritableObjectPropertyKey<>();
public static final WritableObjectPropertyKey<Runnable> ON_BEFORE_HIDE_TRANSITION_CALLBACK =
new WritableObjectPropertyKey<>();
public static final WritableObjectPropertyKey<ViewGroup> TRANSITION_ROOT =
new WritableObjectPropertyKey<>();
public static final WritableObjectPropertyKey<ColorStateList> ICON_TINT_LIST =
new WritableObjectPropertyKey<>();
public static final WritableIntPropertyKey ICON_BACKGROUND_COLOR = new WritableIntPropertyKey();
public static final WritableIntPropertyKey ICON_BACKGROUND_ALPHA = new WritableIntPropertyKey();
public static final WritableIntPropertyKey PADDING_START = new WritableIntPropertyKey();
public static final WritableBooleanPropertyKey TRANSITION_CANCELLATION_REQUESTED =
new WritableBooleanPropertyKey();
public static final WritableObjectPropertyKey<BooleanSupplier> IS_ANIMATION_ALLOWED_PREDICATE =
new WritableObjectPropertyKey<>();
public static final PropertyKey[] ALL_KEYS = {
BUTTON_DATA,
IS_ENABLED,
TRANSITION_STARTED_CALLBACK,
TRANSITION_FINISHED_CALLBACK,
ON_BEFORE_HIDE_TRANSITION_CALLBACK,
TRANSITION_ROOT,
ICON_TINT_LIST,
ICON_BACKGROUND_COLOR,
ICON_BACKGROUND_ALPHA,
PADDING_START,
TRANSITION_CANCELLATION_REQUESTED,
IS_ANIMATION_ALLOWED_PREDICATE
};
}