blob: a0823ab7a09603c0a1d83933ed48e8155c6341b0 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use crate::pointer_state::PointerState;
use async_trait::async_trait;
use fidl_fuchsia_ui_pointerinjector as pointerinjector;
use stress_test::actor::{Actor, ActorError};
pub struct InputActor {
injector: pointerinjector::DeviceProxy,
state: PointerState,
}
impl InputActor {
pub fn new(
injector: pointerinjector::DeviceProxy,
display_width: u16,
display_height: u16,
) -> Self {
let state = PointerState::new(display_width, display_height);
Self { injector, state }
}
}
#[async_trait]
impl Actor for InputActor {
async fn perform(&mut self) -> Result<(), ActorError> {
let event = self.state.next_event();
let fut = self.injector.inject(&[event]);
fut.await.expect("Injection failed");
Ok(())
}
}