| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | module reaper; | 
 |  | 
 | import "services/reaper/transfer.mojom"; | 
 |  | 
 | // Reaper maintains a graph of references between applications and based on that | 
 | // decides when to shut down applications. | 
 | interface Reaper { | 
 |   // Generates a secret that identifies the calling application for use with | 
 |   // reaper::Transfer::Complete(). | 
 |   GetApplicationSecret() => (uint64 secret); | 
 |  | 
 |   // Create a new reference. A reference is composed of two nodes.Initially, | 
 |   // both nodes are owned by the calling application. Node ids must be unique | 
 |   // within a given application. | 
 |   CreateReference(uint32 source_node, uint32 target_node); | 
 |  | 
 |   // Drop a node. The node and containing reference both becomes invalid. | 
 |   DropNode(uint32 node); | 
 |  | 
 |   // Initiates a transfer of |node| to another application. Pass the other end | 
 |   // of |transfer| to the destination application. The destination application | 
 |   // should then call Complete() on |transfer| to finalize the transfer. | 
 |   StartTransfer(uint32 node, Transfer& transfer); | 
 |  | 
 |   // No-op used for creating ordering between interfaces. | 
 |   Ping() => (); | 
 | }; |