device_local_account.h revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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                     const std::string& kiosk_app_update_url);
33  ~DeviceLocalAccount();
34
35  Type type;
36  std::string account_id;
37  std::string user_id;
38  std::string kiosk_app_id;
39  std::string kiosk_app_update_url;
40};
41
42std::string GenerateDeviceLocalAccountUserId(const std::string& account_id,
43                                             DeviceLocalAccount::Type type);
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