scene_management_mocks/
mock_scene_manager.rs1use anyhow::Error;
6use async_trait::async_trait;
7use fidl_fuchsia_ui_app as ui_app;
8use fidl_fuchsia_ui_views as ui_views;
9use fidl_fuchsia_ui_views::ViewRef;
10use fuchsia_async as fasync;
11use scene_management::{DisplayMetrics, InjectorViewportSubscriber, SceneManagerTrait};
12use std::cell::{Cell, RefCell};
13
14pub struct MockSceneManager {
15 was_present_root_view_called: Cell<bool>,
16 was_set_root_view_called: Cell<bool>,
17 set_root_view_viewport_token: Cell<Option<ui_views::ViewportCreationToken>>,
18 set_root_view_view_ref: Cell<Option<ViewRef>>,
19 tasks: RefCell<Vec<fasync::Task<()>>>,
20}
21
22impl MockSceneManager {
23 pub fn new() -> Self {
24 MockSceneManager {
25 was_present_root_view_called: Cell::new(false),
26 was_set_root_view_called: Cell::new(false),
27 set_root_view_viewport_token: Cell::new(None),
28 set_root_view_view_ref: Cell::new(None),
29 tasks: RefCell::new(vec![]),
30 }
31 }
32
33 pub fn assert_present_root_view_called(&self) {
34 assert!(self.was_present_root_view_called.get() == true);
35 self.was_present_root_view_called.set(false);
36 }
37
38 pub fn get_set_root_view_called_args(
39 &self,
40 ) -> (ui_views::ViewportCreationToken, Option<ui_views::ViewRef>) {
41 assert!(self.was_set_root_view_called.get() == true);
42 (
43 self.set_root_view_viewport_token
44 .take()
45 .expect("Expected to have a viewport_token from a previous call to set_root_view."),
46 self.set_root_view_view_ref.take(),
47 )
48 }
49}
50
51#[async_trait(?Send)]
52#[allow(unused_variables)]
53impl SceneManagerTrait for MockSceneManager {
54 fn present_root_view(&self) {
55 self.was_present_root_view_called.set(true);
56 }
57
58 async fn set_root_view(
59 &self,
60 viewport_creation_token: ui_views::ViewportCreationToken,
61 view_ref: Option<ui_views::ViewRef>,
62 ) -> Result<(), Error> {
63 self.was_set_root_view_called.set(true);
64 self.set_root_view_viewport_token.set(Some(viewport_creation_token));
65 self.set_root_view_view_ref.set(view_ref);
66 Ok(())
67 }
68
69 async fn set_root_view_deprecated(
72 &self,
73 view_provider: ui_app::ViewProviderProxy,
74 ) -> Result<ui_views::ViewRef, Error> {
75 unimplemented!()
76 }
77
78 fn set_cursor_position(&self, position_physical_px: input_pipeline::Position) {
79 unimplemented!()
80 }
81
82 fn set_cursor_visibility(&self, visible: bool) {
83 unimplemented!()
84 }
85
86 fn get_pointerinjection_view_refs(&self) -> (ui_views::ViewRef, ui_views::ViewRef) {
87 unimplemented!()
88 }
89
90 fn get_pointerinjection_display_size(&self) -> input_pipeline::Size {
91 unimplemented!()
92 }
93
94 fn get_pointerinjector_viewport_watcher_subscription(&self) -> InjectorViewportSubscriber {
95 unimplemented!()
96 }
97
98 fn get_display_metrics(&self) -> &DisplayMetrics {
99 unimplemented!()
100 }
101
102 fn manage_task(&self, task: fasync::Task<()>) {
103 self.tasks.borrow_mut().push(task);
104 }
105}