15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/basictypes.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager_base.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace base { 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class TaskRunner; 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace chromeos { 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MultiProfileUserController; 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class SupervisedUserManager; 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class UserFlow; 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class UserImageManager; 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Chrome specific interface of the UserManager. 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ChromeUserManager : public user_manager::UserManagerBase { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ChromeUserManager(scoped_refptr<base::TaskRunner> task_runner, 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<base::TaskRunner> blocking_task_runner); 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~ChromeUserManager(); 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Returns current ChromeUserManager or NULL if instance hasn't been 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // yet initialized. 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static ChromeUserManager* Get(); 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual MultiProfileUserController* GetMultiProfileUserController() = 0; 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual UserImageManager* GetUserImageManager(const std::string& user_id) = 0; 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual SupervisedUserManager* GetSupervisedUserManager() = 0; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Method that allows to set |flow| for user identified by |user_id|. 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Flow should be set before login attempt. 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Takes ownership of the |flow|, |flow| will be deleted in case of login 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // failure. 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void SetUserFlow(const std::string& user_id, UserFlow* flow) = 0; 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Return user flow for current user. Returns instance of DefaultUserFlow if 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // no flow was defined for current user, or user is not logged in. 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Returned value should not be cached. 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual UserFlow* GetCurrentUserFlow() const = 0; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Return user flow for user identified by |user_id|. Returns instance of 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // DefaultUserFlow if no flow was defined for user. 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Returned value should not be cached. 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual UserFlow* GetUserFlow(const std::string& user_id) const = 0; 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Resets user flow for user identified by |user_id|. 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void ResetUserFlow(const std::string& user_id) = 0; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromeUserManager); 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace chromeos 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_CHROME_USER_MANAGER_H_ 62