login_utils.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
1// Copyright (c) 2011 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_LOGIN_UTILS_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_
7#pragma once
8
9#include <string>
10
11#include "chrome/common/net/gaia/gaia_auth_consumer.h"
12
13class CommandLine;
14class GURL;
15class Profile;
16class PrefService;
17
18namespace {
19class BrowserGuestSessionNavigatorTest;
20}  // namespace
21
22namespace chromeos {
23
24class Authenticator;
25class BackgroundView;
26class LoginStatusConsumer;
27
28class LoginUtils {
29 public:
30  class Delegate {
31   public:
32    // Called after profile is loaded and prepared for the session.
33    virtual void OnProfilePrepared(Profile* profile) = 0;
34  };
35
36  // Get LoginUtils singleton object. If it was not set before, new default
37  // instance will be created.
38  static LoginUtils* Get();
39
40  // Set LoginUtils singleton object for test purpose only!
41  static void Set(LoginUtils* ptr);
42
43  // Thin wrapper around BrowserInit::LaunchBrowser().  Meant to be used in a
44  // Task posted to the UI thread.
45  static void DoBrowserLaunch(Profile* profile);
46
47  virtual ~LoginUtils() {}
48
49  // Loads and prepares profile for the session. Fires |delegate| in the end.
50  // If |pending_requests| is true, there's a pending online auth request.
51  virtual void PrepareProfile(
52      const std::string& username,
53      const std::string& password,
54      const GaiaAuthConsumer::ClientLoginResult& credentials,
55      bool pending_requests,
56      Delegate* delegate) = 0;
57
58  // Invoked after the tmpfs is successfully mounted.
59  // Asks session manager to restart Chrome in Browse Without Sign In mode.
60  // |start_url| is url for launched browser to open.
61  virtual void CompleteOffTheRecordLogin(const GURL& start_url) = 0;
62
63  // Invoked when the user is logging in for the first time, or is logging in as
64  // a guest user.
65  virtual void SetFirstLoginPrefs(PrefService* prefs) = 0;
66
67  // Creates and returns the authenticator to use. The caller owns the returned
68  // Authenticator and must delete it when done.
69  virtual Authenticator* CreateAuthenticator(LoginStatusConsumer* consumer) = 0;
70
71  // Prewarms the authentication network connection.
72  virtual void PrewarmAuthentication() = 0;
73
74  // Given the credentials try to exchange them for
75  // full-fledged Google authentication cookies.
76  virtual void FetchCookies(
77      Profile* profile,
78      const GaiaAuthConsumer::ClientLoginResult& credentials) = 0;
79
80  // Supply credentials for sync and others to use.
81  virtual void FetchTokens(
82      Profile* profile,
83      const GaiaAuthConsumer::ClientLoginResult& credentials) = 0;
84
85  // Sets the current background view.
86  virtual void SetBackgroundView(BackgroundView* background_view) = 0;
87
88  // Gets the current background view.
89  virtual BackgroundView* GetBackgroundView() = 0;
90
91 protected:
92  friend class ::BrowserGuestSessionNavigatorTest;
93
94  // Returns command line string to be used for the OTR process. Also modifies
95  // given command line.
96  virtual std::string GetOffTheRecordCommandLine(
97      const GURL& start_url,
98      const CommandLine& base_command_line,
99      CommandLine* command_line) = 0;
100};
101
102}  // namespace chromeos
103
104#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_
105