blob: 309b939d066e09ea059950a0478e2cfc61bf6046 [file] [log] [blame] [view] [edit]
Project: /youtube/cobalt/_project.yaml
Book: /youtube/cobalt/_book.yaml
# Starboard Module Reference: `user.h`
Defines a user management API. This module defines functions only for managing
signed-in users. Platforms that do not have users must still implement this API,
always reporting a single user that is current and signed in.
These APIs are NOT expected to be thread-safe, so either call them from a single
thread, or perform proper synchronization around all calls.
## Macros
### kSbUserInvalid
Well-defined value for an invalid user.
## Enums
### SbUserPropertyId
A set of string properties that can be queried on a user.
#### Values
* `kSbUserPropertyAvatarUrl`
The URL to the avatar for a user. Avatars are not provided on all platforms.
* `kSbUserPropertyHomeDirectory`
The path to a user's home directory, if supported on this platform.
* `kSbUserPropertyUserName`
The username of a user, which may be the same as the User ID, or it may be
friendlier.
* `kSbUserPropertyUserId`
A unique user ID of a user.
## Typedefs
### SbUser
A handle to a user.
#### Definition
```
typedef SbUserPrivate* SbUser
```
## Functions
### SbUserGetCurrent
Gets the current primary user, if one exists. This is the user that is
determined, in a platform-specific way, to be the primary user controlling the
application. For example, the determination might be made because that user
launched the app, though it should be made using whatever criteria are
appropriate for the platform.
It is expected that there will be a unique SbUser per signed-in user, and that
the referenced objects will persist for the lifetime of the app.
#### Declaration
```
SbUser SbUserGetCurrent()
```
### SbUserGetProperty
Retrieves the value of `property_id` for `user` and places it in `out_value`.
The function returns:
* `true` if the property value is retrieved successfully
* `false` if `user` is invalid; if `property_id` isn't recognized, supported,
or set for `user`; or if `value_size` is too small.
`user`: The user for which property size data is being retrieved. `property_id`:
The property for which the data is requested. `out_value`: The retrieved
property value. `value_size`: The size of the retrieved property value.
#### Declaration
```
bool SbUserGetProperty(SbUser user, SbUserPropertyId property_id, char *out_value, int value_size)
```
### SbUserGetPropertySize
Returns the size of the value of `property_id` for `user`, INCLUDING the
terminating null character. The function returns `0` if `user` is invalid or if
`property_id` is not recognized, supported, or set for the user.
`user`: The user for which property size data is being retrieved. `property_id`:
The property for which the data is requested.
#### Declaration
```
int SbUserGetPropertySize(SbUser user, SbUserPropertyId property_id)
```
### SbUserGetSignedIn
Gets a list of up to `users_size` signed-in users and places the results in
`out_users`. The return value identifies the actual number of signed-in users,
which may be greater or less than `users_size`.
It is expected that there will be a unique `SbUser` per signed-in user and that
the referenced objects will persist for the lifetime of the app.
`out_users`: Handles for the retrieved users. `users_size`: The maximum number
of signed-in users to retrieve.
#### Declaration
```
int SbUserGetSignedIn(SbUser *out_users, int users_size)
```
### SbUserIsValid
Returns whether the given user handle is valid.
#### Declaration
```
static bool SbUserIsValid(SbUser user)
```