| // 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. |
| |
| library fuchsia.sys2; |
| |
| using zx; |
| |
| /// An interface for resolving a URL to a component. |
| /// |
| /// This interface is implemented by components that provide support |
| /// for loading components with a particular URL scheme. For example, |
| /// the Fuchsia package component resolver exposes a service with this |
| /// interface to resolve component URLs using the "fuchsia-pkg://" scheme. |
| /// |
| /// To use a resolver to resolve URLs within your realm, register it |
| /// in your realm's manifest. (TODO: explain in more detail) |
| /// |
| /// Note: The component manager is the only intended direct client of this |
| /// interface. |
| [Discoverable] |
| protocol ComponentResolver { |
| /// Resolves a component with the given URL. |
| /// |
| /// `component_url` is the unescaped URL of the component to resolve. |
| /// |
| /// If successful, returns `ZX_OK` and information about the component |
| /// that was resolved. |
| /// |
| /// On failure, returns null `info` and... |
| /// - `ZX_ERR_INVALID_ARGS`: The component's URL was malformed. |
| /// - `ZX_ERR_NOT_FOUND`: The component does not exist. |
| /// - `ZX_ERR_UNAVAILABLE`: The resolver was unable to retrieve or parse |
| /// the component's resources. |
| Resolve(string component_url) |
| -> (zx.status status, Component component); |
| }; |