|  | // Copyright 2020 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 factory reset. | 
|  | @discoverable | 
|  | protocol FactoryReset { | 
|  | /// Notifies of a change in information about the factory reset settings. | 
|  | /// | 
|  | /// On a given connection, the first call will return the current `settings` | 
|  | /// value while subsequent calls will only return the new `settings` value | 
|  | /// upon a value change. This follows the hanging get pattern. | 
|  | /// | 
|  | /// If this call fails, it is considered a fatal error and the channel will | 
|  | /// be closed. | 
|  | Watch() -> (struct { | 
|  | settings FactoryResetSettings; | 
|  | }); | 
|  |  | 
|  | /// Sets factory reset settings. Any field not explicitly set in the table | 
|  | /// performs a no-op, and will not make any changes. | 
|  | Set(struct { | 
|  | settings FactoryResetSettings; | 
|  | }) -> () error Error; | 
|  | }; | 
|  |  | 
|  | /// Information about the factory reset settings. | 
|  | type FactoryResetSettings = table { | 
|  | /// When set to true, a user is able to physically perform a factory reset. | 
|  | /// When false, that functionality is disabled. | 
|  | 1: is_local_reset_allowed bool; | 
|  | }; |