settings/
accessibility.rs1pub mod accessibility_controller;
6
7pub mod types;
9
10mod accessibility_fidl_handler;
11
12use self::accessibility_controller::AccessibilityController;
13use self::accessibility_fidl_handler::AccessibilityFidlHandler;
14use settings_common::inspect::event::{SettingValuePublisher, UsagePublisher};
15use settings_storage::device_storage::DeviceStorage;
16use settings_storage::storage_factory::StorageFactory;
17use std::rc::Rc;
18use types::AccessibilityInfo;
19
20pub struct SetupResult {
21 pub accessibility_fidl_handler: AccessibilityFidlHandler,
22 pub task: fuchsia_async::Task<()>,
23}
24
25pub async fn setup_accessibility_api<F>(
26 storage_factory: Rc<F>,
27 setting_value_publisher: SettingValuePublisher<AccessibilityInfo>,
28 usage_publisher: UsagePublisher<AccessibilityInfo>,
29) -> SetupResult
30where
31 F: StorageFactory<Storage = DeviceStorage>,
32{
33 let mut accessibility_controller =
34 AccessibilityController::new(storage_factory, setting_value_publisher.clone()).await;
35 let initial_value = accessibility_controller.restore().await;
36 let _ = setting_value_publisher.publish(&initial_value);
37
38 let (accessibility_fidl_handler, request_rx) = AccessibilityFidlHandler::new(
39 &mut accessibility_controller,
40 usage_publisher,
41 initial_value,
42 );
43 let task = accessibility_controller.handle(request_rx).await;
44 SetupResult { accessibility_fidl_handler, task }
45}