| // Copyright 2018 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. | 
 | @available(added=7, deprecated=13, note="Use fuchsia.element.Manager instead.") | 
 | library fuchsia.developer.tiles; | 
 |  | 
 | using fuchsia.ui.app; | 
 | using fuchsia.ui.gfx; | 
 |  | 
 | @discoverable | 
 | closed protocol Controller { | 
 |     /// Instantiates a component by its URL and adds a tile backed by that component's ViewProvider. | 
 |     /// Returns a key for the tile that can be used for resizing or removing the tile, or 0 on failure. | 
 |     strict AddTileFromURL(struct { | 
 |         url string; | 
 |         allow_focus bool; | 
 |         args vector<string>:optional; | 
 |     }) -> (struct { | 
 |         key uint32; | 
 |     }); | 
 |  | 
 |     /// Adds a tile backed by a view from the view provider. | 
 |     /// Returns a key for the tile that can be used for resizing or removing the tile, or 0 on failure. | 
 |     strict AddTileFromViewProvider(resource struct { | 
 |         url string; | 
 |         provider client_end:fuchsia.ui.app.ViewProvider; | 
 |     }) -> (struct { | 
 |         key uint32; | 
 |     }); | 
 |  | 
 |     /// Removes the tile with the given key. | 
 |     strict RemoveTile(struct { | 
 |         key uint32; | 
 |     }); | 
 |  | 
 |     /// Returns a list of tiles. | 
 |     strict ListTiles() -> (struct { | 
 |         keys vector<uint32>; | 
 |         urls vector<string>; | 
 |         sizes vector<fuchsia.ui.gfx.vec3>; | 
 |         focusabilities vector<bool>; | 
 |     }); | 
 |  | 
 |     /// Asks the tiles component to quit. | 
 |     strict Quit(); | 
 | }; |