| // 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 privacy. |
| /// |
| /// Supported SettingsEpitaph enums: |
| /// REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR |
| [Discoverable] |
| protocol Privacy { |
| /// DEPRECATED: new watches should use Watch2. |
| [Transitional = "Deprecated in favor of Watch2"] |
| Watch() -> (PrivacySettings settings) error Error; |
| |
| /// Notifies of a change in privacy settings. |
| /// |
| /// On a given connection, the server will return immediately if this is the first call made, |
| /// or if the `settings` value has changed since a previous call. Otherwise, the server will |
| /// wait on a value change before returning the new value. This follows the hanging get pattern. |
| /// |
| /// If this call fails, it is considered a fatal error and the channel will be closed. |
| [Transitional = "Replacement for Watch"] |
| Watch2() -> (PrivacySettings settings); |
| |
| /// Sets the privacy settings. |
| /// |
| /// Any field not explicitly set in `settings` performs a no-op, and will not make any changes. |
| Set(PrivacySettings settings) -> () error Error; |
| }; |
| |
| table PrivacySettings { |
| /// Reflects the user consent to have their user data shared with the product owner, e.g., for |
| /// metrics collection and crash reporting. |
| 1: bool user_data_sharing_consent; |
| }; |