device_local_account.h revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
6#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
7
8#include <string>
9#include <vector>
10
11namespace chromeos {
12class CrosSettings;
13}
14
15namespace policy {
16
17// This must match DeviceLocalAccountInfoProto.AccountType in
18// chrome_device_policy.proto.
19struct DeviceLocalAccount {
20  enum Type {
21    // A login-less, policy-configured browsing session.
22    TYPE_PUBLIC_SESSION,
23    // An account that serves as a container for a single full-screen app.
24    TYPE_KIOSK_APP,
25    // Sentinel, must be last.
26    TYPE_COUNT
27  };
28
29  DeviceLocalAccount(Type type,
30                     const std::string& account_id,
31                     const std::string& kiosk_app_id);
32  ~DeviceLocalAccount();
33
34  Type type;
35  std::string account_id;
36  std::string user_id;
37  std::string kiosk_app_id;
38};
39
40std::string GenerateDeviceLocalAccountUserId(const std::string& account_id,
41                                             DeviceLocalAccount::Type type);
42
43bool IsDeviceLocalAccountUser(const std::string& user_id);
44
45bool IsKioskAppUser(const std::string& user_id);
46
47// Stores a list of device-local accounts in |cros_settings|. The accounts are
48// stored as a list of dictionaries with each dictionary containing the
49// information about one |DeviceLocalAccount|.
50void SetDeviceLocalAccounts(
51    chromeos::CrosSettings* cros_settings,
52    const std::vector<DeviceLocalAccount>& accounts);
53
54// Retrieves a list of device-local accounts from |cros_settings|.
55std::vector<DeviceLocalAccount> GetDeviceLocalAccounts(
56    chromeos::CrosSettings* cros_settings);
57
58}  // namespace policy
59
60#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
61