device_local_account.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_ 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string> 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <vector> 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace chromeos { 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class CrosSettings; 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace policy { 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// This must match DeviceLocalAccountInfoProto.AccountType in 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// chrome_device_policy.proto. 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct DeviceLocalAccount { 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) enum Type { 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // A login-less, policy-configured browsing session. 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TYPE_PUBLIC_SESSION, 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // An account that serves as a container for a single full-screen app. 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TYPE_KIOSK_APP, 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Sentinel, must be last. 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TYPE_COUNT 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DeviceLocalAccount(Type type, 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& account_id, 31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::string& kiosk_app_id); 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ~DeviceLocalAccount(); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Type type; 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string account_id; 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string user_id; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string kiosk_app_id; 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)std::string GenerateDeviceLocalAccountUserId(const std::string& account_id, 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DeviceLocalAccount::Type type); 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Determines whether |user_id| belongs to a device-local account and if so, 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// returns the type of device-local account in |type| unless |type| is NULL. 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)bool IsDeviceLocalAccountUser(const std::string& user_id, 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DeviceLocalAccount::Type* type); 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Stores a list of device-local accounts in |cros_settings|. The accounts are 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// stored as a list of dictionaries with each dictionary containing the 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// information about one |DeviceLocalAccount|. 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void SetDeviceLocalAccounts( 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) chromeos::CrosSettings* cros_settings, 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::vector<DeviceLocalAccount>& accounts); 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Retrieves a list of device-local accounts from |cros_settings|. 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)std::vector<DeviceLocalAccount> GetDeviceLocalAccounts( 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) chromeos::CrosSettings* cros_settings); 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace policy 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_ 62