Home | History | Annotate | Download | only in policy
      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 
     11 namespace chromeos {
     12 class CrosSettings;
     13 }
     14 
     15 namespace policy {
     16 
     17 // This must match DeviceLocalAccountInfoProto.AccountType in
     18 // chrome_device_policy.proto.
     19 struct 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 
     42 std::string GenerateDeviceLocalAccountUserId(const std::string& account_id,
     43                                              DeviceLocalAccount::Type type);
     44 
     45 bool IsDeviceLocalAccountUser(const std::string& user_id);
     46 
     47 bool 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|.
     52 void SetDeviceLocalAccounts(
     53     chromeos::CrosSettings* cros_settings,
     54     const std::vector<DeviceLocalAccount>& accounts);
     55 
     56 // Retrieves a list of device-local accounts from |cros_settings|.
     57 std::vector<DeviceLocalAccount> GetDeviceLocalAccounts(
     58     chromeos::CrosSettings* cros_settings);
     59 
     60 }  // namespace policy
     61 
     62 #endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
     63