| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_ |
| #define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_ |
| |
| #include <string> |
| |
| #include "base/memory/ref_counted.h" |
| |
| class CommandLine; |
| class GURL; |
| class Profile; |
| class PrefRegistrySimple; |
| class PrefService; |
| |
| namespace chromeos { |
| |
| class Authenticator; |
| class LoginDisplayHost; |
| class LoginStatusConsumer; |
| struct UserContext; |
| |
| class LoginUtils { |
| public: |
| class Delegate { |
| public: |
| // Called after profile is loaded and prepared for the session. |
| virtual void OnProfilePrepared(Profile* profile) = 0; |
| |
| #if defined(ENABLE_RLZ) |
| // Called after post-profile RLZ initialization. |
| virtual void OnRlzInitialized(Profile* profile) {} |
| #endif |
| protected: |
| virtual ~Delegate() {} |
| }; |
| |
| // Registers log-in related preferences. |
| static void RegisterPrefs(PrefRegistrySimple* registry); |
| |
| // Get LoginUtils singleton object. If it was not set before, new default |
| // instance will be created. |
| static LoginUtils* Get(); |
| |
| // Set LoginUtils singleton object for test purpose only! |
| static void Set(LoginUtils* ptr); |
| |
| // Checks if the given username is whitelisted and allowed to sign-in to |
| // this device. |
| static bool IsWhitelisted(const std::string& username); |
| |
| virtual ~LoginUtils() {} |
| |
| // Thin wrapper around StartupBrowserCreator::LaunchBrowser(). Meant to be |
| // used in a Task posted to the UI thread. Once the browser is launched the |
| // login host is deleted. |
| virtual void DoBrowserLaunch(Profile* profile, |
| LoginDisplayHost* login_host) = 0; |
| |
| // Loads and prepares profile for the session. Fires |delegate| in the end. |
| // If |pending_requests| is true, there's a pending online auth request. |
| // If |display_email| is not empty, user's displayed email will be set to |
| // this value, shown in UI. |
| // |user_context.username_hash| defines when user homedir is mounted. |
| // Also see DelegateDeleted method. |
| // If |has_active_session| is true than this is a case of restoring user |
| // session after browser crash so no need to start new session. |
| virtual void PrepareProfile( |
| const UserContext& user_context, |
| const std::string& display_email, |
| bool using_oauth, |
| bool has_cookies, |
| bool has_active_session, |
| Delegate* delegate) = 0; |
| |
| // Invalidates |delegate|, which was passed to PrepareProfile method call. |
| virtual void DelegateDeleted(Delegate* delegate) = 0; |
| |
| // Invoked after the tmpfs is successfully mounted. |
| // Asks session manager to restart Chrome in Browse Without Sign In mode. |
| // |start_url| is url for launched browser to open. |
| virtual void CompleteOffTheRecordLogin(const GURL& start_url) = 0; |
| |
| // Invoked when the user is logging in for the first time, or is logging in as |
| // a guest user. |
| virtual void SetFirstLoginPrefs(PrefService* prefs) = 0; |
| |
| // Creates and returns the authenticator to use. |
| // Before WebUI login (Up to R14) the caller owned the returned |
| // Authenticator instance and had to delete it when done. |
| // New instance was created on each new login attempt. |
| // Starting with WebUI login (R15) single Authenticator instance is used for |
| // entire login process, even for multiple retries. Authenticator instance |
| // holds reference to login profile and is later used during fetching of |
| // OAuth tokens. |
| // TODO(nkostylev): Cleanup after WebUI login migration is complete. |
| virtual scoped_refptr<Authenticator> CreateAuthenticator( |
| LoginStatusConsumer* consumer) = 0; |
| |
| // Restores authentication session after crash. |
| virtual void RestoreAuthenticationSession(Profile* profile) = 0; |
| |
| // Initialize RLZ. |
| virtual void InitRlzDelayed(Profile* user_profile) = 0; |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_ |