kiosk_profile_loader.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 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_APP_MODE_KIOSK_PROFILE_LOADER_H_ 6#define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_PROFILE_LOADER_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/callback.h" 12#include "base/memory/scoped_ptr.h" 13#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" 14#include "chrome/browser/chromeos/login/login_performer.h" 15#include "chrome/browser/chromeos/login/login_utils.h" 16 17class Profile; 18 19namespace chromeos { 20 21class KioskAppManager; 22 23// KioskProfileLoader loads a special profile for a given app. It first 24// attempts to login for the app's generated user id. If the login is 25// successful, it prepares app profile then calls the delegate. 26class KioskProfileLoader : public LoginPerformer::Delegate, 27 public LoginUtils::Delegate { 28 public: 29 class Delegate { 30 public: 31 virtual void OnProfileLoaded(Profile* profile) = 0; 32 virtual void OnProfileLoadFailed(KioskAppLaunchError::Error error) = 0; 33 34 protected: 35 virtual ~Delegate() {} 36 }; 37 38 KioskProfileLoader(const std::string& app_user_id, 39 bool force_ephemeral, 40 Delegate* delegate); 41 42 virtual ~KioskProfileLoader(); 43 44 // Starts profile load. Calls delegate on success or failure. 45 void Start(); 46 47 private: 48 class CryptohomedChecker; 49 50 void LoginAsKioskAccount(); 51 void ReportLaunchResult(KioskAppLaunchError::Error error); 52 53 // LoginPerformer::Delegate overrides 54 virtual void OnLoginSuccess(const UserContext& user_context) OVERRIDE; 55 virtual void OnLoginFailure(const LoginFailure& error) OVERRIDE; 56 virtual void WhiteListCheckFailed(const std::string& email) OVERRIDE; 57 virtual void PolicyLoadFailed() OVERRIDE; 58 virtual void OnOnlineChecked( 59 const std::string& email, bool success) OVERRIDE; 60 61 // LoginUtils::Delegate implementation: 62 virtual void OnProfilePrepared(Profile* profile) OVERRIDE; 63 64 std::string user_id_; 65 bool force_ephemeral_; 66 Delegate* delegate_; 67 scoped_ptr<CryptohomedChecker> cryptohomed_checker_; 68 scoped_ptr<LoginPerformer> login_performer_; 69 70 DISALLOW_COPY_AND_ASSIGN(KioskProfileLoader); 71}; 72 73} // namespace chromeos 74 75#endif // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_PROFILE_LOADER_H_ 76