blob: ca0fb34f9952bc6a9e3ba41507f0cc3a3333d998 [file] [log] [blame]
// Copyright 2018 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.setui;
enum ReturnCode {
OK = 0;
struct SettingsObject {
SettingType setting_type;
SettingData data;
struct UpdateResponse {
ReturnCode return_code;
struct MutationResponse {
ReturnCode return_code;
/// The main interface for UIs to change system settings. Currently, the
/// settings are scoped to the device, but will eventually be scoped to the user
/// as is applicable.
protocol SetUiService {
/// Begins listening to changes to a given settings object. This may cause the
/// SetUiService to connect to any applicable device services until all listeners
/// for a given type are closed.
/// The service will call the listener with the current state immediately on
/// initialization.
/// DEPRECATED: To be removed in favor of Watch
Listen(SettingType settingType, SettingListener listener);
/// Returns immediately on first call. Subsequent calls will be delayed until
/// there is an updated value available.
Watch(SettingType settingType) -> (SettingsObject setting);
/// Sets the value of a given settings object. Returns once operation
/// has completed.
Update(SettingsObject value) -> (UpdateResponse response);
Mutate(SettingType settingType, Mutation mutation) -> (MutationResponse response);
InteractiveMutate(SettingType settingType, Mutation mutation, MutationHandles mutation_handles) -> (MutationResponse response);
/// DEPRECATED: To be removed in favor of Watch
protocol SettingListener {
Notify(SettingsObject object);