Skip to main content

scene_management_mocks/
mock_scene_manager.rs

1// Copyright 2022 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use 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 scene_management::{DisplayMetrics, InjectorViewportSubscriber, SceneManagerTrait};
11use std::cell::Cell;
12
13pub struct MockSceneManager {
14    was_present_root_view_called: Cell<bool>,
15    was_set_root_view_called: Cell<bool>,
16    set_root_view_viewport_token: Cell<Option<ui_views::ViewportCreationToken>>,
17    set_root_view_view_ref: Cell<Option<ViewRef>>,
18}
19
20impl MockSceneManager {
21    pub fn new() -> Self {
22        MockSceneManager {
23            was_present_root_view_called: Cell::new(false),
24            was_set_root_view_called: Cell::new(false),
25            set_root_view_viewport_token: Cell::new(None),
26            set_root_view_view_ref: Cell::new(None),
27        }
28    }
29
30    pub fn assert_present_root_view_called(&self) {
31        assert!(self.was_present_root_view_called.get() == true);
32        self.was_present_root_view_called.set(false);
33    }
34
35    pub fn get_set_root_view_called_args(
36        &self,
37    ) -> (ui_views::ViewportCreationToken, Option<ui_views::ViewRef>) {
38        assert!(self.was_set_root_view_called.get() == true);
39        (
40            self.set_root_view_viewport_token
41                .take()
42                .expect("Expected to have a viewport_token from a previous call to set_root_view."),
43            self.set_root_view_view_ref.take(),
44        )
45    }
46}
47
48#[async_trait(?Send)]
49#[allow(unused_variables)]
50impl SceneManagerTrait for MockSceneManager {
51    fn present_root_view(&self) {
52        self.was_present_root_view_called.set(true);
53    }
54
55    async fn set_root_view(
56        &self,
57        viewport_creation_token: ui_views::ViewportCreationToken,
58        view_ref: Option<ui_views::ViewRef>,
59    ) -> Result<(), Error> {
60        self.was_set_root_view_called.set(true);
61        self.set_root_view_viewport_token.set(Some(viewport_creation_token));
62        self.set_root_view_view_ref.set(view_ref);
63        Ok(())
64    }
65
66    // Leave everything else unimplemented.
67
68    async fn set_root_view_deprecated(
69        &self,
70        view_provider: ui_app::ViewProviderProxy,
71    ) -> Result<ui_views::ViewRef, Error> {
72        unimplemented!()
73    }
74
75    fn set_cursor_position(&self, position_physical_px: input_pipeline::Position) {
76        unimplemented!()
77    }
78
79    fn set_cursor_visibility(&self, visible: bool) {
80        unimplemented!()
81    }
82
83    fn get_pointerinjection_view_refs(&self) -> (ui_views::ViewRef, ui_views::ViewRef) {
84        unimplemented!()
85    }
86
87    fn get_pointerinjection_display_size(&self) -> input_pipeline::Size {
88        unimplemented!()
89    }
90
91    fn get_pointerinjector_viewport_watcher_subscription(&self) -> InjectorViewportSubscriber {
92        unimplemented!()
93    }
94
95    fn get_display_metrics(&self) -> &DisplayMetrics {
96        unimplemented!()
97    }
98}