| // Copyright 2016 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.modular; | 
 |  | 
 | /// This interface is used by the caller of ModuleContext.StartModule() to | 
 | /// control the started Module instance. | 
 | /// | 
 | /// Closing this connection doesn't affect its Module instance; it just | 
 | /// relinquishes the ability of the caller to control the Module instance. | 
 | protocol ModuleController { | 
 |     /// Requests that this module become the focused module in the story. | 
 |     Focus(); | 
 |  | 
 |     /// Requests that this module be hidden in the story. | 
 |     Defocus(); | 
 |  | 
 |     /// Requests the Module instance to stop. The running Module component's | 
 |     /// Lifecycle::Terminate() method is called, the instance is shut down and | 
 |     /// state within the framework is cleaned up. | 
 |  | 
 |     /// The result callback is called once the Module's runtime has been torn down. | 
 |     Stop() -> (); | 
 |  | 
 |     /// Called with the current state when it changes. | 
 |     /// DEPRECATED: Do not use this. ModuleState is a framework-internal concept | 
 |     /// and should not be exposed outside. | 
 |     -> OnStateChange(ModuleState new_state); | 
 | }; |