input_pipeline/
observe_fake_events_input_handler.rs1#[cfg(test)]
6use crate::{
7 input_device,
8 input_handler::{self, Handler},
9};
10#[cfg(test)]
11use async_trait::async_trait;
12#[cfg(test)]
13use futures::channel::mpsc::Sender;
14#[cfg(test)]
15use std::cell::RefCell;
16#[cfg(test)]
17use std::rc::Rc;
18
19#[cfg(test)]
22pub struct ObserveFakeEventsInputHandler {
23 event_sender: RefCell<Sender<input_device::InputEvent>>,
25}
26
27#[cfg(test)]
28impl ObserveFakeEventsInputHandler {
29 pub fn new(event_sender: Sender<input_device::InputEvent>) -> Rc<Self> {
30 Rc::new(ObserveFakeEventsInputHandler { event_sender: RefCell::new(event_sender) })
31 }
32}
33
34#[cfg(test)]
35impl Handler for ObserveFakeEventsInputHandler {
36 fn set_handler_healthy(self: std::rc::Rc<Self>) {
37 }
39
40 fn set_handler_unhealthy(self: std::rc::Rc<Self>, _msg: &str) {
41 }
43
44 fn get_name(&self) -> &'static str {
45 "ObserveFakeEventsInputHandler"
46 }
47
48 fn interest(&self) -> Vec<input_device::InputEventType> {
49 vec![
50 input_device::InputEventType::Keyboard,
51 input_device::InputEventType::LightSensor,
52 input_device::InputEventType::ConsumerControls,
53 input_device::InputEventType::Mouse,
54 input_device::InputEventType::TouchScreen,
55 input_device::InputEventType::Touchpad,
56 input_device::InputEventType::Fake,
57 ]
58 }
59}
60
61#[async_trait(?Send)]
62#[cfg(test)]
63impl input_handler::InputHandler for ObserveFakeEventsInputHandler {
64 async fn handle_input_event(
65 self: Rc<Self>,
66 input_event: input_device::InputEvent,
67 ) -> Vec<input_device::InputEvent> {
68 match self.event_sender.borrow_mut().try_send(input_event.clone()) {
69 Err(_) => assert!(false),
70 _ => {}
71 };
72
73 vec![input_event]
74 }
75}