device_local_account.h revision 868fa2fe829687343ffae624259930155e16dbd8
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 IsDeviceLocalAccountUser(const std::string& user_id);
46
47bool IsKioskAppUser(const std::string& user_id);
48
49// Stores a list of device-local accounts in |cros_settings|. The accounts are
50// stored as a list of dictionaries with each dictionary containing the
51// information about one |DeviceLocalAccount|.
52void SetDeviceLocalAccounts(
53    chromeos::CrosSettings* cros_settings,
54    const std::vector<DeviceLocalAccount>& accounts);
55
56// Retrieves a list of device-local accounts from |cros_settings|.
57std::vector<DeviceLocalAccount> GetDeviceLocalAccounts(
58    chromeos::CrosSettings* cros_settings);
59
60}  // namespace policy
61
62#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
63