#ifndef ASH_SYSTEM_ACCESSIBILITY_AUTOCLICK_SCROLL_BUBBLE_CONTROLLER_H_
#define ASH_SYSTEM_ACCESSIBILITY_AUTOCLICK_SCROLL_BUBBLE_CONTROLLER_H_
#include "ash/system/accessibility/autoclick_scroll_view.h"
#include "ash/system/tray/tray_bubble_view.h"
#include "base/memory/raw_ptr.h"
#include "ui/views/bubble/bubble_border.h"
namespace ash {
class AutoclickScrollBubbleController : public TrayBubbleView::Delegate {
public:
AutoclickScrollBubbleController();
AutoclickScrollBubbleController(const AutoclickScrollBubbleController&) =
delete;
AutoclickScrollBubbleController& operator=(
const AutoclickScrollBubbleController&) = delete;
~AutoclickScrollBubbleController() override;
void UpdateAnchorRect(gfx::Rect rect, views::BubbleBorder::Arrow alignment);
void SetScrollPosition(gfx::Rect scroll_bounds_in_dips,
const gfx::Point& scroll_point_in_dips);
void ShowBubble(gfx::Rect anchor_rect, views::BubbleBorder::Arrow alignment);
void CloseBubble();
void SetBubbleVisibility(bool is_visible);
void ClickOnBubble(gfx::Point location_in_dips, int mouse_event_flags);
bool ContainsPointInScreen(const gfx::Point& point);
void BubbleViewDestroyed() override;
std::u16string GetAccessibleNameForBubble() override;
void HideBubble(const TrayBubbleView* bubble_view) override;
private:
friend class AutoclickMenuBubbleControllerTest;
friend class AutoclickTest;
raw_ptr<AutoclickScrollBubbleView> bubble_view_ = nullptr;
raw_ptr<AutoclickScrollView> scroll_view_ = nullptr;
raw_ptr<views::Widget> bubble_widget_ = nullptr;
bool set_scroll_rect_ = false;
gfx::Rect menu_bubble_rect_;
views::BubbleBorder::Arrow menu_bubble_alignment_ =
views::BubbleBorder::Arrow::TOP_LEFT;
};
}
#endif