#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_DICTATION_BUBBLE_TEST_HELPER_H_
#define CHROME_BROWSER_ASH_ACCESSIBILITY_DICTATION_BUBBLE_TEST_HELPER_H_
#include <string>
#include <string_view>
#include <vector>
#include "ash/system/accessibility/dictation_bubble_controller.h"
#include "base/functional/callback_forward.h"
namespace ash {
class DictationBubbleController;
enum class DictationBubbleIconType;
class DictationBubbleTestHelper : public DictationBubbleController::Observer {
public:
DictationBubbleTestHelper();
~DictationBubbleTestHelper() override;
DictationBubbleTestHelper(const DictationBubbleTestHelper&) = delete;
DictationBubbleTestHelper& operator=(const DictationBubbleTestHelper&) =
delete;
bool IsVisible();
DictationBubbleIconType GetVisibleIcon();
std::u16string_view GetText();
bool HasVisibleHints(const std::vector<std::u16string>& expected);
void WaitForVisibility(bool visible);
void WaitForVisibleIcon(DictationBubbleIconType icon);
void WaitForVisibleText(const std::u16string& text);
void WaitForVisibleHints(const std::vector<std::u16string>& hints);
void OnBubbleUpdated() override;
private:
bool IsStandbyViewVisible();
bool IsMacroSucceededImageVisible();
bool IsMacroFailedImageVisible();
std::vector<std::u16string> GetVisibleHints();
DictationBubbleController* GetController();
bool expected_visible_;
DictationBubbleIconType expected_icon_;
std::u16string expected_text_;
std::vector<std::u16string> expected_hints_;
base::OnceClosure visible_closure_;
base::OnceClosure icon_closure_;
base::OnceClosure text_closure_;
base::OnceClosure hints_closure_;
};
}
#endif