#ifndef UI_VIEWS_EVENT_MONITOR_MAC_H_
#define UI_VIEWS_EVENT_MONITOR_MAC_H_
#include <memory>
#include <set>
#include "base/auto_reset.h"
#include "base/memory/weak_ptr.h"
#include "ui/gfx/native_ui_types.h"
#include "ui/views/event_monitor.h"
#include "ui/views/views_export.h"
namespace views {
class EventMonitorMac : public EventMonitor {
public:
EventMonitorMac(ui::EventObserver* event_observer,
gfx::NativeWindow target_window,
const std::set<ui::EventType>& types);
EventMonitorMac(const EventMonitorMac&) = delete;
EventMonitorMac& operator=(const EventMonitorMac&) = delete;
~EventMonitorMac() override;
gfx::Point GetLastMouseLocation() override;
VIEWS_EXPORT [[nodiscard]] static base::AutoReset<bool>
UseRemoteCocoaForTesting();
private:
const std::set<ui::EventType> types_;
raw_ptr<ui::EventObserver> event_observer_;
struct ObjCStorage;
std::unique_ptr<ObjCStorage> objc_storage_;
base::WeakPtrFactory<EventMonitorMac> factory_{this};
};
}
#endif