#ifndef COMPONENTS_USER_EDUCATION_COMMON_HELP_BUBBLE_PARAMS_H_
#define COMPONENTS_USER_EDUCATION_COMMON_HELP_BUBBLE_PARAMS_H_
#include <string>
#include <utility>
#include <vector>
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/base/interaction/element_tracker.h"
#include "ui/gfx/vector_icon_types.h"
namespace user_education {
constexpr base::TimeDelta kDefaultTimeoutWithoutButtons = base::Seconds(10);
constexpr base::TimeDelta kDefaultTimeoutWithButtons = base::Seconds(0);
enum class HelpBubbleArrow {
kNone,
kTopLeft,
kTopRight,
kBottomLeft,
kBottomRight,
kLeftTop,
kRightTop,
kLeftBottom,
kRightBottom,
kTopCenter,
kBottomCenter,
kLeftCenter,
kRightCenter,
};
struct HelpBubbleButtonParams {
HelpBubbleButtonParams();
HelpBubbleButtonParams(HelpBubbleButtonParams&&);
~HelpBubbleButtonParams();
HelpBubbleButtonParams& operator=(HelpBubbleButtonParams&&);
std::u16string text;
bool is_default = false;
base::OnceClosure callback = base::DoNothing();
};
struct HelpBubbleParams {
HelpBubbleParams();
HelpBubbleParams(HelpBubbleParams&&);
~HelpBubbleParams();
HelpBubbleParams& operator=(HelpBubbleParams&&);
HelpBubbleArrow arrow = HelpBubbleArrow::kTopRight;
std::u16string title_text;
raw_ptr<const gfx::VectorIcon> body_icon = nullptr;
std::u16string body_icon_alt_text;
std::u16string body_text;
std::u16string screenreader_text;
std::u16string keyboard_navigation_hint;
std::vector<HelpBubbleButtonParams> buttons;
std::u16string close_button_alt_text;
absl::optional<std::pair<int, int>> progress;
absl::optional<base::TimeDelta> timeout;
base::OnceClosure dismiss_callback = base::DoNothing();
base::OnceClosure timeout_callback = base::DoNothing();
};
}
#endif