| // 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.update.channelcontrol; | 
 |  | 
 | using fuchsia.update.channel; | 
 |  | 
 | /// Control the target update channel, this is the channel we will use on the next update check. | 
 | [Discoverable] | 
 | protocol ChannelControl { | 
 |     compose fuchsia.update.channel.Provider; | 
 |  | 
 |     /// Set a new desired target channel.  This tells the updater to attempt to | 
 |     /// check for updates using a new channel.  This is tentative, and won't be | 
 |     /// persisted unless an update check on that channel is successful. | 
 |     /// | 
 |     /// A response is generated when the new target channel has been verified as | 
 |     /// valid. | 
 |     /// | 
 |     /// + request `channel` the new target channel name (name used by the updater) | 
 |     SetTarget(string:128 channel) -> (); | 
 |  | 
 |     /// Get the current tentative target channel for updates. | 
 |     /// This returns the channel that the update client is using to perform update | 
 |     /// checks.  It's always one of: | 
 |     ///    - the current channel | 
 |     ///    - the default channel | 
 |     ///    - a new target that's different, but hasn't been OTA'd from yet. | 
 |     /// | 
 |     /// - response `channel` the current target channel. | 
 |     GetTarget() -> (string:128 channel); | 
 |  | 
 |     /// Get the list of well-known target channels that can be passed to SetTarget(). | 
 |     /// There may be other, unlisted channels. | 
 |     GetTargetList() -> (vector<string:128>:100 channels); | 
 | }; |