#ifndef UI_VIEWS_EVENT_MONITOR_REMOTE_COCOA_H_
#define UI_VIEWS_EVENT_MONITOR_REMOTE_COCOA_H_
#include <memory>
#include <set>
#include "ui/gfx/native_ui_types.h"
#include "ui/views/cocoa/native_widget_mac_event_monitor.h"
#include "ui/views/event_monitor.h"
namespace views {
class EventMonitorRemoteCocoa
: public EventMonitor,
public views::NativeWidgetMacEventMonitor::Client {
public:
EventMonitorRemoteCocoa(ui::EventObserver* event_observer,
gfx::NativeWindow target_window,
const std::set<ui::EventType>& types);
EventMonitorRemoteCocoa(const EventMonitorRemoteCocoa&) = delete;
EventMonitorRemoteCocoa& operator=(const EventMonitorRemoteCocoa&) = delete;
~EventMonitorRemoteCocoa() override;
gfx::Point GetLastMouseLocation() override;
private:
void NativeWidgetMacEventMonitorOnEvent(ui::Event* event,
bool target_is_this_window,
bool* event_handled) override;
const std::set<ui::EventType> types_;
raw_ptr<ui::EventObserver> event_observer_;
std::unique_ptr<views::NativeWidgetMacEventMonitor> event_monitor_;
};
}
#endif