blob: 75129ff1149dc43dac5e80e21901ff17a655d416 [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;
FAILED = 1;
UNSUPPORTED = 2;
};
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.
[Discoverable]
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.
[Transitional]
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);
};