| // 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.identity.tokens; |
| |
| using fuchsia.auth; |
| |
| /// `TokenManagerFactory` provides access to a global `TokenManager` on systems |
| /// that do not include an `AccountManager`. |
| /// |
| /// On systems that do include `AccountManager`, that API should be used to |
| /// acquire a separate `TokenManager` instance for each system account. |
| [Discoverable] |
| protocol TokenManagerFactory { |
| /// Connects a new `TokenManager` channel. |
| /// |
| /// + `ui_context_provider` An `AuthenticationContextProvider` capable of |
| /// generating the `AuthenticationUiContext` |
| /// channels used to display interactive |
| /// authentication and authorization flows. |
| /// + `token_manager` The server end of a `TokenManager` channel. |
| // TODO(fxbug.dev/43298): Remove the dependency on AuthenticationContextProvider |
| // once auth providers can acquire their UI resources through the session |
| // framework. At this point we may be able to remove the TokenManagerFactory |
| // protocol entirely and make the TokenManager protocol discoverable. |
| GetTokenManager(fuchsia.auth.AuthenticationContextProvider |
| ui_context_provider, request<TokenManager> token_manager); |
| }; |