[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;
-};