[SetUI] Remove fuchsia.settings.System
The APIs in fuchsia.settings.System weren't being used anymore, so
they're being removed all at once.
Fixed: 47193
Change-Id: If2a481c8d1cb8a5b1e10907f0227a047272c07d6
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/401498
Commit-Queue: Paul Faria <paulfaria@google.com>
Reviewed-by: Sarah Chan <spqchan@google.com>
Reviewed-by: William Xiao <wxyz@google.com>
Testability-Review: William Xiao <wxyz@google.com>
API-Review: Kevin Lindkvist <lindkvist@google.com>
diff --git a/garnet/bin/setui/src/lib.rs b/garnet/bin/setui/src/lib.rs
index 35db96b..e7fd727 100644
--- a/garnet/bin/setui/src/lib.rs
+++ b/garnet/bin/setui/src/lib.rs
@@ -37,12 +37,11 @@
crate::switchboard::accessibility_types::AccessibilityInfo,
crate::switchboard::base::{
AudioInfo, DisplayInfo, DoNotDisturbInfo, InputInfo, NightModeInfo, PrivacyInfo,
- SettingType, SetupInfo, SystemInfo,
+ SettingType, SetupInfo,
},
crate::switchboard::intl_types::IntlInfo,
crate::switchboard::light_types::LightInfo,
crate::switchboard::switchboard_impl::SwitchboardBuilder,
- crate::system::system_controller::SystemController,
anyhow::{format_err, Error},
fidl_fuchsia_settings::*,
fuchsia_async as fasync,
@@ -76,7 +75,6 @@
mod power;
mod privacy;
mod setup;
-mod system;
pub mod agent;
pub mod config;
@@ -366,12 +364,6 @@
SettingType::Privacy,
DataHandler::<PrivacyInfo, PrivacyController>::spawn
);
- // System
- register_handler!(
- factory_handle,
- SettingType::System,
- DataHandler::<SystemInfo, SystemController>::spawn
- );
// Setup
register_handler!(
factory_handle,
@@ -521,15 +513,6 @@
components,
service_dir,
switchboard_messenger_factory,
- System,
- system,
- System
- );
-
- register_fidl_handler!(
- components,
- service_dir,
- switchboard_messenger_factory,
Input,
input,
Input
diff --git a/garnet/bin/setui/src/switchboard/base.rs b/garnet/bin/setui/src/switchboard/base.rs
index 7347953b..1f383d1 100644
--- a/garnet/bin/setui/src/switchboard/base.rs
+++ b/garnet/bin/setui/src/switchboard/base.rs
@@ -75,7 +75,6 @@
Power,
Privacy,
Setup,
- System,
}
/// Returns all known setting types. New additions to SettingType should also
@@ -95,7 +94,6 @@
SettingType::Power,
SettingType::Privacy,
SettingType::Setup,
- SettingType::System,
]
.into_iter()
.collect();
@@ -111,7 +109,6 @@
SettingType::Power,
SettingType::Privacy,
SettingType::Setup,
- SettingType::System,
]
.into_iter()
.collect();
@@ -164,9 +161,6 @@
// Setup info requests.
SetConfigurationInterfaces(ConfigurationInterfaceFlags),
-
- // System login requests.
- SetLoginOverrideMode(SystemLoginOverrideMode),
}
#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)]
@@ -308,18 +302,6 @@
pub user_data_sharing_consent: Option<bool>,
}
-#[derive(PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
-pub enum SystemLoginOverrideMode {
- None,
- AutologinGuest,
- AuthProvider,
-}
-
-#[derive(PartialEq, Debug, Clone, Copy, Serialize, Deserialize)]
-pub struct SystemInfo {
- pub login_override_mode: SystemLoginOverrideMode,
-}
-
#[derive(PartialEq, Debug, Clone, Copy, Deserialize, Serialize)]
pub struct SetupInfo {
pub configuration_interfaces: ConfigurationInterfaceFlags,
@@ -351,7 +333,6 @@
NightMode(NightModeInfo),
Privacy(PrivacyInfo),
Setup(SetupInfo),
- System(SystemInfo),
}
impl SettingResponse {
@@ -372,7 +353,6 @@
SettingResponse::NightMode(info) => ("NightMode", format!("{:?}", info)),
SettingResponse::Privacy(info) => ("Privacy", format!("{:?}", info)),
SettingResponse::Setup(info) => ("Setup", format!("{:?}", info)),
- SettingResponse::System(info) => ("System", format!("{:?}", info)),
}
}
}
diff --git a/garnet/bin/setui/src/system.rs b/garnet/bin/setui/src/system.rs
deleted file mode 100644
index 04a6d94..0000000
--- a/garnet/bin/setui/src/system.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2019 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.
-
-pub use self::system_fidl_handler::fidl_io;
-pub mod system_controller;
-
-mod system_fidl_handler;
diff --git a/garnet/bin/setui/src/system/system_controller.rs b/garnet/bin/setui/src/system/system_controller.rs
deleted file mode 100644
index b41f89a..0000000
--- a/garnet/bin/setui/src/system/system_controller.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2019 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::registry::device_storage::DeviceStorageCompatible;
-use crate::registry::setting_handler::persist::{
- controller as data_controller, write, ClientProxy, WriteResult,
-};
-use crate::registry::setting_handler::{controller, ControllerError};
-use crate::switchboard::base::{
- SettingRequest, SettingResponse, SettingResponseResult, SystemInfo, SystemLoginOverrideMode,
-};
-use async_trait::async_trait;
-
-impl DeviceStorageCompatible for SystemInfo {
- const KEY: &'static str = "system_info";
-
- fn default_value() -> Self {
- SystemInfo { login_override_mode: SystemLoginOverrideMode::None }
- }
-}
-
-pub struct SystemController {
- client: ClientProxy<SystemInfo>,
-}
-
-#[async_trait]
-impl data_controller::Create<SystemInfo> for SystemController {
- /// Creates the controller
- async fn create(client: ClientProxy<SystemInfo>) -> Result<Self, ControllerError> {
- Ok(Self { client: client })
- }
-}
-
-#[async_trait]
-impl controller::Handle for SystemController {
- async fn handle(&self, request: SettingRequest) -> Option<SettingResponseResult> {
- #[allow(unreachable_patterns)]
- match request {
- SettingRequest::SetLoginOverrideMode(mode) => {
- let mut value = self.client.read().await;
- value.login_override_mode = SystemLoginOverrideMode::from(mode);
-
- Some(write(&self.client, value, false).await.into_response_result())
- }
- SettingRequest::Get => {
- Some(Ok(Some(SettingResponse::System(self.client.read().await))))
- }
- _ => None,
- }
- }
-}
diff --git a/garnet/bin/setui/src/system/system_fidl_handler.rs b/garnet/bin/setui/src/system/system_fidl_handler.rs
deleted file mode 100644
index 9b6f4d8..0000000
--- a/garnet/bin/setui/src/system/system_fidl_handler.rs
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2019 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::fidl_hanging_get_responder,
- crate::fidl_hanging_get_result_responder,
- crate::fidl_process,
- crate::fidl_processor::RequestContext,
- crate::switchboard::base::{
- SettingRequest, SettingResponse, SettingType, SystemLoginOverrideMode,
- },
- crate::switchboard::hanging_get_handler::Sender,
- fidl_fuchsia_settings::{
- SystemMarker, SystemRequest, SystemSetResponder, SystemSettings, SystemWatch2Responder,
- SystemWatchResponder,
- },
- fuchsia_async as fasync,
- futures::future::LocalBoxFuture,
- futures::prelude::*,
-};
-
-fidl_hanging_get_responder!(SystemSettings, SystemWatch2Responder, SystemMarker::DEBUG_NAME);
-
-// TODO(fxb/52593): Remove when clients are ported to watch2.
-fidl_hanging_get_result_responder!(SystemSettings, SystemWatchResponder, SystemMarker::DEBUG_NAME);
-
-impl From<SettingResponse> for SystemSettings {
- fn from(response: SettingResponse) -> Self {
- if let SettingResponse::System(info) = response {
- let mut system_settings = fidl_fuchsia_settings::SystemSettings::empty();
- system_settings.mode =
- Some(fidl_fuchsia_settings::LoginOverride::from(info.login_override_mode));
- system_settings
- } else {
- panic!("incorrect value sent to system");
- }
- }
-}
-
-fidl_process!(
- System,
- SettingType::System,
- process_request,
- SystemWatch2Responder,
- process_request_2
-);
-
-// TODO(fxb/52593): Replace with logic from process_request_2
-// and remove process_request_2 when clients ported to Watch2 and back.
-async fn process_request(
- context: RequestContext<SystemSettings, SystemWatchResponder>,
- req: SystemRequest,
-) -> Result<Option<SystemRequest>, anyhow::Error> {
- #[allow(unreachable_patterns)]
- match req {
- SystemRequest::Watch { responder } => {
- context.watch(responder, false).await;
- }
- _ => {
- return Ok(Some(req));
- }
- }
-
- return Ok(None);
-}
-
-async fn process_request_2(
- context: RequestContext<SystemSettings, SystemWatch2Responder>,
- req: SystemRequest,
-) -> Result<Option<SystemRequest>, anyhow::Error> {
- #[allow(unreachable_patterns)]
- match req {
- SystemRequest::Set { settings, responder } => {
- if let Some(mode) = settings.mode {
- change_login_override(
- context.clone(),
- SystemLoginOverrideMode::from(mode),
- responder,
- );
- }
- }
- SystemRequest::Watch2 { responder } => {
- context.watch(responder, true).await;
- }
- _ => {
- return Ok(Some(req));
- }
- }
-
- return Ok(None);
-}
-
-/// Sets the login mode and schedules accounts to be cleared. Upon success, the
-/// device is scheduled to reboot so the change will take effect.
-fn change_login_override(
- context: RequestContext<SystemSettings, SystemWatch2Responder>,
- mode: SystemLoginOverrideMode,
- responder: SystemSetResponder,
-) {
- fasync::spawn(async move {
- if context
- .request(SettingType::System, SettingRequest::SetLoginOverrideMode(mode))
- .await
- .is_err()
- {
- responder.send(&mut Err(fidl_fuchsia_settings::Error::Failed)).ok();
- return;
- }
-
- if context
- .request(SettingType::Account, SettingRequest::ScheduleClearAccounts)
- .await
- .is_err()
- {
- responder.send(&mut Err(fidl_fuchsia_settings::Error::Failed)).ok();
- return;
- }
-
- if context.request(SettingType::Power, SettingRequest::Reboot).await.is_err() {
- responder.send(&mut Err(fidl_fuchsia_settings::Error::Failed)).ok();
- return;
- }
-
- responder.send(&mut Ok(())).ok();
- });
-}
-
-impl From<fidl_fuchsia_settings::LoginOverride> for SystemLoginOverrideMode {
- fn from(item: fidl_fuchsia_settings::LoginOverride) -> Self {
- match item {
- fidl_fuchsia_settings::LoginOverride::AutologinGuest => {
- SystemLoginOverrideMode::AutologinGuest
- }
- fidl_fuchsia_settings::LoginOverride::AuthProvider => {
- SystemLoginOverrideMode::AuthProvider
- }
- fidl_fuchsia_settings::LoginOverride::None => SystemLoginOverrideMode::None,
- }
- }
-}
-
-impl From<SystemLoginOverrideMode> for fidl_fuchsia_settings::LoginOverride {
- fn from(item: SystemLoginOverrideMode) -> Self {
- match item {
- SystemLoginOverrideMode::AutologinGuest => {
- fidl_fuchsia_settings::LoginOverride::AutologinGuest
- }
- SystemLoginOverrideMode::AuthProvider => {
- fidl_fuchsia_settings::LoginOverride::AuthProvider
- }
- SystemLoginOverrideMode::None => fidl_fuchsia_settings::LoginOverride::None,
- }
- }
-}
diff --git a/garnet/bin/setui/src/tests.rs b/garnet/bin/setui/src/tests.rs
index 2ad0fd0..2785ed3 100644
--- a/garnet/bin/setui/src/tests.rs
+++ b/garnet/bin/setui/src/tests.rs
@@ -25,6 +25,5 @@
mod service_configuration_tests;
mod setting_handler_tests;
mod setup_tests;
-mod system_tests;
mod test_failure_utils;
mod volume_change_earcons_tests;
diff --git a/garnet/bin/setui/src/tests/fakes.rs b/garnet/bin/setui/src/tests/fakes.rs
index 5df8a5e..7bae09dd 100644
--- a/garnet/bin/setui/src/tests/fakes.rs
+++ b/garnet/bin/setui/src/tests/fakes.rs
@@ -5,7 +5,6 @@
pub mod audio_core_service;
pub mod base;
pub mod bluetooth_service;
-pub mod device_settings_service;
pub mod fake_hanging_get_handler;
pub mod fake_hanging_get_types;
pub mod hardware_power_statecontrol_service;
diff --git a/garnet/bin/setui/src/tests/fakes/device_settings_service.rs b/garnet/bin/setui/src/tests/fakes/device_settings_service.rs
deleted file mode 100644
index d2a69a9..0000000
--- a/garnet/bin/setui/src/tests/fakes/device_settings_service.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2019 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::tests::fakes::base::Service;
-use anyhow::{format_err, Error};
-use fidl::endpoints::{ServerEnd, ServiceMarker};
-use fuchsia_async as fasync;
-use fuchsia_zircon as zx;
-use futures::TryStreamExt;
-use parking_lot::RwLock;
-use std::collections::HashMap;
-use std::sync::Arc;
-
-/// An implementation of device settings services that records stored integers invoked
-/// on it.
-pub struct DeviceSettingsService {
- recorded_integers: Arc<RwLock<HashMap<String, i64>>>,
-}
-
-impl DeviceSettingsService {
- pub fn new() -> Self {
- Self { recorded_integers: Arc::new(RwLock::new(HashMap::new())) }
- }
-
- pub fn get_integer(&self, key: String) -> Option<i64> {
- match self.recorded_integers.read().get(&key) {
- None => None,
- Some(&val) => Some(val),
- }
- }
-}
-
-impl Service for DeviceSettingsService {
- fn can_handle_service(&self, service_name: &str) -> bool {
- return service_name == fidl_fuchsia_devicesettings::DeviceSettingsManagerMarker::NAME;
- }
-
- fn process_stream(&self, service_name: &str, channel: zx::Channel) -> Result<(), Error> {
- if !self.can_handle_service(service_name) {
- return Err(format_err!("unsupported"));
- }
-
- let mut manager_stream =
- ServerEnd::<fidl_fuchsia_devicesettings::DeviceSettingsManagerMarker>::new(channel)
- .into_stream()?;
-
- let recorded_integers_clone = self.recorded_integers.clone();
-
- fasync::spawn(async move {
- while let Some(req) = manager_stream.try_next().await.unwrap() {
- #[allow(unreachable_patterns)]
- match req {
- fidl_fuchsia_devicesettings::DeviceSettingsManagerRequest::SetInteger {
- key,
- val,
- responder,
- } => {
- recorded_integers_clone.write().insert(key, val);
- responder.send(true).unwrap();
- }
- _ => {}
- }
- }
- });
-
- Ok(())
- }
-}
diff --git a/garnet/bin/setui/src/tests/fakes/hardware_power_statecontrol_service.rs b/garnet/bin/setui/src/tests/fakes/hardware_power_statecontrol_service.rs
index 86d06f0..c53ebc9e 100644
--- a/garnet/bin/setui/src/tests/fakes/hardware_power_statecontrol_service.rs
+++ b/garnet/bin/setui/src/tests/fakes/hardware_power_statecontrol_service.rs
@@ -9,39 +9,22 @@
use fuchsia_zircon as zx;
use futures::TryStreamExt;
use parking_lot::RwLock;
-use std::{collections::VecDeque, sync::Arc};
+use std::sync::Arc;
#[derive(PartialEq, Debug, Eq, Hash, Clone, Copy)]
pub enum Action {
Reboot,
}
-#[derive(PartialEq, Debug, Eq, Hash, Clone, Copy)]
-pub enum Response {
- Fail,
-}
-
-impl Response {
- fn to_zx_status_result(self) -> Result<(), i32> {
- match self {
- Response::Fail => Err(-1),
- }
- }
-}
-
/// An implementation of hardware power statecontrol services that records the
/// actions invoked on it.
pub struct HardwarePowerStatecontrolService {
recorded_actions: Arc<RwLock<Vec<Action>>>,
- planned_actions: Arc<RwLock<VecDeque<(Action, Response)>>>,
}
impl HardwarePowerStatecontrolService {
pub fn new() -> Self {
- Self {
- recorded_actions: Arc::new(RwLock::new(Vec::new())),
- planned_actions: Arc::new(RwLock::new(VecDeque::new())),
- }
+ Self { recorded_actions: Arc::new(RwLock::new(Vec::new())) }
}
pub fn verify_action_sequence(&self, actions: Vec<Action>) -> bool {
@@ -52,11 +35,6 @@
.zip(actions.iter())
.all(|(action1, action2)| action1 == action2)
}
-
- pub fn plan_action_response(&self, action: Action, response: Response) {
- let mut planned_actions = self.planned_actions.write();
- planned_actions.push_front((action, response));
- }
}
impl Service for HardwarePowerStatecontrolService {
@@ -73,28 +51,14 @@
ServerEnd::<fidl_fuchsia_hardware_power_statecontrol::AdminMarker>::new(channel)
.into_stream()?;
- let planned_actions = self.planned_actions.clone();
let recorded_actions_clone = self.recorded_actions.clone();
fasync::spawn(async move {
while let Some(req) = manager_stream.try_next().await.unwrap() {
#[allow(unreachable_patterns)]
match req {
AdminRequest::Reboot { reason: RebootReason::UserRequest, responder } => {
- let mut response = {
- let mut planned_actions = planned_actions.write();
- if let Some((Action::Reboot, _)) = planned_actions.back() {
- let (_, response) = planned_actions.pop_back().unwrap();
- response.to_zx_status_result()
- } else {
- Ok(())
- }
- };
-
- if let Ok(_) = response {
- recorded_actions_clone.write().push(Action::Reboot);
- }
-
- responder.send(&mut response).unwrap();
+ recorded_actions_clone.write().push(Action::Reboot);
+ responder.send(&mut Ok(())).unwrap();
}
_ => {}
}
diff --git a/garnet/bin/setui/src/tests/restore_agent_tests.rs b/garnet/bin/setui/src/tests/restore_agent_tests.rs
index 24b87ff..b2f46d0 100644
--- a/garnet/bin/setui/src/tests/restore_agent_tests.rs
+++ b/garnet/bin/setui/src/tests/restore_agent_tests.rs
@@ -43,7 +43,7 @@
let env = EnvironmentBuilder::new(InMemoryStorageFactory::create())
.service(ServiceRegistry::serve(ServiceRegistry::create()))
.event_subscribers(&[Blueprint::create(create_subscriber)])
- .settings(&[SettingType::System])
+ .settings(&[SettingType::Setup])
.agents(&[restore_agent::blueprint::create()])
.spawn_and_get_nested_environment(ENV_NAME)
.await
@@ -129,6 +129,6 @@
if let Some(MessageEvent::Message(event::Payload::Event(received_event), ..)) =
event_receptor.next().await
{
- assert_eq!(received_event, Event::Restore(restore::Event::NoOp(SettingType::System)));
+ assert_eq!(received_event, Event::Restore(restore::Event::NoOp(SettingType::Setup)));
}
}
diff --git a/garnet/bin/setui/src/tests/system_tests.rs b/garnet/bin/setui/src/tests/system_tests.rs
deleted file mode 100644
index d135f64..0000000
--- a/garnet/bin/setui/src/tests/system_tests.rs
+++ /dev/null
@@ -1,231 +0,0 @@
-// Copyright 2019 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.
-
-#[cfg(test)]
-use {
- crate::registry::device_storage::testing::*,
- crate::switchboard::base::{SettingType, SystemInfo, SystemLoginOverrideMode},
- crate::tests::fakes::device_settings_service::DeviceSettingsService,
- crate::tests::fakes::hardware_power_statecontrol_service::{
- Action, HardwarePowerStatecontrolService, Response,
- },
- crate::tests::fakes::service_registry::ServiceRegistry,
- crate::tests::test_failure_utils::create_test_env_with_failures,
- crate::EnvironmentBuilder,
- fidl::Error::ClientChannelClosed,
- fidl_fuchsia_settings::{Error as SettingsError, SystemMarker, SystemProxy, SystemSettings},
- fuchsia_zircon::Status,
- futures::lock::Mutex,
- std::sync::Arc,
-};
-
-const ENV_NAME: &str = "settings_service_system_test_environment";
-const CONTEXT_ID: u64 = 0;
-const FACTORY_RESET_FLAG: &str = "FactoryReset";
-
-/// Creates an environment that will fail on a get request.
-async fn create_system_test_env_with_failures() -> SystemProxy {
- let storage_factory = InMemoryStorageFactory::create();
- create_test_env_with_failures(storage_factory, ENV_NAME, SettingType::System)
- .await
- .connect_to_service::<SystemMarker>()
- .unwrap()
-}
-
-#[fuchsia_async::run_until_stalled(test)]
-async fn test_system() {
- const STARTING_LOGIN_MODE: fidl_fuchsia_settings::LoginOverride =
- fidl_fuchsia_settings::LoginOverride::AutologinGuest;
- const CHANGED_LOGIN_MODE: fidl_fuchsia_settings::LoginOverride =
- fidl_fuchsia_settings::LoginOverride::AuthProvider;
-
- let storage_factory = InMemoryStorageFactory::create();
- let store = storage_factory
- .lock()
- .await
- .get_device_storage::<SystemInfo>(StorageAccessContext::Test, CONTEXT_ID);
-
- // Write out initial value to storage.
- {
- let initial_value =
- SystemInfo { login_override_mode: SystemLoginOverrideMode::from(STARTING_LOGIN_MODE) };
- let mut store_lock = store.lock().await;
- store_lock.write(&initial_value, false).await.ok();
- }
-
- let service_registry = ServiceRegistry::create();
- let device_settings_service_handle = Arc::new(Mutex::new(DeviceSettingsService::new()));
- service_registry.lock().await.register_service(device_settings_service_handle.clone());
- let hardware_power_statecontrol_service_handle =
- Arc::new(Mutex::new(HardwarePowerStatecontrolService::new()));
- service_registry
- .lock()
- .await
- .register_service(hardware_power_statecontrol_service_handle.clone());
-
- let env = EnvironmentBuilder::new(storage_factory)
- .service(ServiceRegistry::serve(service_registry.clone()))
- .settings(&[SettingType::System, SettingType::Account, SettingType::Power])
- .spawn_and_get_nested_environment(ENV_NAME)
- .await
- .unwrap();
-
- let system_proxy = env.connect_to_service::<SystemMarker>().unwrap();
-
- let settings = system_proxy.watch2().await.expect("watch completed");
-
- assert_eq!(settings.mode, Some(STARTING_LOGIN_MODE));
-
- let mut system_settings = SystemSettings::empty();
- system_settings.mode = Some(CHANGED_LOGIN_MODE);
- system_proxy.set(system_settings).await.expect("set completed").expect("set successful");
-
- let settings = system_proxy.watch2().await.expect("watch completed");
-
- assert_eq!(settings.mode, Some(CHANGED_LOGIN_MODE));
-
- // Verify new value is in storage
- {
- let expected =
- SystemInfo { login_override_mode: SystemLoginOverrideMode::from(CHANGED_LOGIN_MODE) };
- let mut store_lock = store.lock().await;
- assert_eq!(expected, store_lock.get().await);
- }
-
- let device_settings_lock = device_settings_service_handle.lock().await;
-
- if let Some(account_reset_flag) =
- device_settings_lock.get_integer(FACTORY_RESET_FLAG.to_string())
- {
- assert_eq!(account_reset_flag, 1);
- } else {
- panic!("factory reset flag should have been set");
- }
-
- // Ensure reboot was requested by the controller
- assert!(hardware_power_statecontrol_service_handle
- .lock()
- .await
- .verify_action_sequence(vec![Action::Reboot]));
-}
-
-#[fuchsia_async::run_until_stalled(test)]
-async fn test_failed_reboot() {
- const STARTING_LOGIN_MODE: fidl_fuchsia_settings::LoginOverride =
- fidl_fuchsia_settings::LoginOverride::AutologinGuest;
- const CHANGED_LOGIN_MODE: fidl_fuchsia_settings::LoginOverride =
- fidl_fuchsia_settings::LoginOverride::AuthProvider;
-
- let storage_factory = InMemoryStorageFactory::create();
- let store = storage_factory
- .lock()
- .await
- .get_device_storage::<SystemInfo>(StorageAccessContext::Test, CONTEXT_ID);
-
- // Write out initial value to storage.
- {
- let initial_value =
- SystemInfo { login_override_mode: SystemLoginOverrideMode::from(STARTING_LOGIN_MODE) };
- let mut store_lock = store.lock().await;
- store_lock.write(&initial_value, false).await.ok();
- }
-
- let service_registry = ServiceRegistry::create();
- let device_settings_service_handle = Arc::new(Mutex::new(DeviceSettingsService::new()));
- service_registry.lock().await.register_service(device_settings_service_handle.clone());
- let hardware_power_statecontrol_service_handle =
- Arc::new(Mutex::new(HardwarePowerStatecontrolService::new()));
- hardware_power_statecontrol_service_handle
- .lock()
- .await
- .plan_action_response(Action::Reboot, Response::Fail);
- service_registry
- .lock()
- .await
- .register_service(hardware_power_statecontrol_service_handle.clone());
-
- let env = EnvironmentBuilder::new(storage_factory)
- .service(ServiceRegistry::serve(service_registry.clone()))
- .settings(&[SettingType::System, SettingType::Account, SettingType::Power])
- .spawn_and_get_nested_environment(ENV_NAME)
- .await
- .unwrap();
-
- let system_proxy = env.connect_to_service::<SystemMarker>().unwrap();
-
- let settings = system_proxy.watch2().await.expect("watch completed");
-
- assert_eq!(settings.mode, Some(STARTING_LOGIN_MODE));
-
- let mut system_settings = SystemSettings::empty();
- system_settings.mode = Some(CHANGED_LOGIN_MODE);
- assert!(
- matches!(
- system_proxy.set(system_settings).await.expect("set completed"),
- Err(SettingsError::Failed)
- ),
- "set should have failed"
- );
-
- let settings = system_proxy.watch2().await.expect("watch completed");
-
- assert_eq!(settings.mode, Some(CHANGED_LOGIN_MODE));
-
- // Verify new value is in storage
- {
- let expected =
- SystemInfo { login_override_mode: SystemLoginOverrideMode::from(CHANGED_LOGIN_MODE) };
- let mut store_lock = store.lock().await;
- assert_eq!(expected, store_lock.get().await);
- }
-
- let device_settings_lock = device_settings_service_handle.lock().await;
-
- if let Some(account_reset_flag) =
- device_settings_lock.get_integer(FACTORY_RESET_FLAG.to_string())
- {
- assert_eq!(account_reset_flag, 1);
- } else {
- panic!("factory reset flag should have been set");
- }
-
- // Ensure reboot was not completed by the controller (note the not)
- assert!(hardware_power_statecontrol_service_handle.lock().await.verify_action_sequence(vec![]));
-}
-
-#[fuchsia_async::run_until_stalled(test)]
-async fn test_channel_failure_watch() {
- let system_service = create_system_test_env_with_failures().await;
- let result = system_service.watch().await.ok();
- assert_eq!(result, Some(Err(SettingsError::Failed)));
-}
-
-#[fuchsia_async::run_until_stalled(test)]
-async fn test_channel_failure_watch2() {
- let system_service = create_system_test_env_with_failures().await;
- let result = system_service.watch2().await;
- assert!(result.is_err());
- assert_eq!(
- ClientChannelClosed(Status::INTERNAL).to_string(),
- result.err().unwrap().to_string()
- );
-}
-
-#[fuchsia_async::run_until_stalled(test)]
-async fn test_simultaneous_watch() {
- let factory = InMemoryStorageFactory::create();
-
- let env = EnvironmentBuilder::new(factory)
- .settings(&[SettingType::System])
- .spawn_and_get_nested_environment(ENV_NAME)
- .await
- .unwrap();
-
- let system_service = env.connect_to_service::<SystemMarker>().unwrap();
-
- let settings =
- system_service.watch().await.expect("watch completed").expect("watch successful");
- let settings2 = system_service.watch2().await.expect("watch completed");
- assert_eq!(settings, settings2);
-}
diff --git a/garnet/bin/setui_client/src/interface_test.rs b/garnet/bin/setui_client/src/interface_test.rs
index 2c63a3e..39b4d8d 100644
--- a/garnet/bin/setui_client/src/interface_test.rs
+++ b/garnet/bin/setui_client/src/interface_test.rs
@@ -20,7 +20,6 @@
setui_client_lib::night_mode,
setui_client_lib::privacy,
setui_client_lib::setup,
- setui_client_lib::system,
setui_client_lib::{AccessibilityOptions, CaptionCommands, CaptionFontStyle, CaptionOptions},
std::sync::Arc,
};
@@ -36,7 +35,6 @@
NightMode(NightModeRequestStream),
Privacy(PrivacyRequestStream),
Setup(SetupRequestStream),
- System(SystemRequestStream),
}
struct ExpectedStreamSettingsStruct {
@@ -208,10 +206,6 @@
validate_privacy_watch_output(Some(true)).await?;
validate_privacy_watch_output(Some(false)).await?;
- println!("system service tests");
- println!(" client calls set login mode");
- validate_system_override().await?;
-
println!("setup service tests");
println!(" client calls set config interfaces");
validate_setup().await?;
@@ -260,25 +254,6 @@
}};
}
-async fn validate_system_override() -> Result<(), Error> {
- let env = create_service!(Services::System,
- SystemRequest::Set { settings, responder } => {
- if let Some(login_override) = settings.mode {
- assert_eq!(login_override, LoginOverride::AuthProvider);
- responder.send(&mut Ok(()))?;
- } else {
- panic!("Wrong call to set");
- }
- });
-
- let system_service =
- env.connect_to_service::<SystemMarker>().context("Failed to connect to intl service")?;
-
- system::command(system_service, Some("auth".to_string())).await?;
-
- Ok(())
-}
-
async fn validate_intl_set() -> Result<(), Error> {
const TEST_TIME_ZONE: &str = "GMT";
const TEST_TEMPERATURE_UNIT: TemperatureUnit = TemperatureUnit::Celsius;
diff --git a/garnet/bin/setui_client/src/lib.rs b/garnet/bin/setui_client/src/lib.rs
index ce5d878..13270ab 100644
--- a/garnet/bin/setui_client/src/lib.rs
+++ b/garnet/bin/setui_client/src/lib.rs
@@ -15,7 +15,6 @@
pub mod night_mode;
pub mod privacy;
pub mod setup;
-pub mod system;
/// SettingClient exercises the functionality found in SetUI service. Currently,
/// action parameters are specified at as individual arguments, but the goal is
@@ -24,12 +23,6 @@
#[structopt(name = "setui_client", about = "set setting values")]
pub enum SettingClient {
// Operations that use the new interfaces.
- #[structopt(name = "system")]
- System {
- #[structopt(short = "m", long = "login_mode")]
- login_mode: Option<String>,
- },
-
#[structopt(name = "accessibility")]
Accessibility(AccessibilityOptions),
@@ -222,12 +215,6 @@
pub async fn run_command(command: SettingClient) -> Result<(), Error> {
match command {
- SettingClient::System { login_mode } => {
- let system_service = connect_to_service::<fidl_fuchsia_settings::SystemMarker>()
- .context("Failed to connect to system service")?;
- let output = system::command(system_service, login_mode).await?;
- println!("System: {}", output);
- }
SettingClient::Device { build_tag } => {
let _build_tag = build_tag.clone();
if let Some(_build_tag_val) = build_tag {
diff --git a/garnet/bin/setui_client/src/system.rs b/garnet/bin/setui_client/src/system.rs
deleted file mode 100644
index df17076..0000000
--- a/garnet/bin/setui_client/src/system.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2019 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.
-
-#![allow(dead_code)]
-
-use {
- anyhow::{format_err, Error},
- fidl_fuchsia_settings::*,
-};
-
-pub const LOGIN_OVERRIDE_AUTH: &str = "auth";
-pub const LOGIN_OVERRIDE_AUTOLOGINGUEST: &str = "autologinguest";
-pub const LOGIN_OVERRIDE_NONE: &str = "none";
-
-pub async fn command(proxy: SystemProxy, login_override: Option<String>) -> Result<String, Error> {
- let mut output = String::new();
-
- match login_override {
- Some(override_value) => {
- let mut settings = SystemSettings::empty();
- settings.mode = Some(extract_login_override(&override_value)?);
-
- let mutate_result = proxy.set(settings).await?;
- match mutate_result {
- Ok(()) => output.push_str(&format!("Successfully set to {}", override_value)),
- Err(err) => output.push_str(&format!("{:?}", err)),
- }
- }
- None => {
- let setting = proxy.watch2().await?;
- let setting_string = describe_login_override(setting.mode)?;
- output.push_str(&setting_string);
- }
- }
-
- Ok(output)
-}
-
-/// Converts the user-specified login override value into the defined
-/// LoginOverride enum value.
-fn extract_login_override(value: &str) -> Result<LoginOverride, Error> {
- match value {
- LOGIN_OVERRIDE_AUTH => Ok(LoginOverride::AuthProvider),
- LOGIN_OVERRIDE_AUTOLOGINGUEST => Ok(LoginOverride::AutologinGuest),
- LOGIN_OVERRIDE_NONE => Ok(LoginOverride::None),
- _ => Err(format_err!("unknown login override")),
- }
-}
-
-fn describe_login_override(login_override_option: Option<LoginOverride>) -> Result<String, Error> {
- if login_override_option == None {
- return Ok("none".to_string());
- }
-
- match login_override_option.unwrap() {
- LoginOverride::AutologinGuest => Ok(LOGIN_OVERRIDE_AUTOLOGINGUEST.to_string()),
- LoginOverride::None => Ok(LOGIN_OVERRIDE_NONE.to_string()),
- LoginOverride::AuthProvider => Ok(LOGIN_OVERRIDE_AUTH.to_string()),
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- /// Verifies that externally dependent values are not changed
- #[test]
- fn test_describe_account_override() {
- verify_account_override(LoginOverride::AutologinGuest, "autologinguest");
- verify_account_override(LoginOverride::None, "none");
- verify_account_override(LoginOverride::AuthProvider, "auth");
- }
-
- fn verify_account_override(login_override: LoginOverride, expected: &str) {
- match describe_login_override(Some(login_override)) {
- Ok(description) => {
- assert_eq!(description, expected);
- }
- _ => {
- panic!("expected");
- }
- }
- }
-}
diff --git a/sdk/fidl/fuchsia.settings/BUILD.gn b/sdk/fidl/fuchsia.settings/BUILD.gn
index afa9421..36ed79b 100644
--- a/sdk/fidl/fuchsia.settings/BUILD.gn
+++ b/sdk/fidl/fuchsia.settings/BUILD.gn
@@ -20,7 +20,6 @@
"privacy.fidl",
"settings.fidl",
"setup.fidl",
- "system.fidl",
]
public_deps = [
diff --git a/sdk/fidl/fuchsia.settings/fuchsia.settings.api b/sdk/fidl/fuchsia.settings/fuchsia.settings.api
index a6c48c8..9e4c34f 100644
--- a/sdk/fidl/fuchsia.settings/fuchsia.settings.api
+++ b/sdk/fidl/fuchsia.settings/fuchsia.settings.api
@@ -1,3 +1,3 @@
{
- "fidl/fuchsia.settings": "010de17e71883c442dc608779c347695"
+ "fidl/fuchsia.settings": "8a89509635191ed23dca2c04090b3815"
}
\ No newline at end of file
diff --git a/sdk/fidl/fuchsia.settings/system.fidl b/sdk/fidl/fuchsia.settings/system.fidl
deleted file mode 100644
index 0aaed6b..0000000
--- a/sdk/fidl/fuchsia.settings/system.fidl
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2019 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.
-
-library fuchsia.settings;
-
-/// Settings related to the general system.
-///
-/// Supported SettingsEpitaph enums:
-/// REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR
-[Discoverable]
-protocol System {
- /// TO BE DEPRECATED: new watches will use Watch2 in the future.
- [Transitional = "To be deprecated in favor of Watch2"]
- Watch() -> (SystemSettings settings) error Error;
-
- /// Gets the current [SystemSettings]. Returns immediately on first call;
- /// subsequent calls return when the value changes.
- ///
- /// If this call fails, it is considered a fatal error and the channel
- /// will be closed.
- [Transitional = "Future Replacement for Watch"]
- Watch2() -> (SystemSettings settings);
-
- /// Changes the settings specified in [SystemSettings]. Any field not set in the table will
- /// not perform any system operation.
- Set(SystemSettings settings) -> () error Error;
-};
-
-/// Settings related to the general system.
-table SystemSettings {
- /// If set, indicates a login behavior specified at runtime.
- 1: LoginOverride mode;
-};
-
-/// What preferred login behavior has been set.
-enum LoginOverride {
- /// No override has been set.
- NONE = 1;
- /// Do not require an account and login always as guest.
- AUTOLOGIN_GUEST = 2;
- /// Requires a provisioned account through auth provider.
- AUTH_PROVIDER = 3;
-};