chromium/chromeos/components/mahi/public/cpp/mahi_util.h

// 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.

#ifndef CHROMEOS_COMPONENTS_MAHI_PUBLIC_CPP_MAHI_UTIL_H_
#define CHROMEOS_COMPONENTS_MAHI_PUBLIC_CPP_MAHI_UTIL_H_

#include "base/component_export.h"
#include "chromeos/crosapi/mojom/mahi.mojom.h"
#include "ui/base/class_property.h"

namespace chromeos::mahi {

using ActionType = crosapi::mojom::MahiContextMenuActionType;

// Metrics:
COMPONENT_EXPORT(MAHI_PUBLIC_CPP)
extern const char kMahiContentExtractionTriggeringLatency[];
COMPONENT_EXPORT(MAHI_PUBLIC_CPP)
extern const char kMahiContextMenuActivated[];
COMPONENT_EXPORT(MAHI_PUBLIC_CPP)
extern const char kMahiContextMenuActivatedFailed[];

// Contains the types of button existed in Mahi Menu.
enum class COMPONENT_EXPORT(MAHI_PUBLIC_CPP) ButtonType {
  kSummary = 0,
  kOutline = 1,
  kSettings = 2,
  kQA = 3,
  kMaxValue = kQA,
};

COMPONENT_EXPORT(MAHI_PUBLIC_CPP)
ActionType MatchButtonTypeToActionType(const ButtonType button_type);

// Used by ash window manager to place the mahi menu bubble in the correct
// container.
extern const COMPONENT_EXPORT(MAHI_PUBLIC_CPP) ui::ClassProperty<bool>* const
    kIsMahiMenuKey;

}  // namespace chromeos::mahi

#endif  // CHROMEOS_COMPONENTS_MAHI_PUBLIC_CPP_MAHI_UTIL_H_