user_flow.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 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_LOGIN_USER_FLOW_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_USER_FLOW_H_ 7 8#include "base/compiler_specific.h" 9#include "chrome/browser/chromeos/login/login_status_consumer.h" 10#include "chrome/browser/profiles/profile.h" 11 12namespace chromeos { 13 14class LoginDisplayHost; 15// Defines possible variants of user flow upon logging in. 16// See UserManager::SetUserFlow for usage contract. 17class UserFlow { 18 public: 19 virtual ~UserFlow() = 0; 20 virtual bool ShouldLaunchBrowser() = 0; 21 virtual bool ShouldSkipPostLoginScreens() = 0; 22 virtual bool HandleLoginFailure(const LoginFailure& failure, 23 LoginDisplayHost* host) = 0; 24 virtual bool HandlePasswordChangeDetected(LoginDisplayHost* host) = 0; 25 virtual void LaunchExtraSteps(Profile* profile, LoginDisplayHost* host) = 0; 26}; 27 28// UserFlow implementation for regular login flow. 29class DefaultUserFlow : public UserFlow { 30 public: 31 virtual ~DefaultUserFlow(); 32 33 virtual bool ShouldLaunchBrowser() OVERRIDE; 34 virtual bool ShouldSkipPostLoginScreens() OVERRIDE; 35 virtual bool HandleLoginFailure(const LoginFailure& failure, 36 LoginDisplayHost* host) OVERRIDE; 37 virtual bool HandlePasswordChangeDetected(LoginDisplayHost* host) OVERRIDE; 38 virtual void LaunchExtraSteps(Profile* profile, 39 LoginDisplayHost* host) OVERRIDE; 40}; 41 42// UserFlow stub for non-regular flows. 43class ExtendedUserFlow : public UserFlow { 44 public: 45 explicit ExtendedUserFlow(const std::string& user_id); 46 virtual ~ExtendedUserFlow(); 47 48 protected: 49 // Subclasses can call this method to unregister flow in the next event. 50 virtual void UnregisterFlowSoon(); 51 std::string user_id() { 52 return user_id_; 53 }; 54 55 private: 56 std::string user_id_; 57}; 58 59} // namespace chromeos 60 61#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USER_FLOW_H_ 62