// Copyright (c) 2011 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_
#pragma once
#include <string>
#include "chrome/common/net/gaia/gaia_auth_consumer.h"
class CommandLine;
class GURL;
class Profile;
class PrefService;
namespace {
class BrowserGuestSessionNavigatorTest;
} // namespace
namespace chromeos {
class Authenticator;
class BackgroundView;
class LoginStatusConsumer;
class LoginUtils {
public:
class Delegate {
public:
// Called after profile is loaded and prepared for the session.
virtual void OnProfilePrepared(Profile* profile) = 0;
};
// 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);
// Thin wrapper around BrowserInit::LaunchBrowser(). Meant to be used in a
// Task posted to the UI thread.
static void DoBrowserLaunch(Profile* profile);
virtual ~LoginUtils() {}
// Loads and prepares profile for the session. Fires |delegate| in the end.
// If |pending_requests| is true, there's a pending online auth request.
virtual void PrepareProfile(
const std::string& username,
const std::string& password,
const GaiaAuthConsumer::ClientLoginResult& credentials,
bool pending_requests,
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. The caller owns the returned
// Authenticator and must delete it when done.
virtual Authenticator* CreateAuthenticator(LoginStatusConsumer* consumer) = 0;
// Prewarms the authentication network connection.
virtual void PrewarmAuthentication() = 0;
// Given the credentials try to exchange them for
// full-fledged Google authentication cookies.
virtual void FetchCookies(
Profile* profile,
const GaiaAuthConsumer::ClientLoginResult& credentials) = 0;
// Supply credentials for sync and others to use.
virtual void FetchTokens(
Profile* profile,
const GaiaAuthConsumer::ClientLoginResult& credentials) = 0;
// Sets the current background view.
virtual void SetBackgroundView(BackgroundView* background_view) = 0;
// Gets the current background view.
virtual BackgroundView* GetBackgroundView() = 0;
protected:
friend class ::BrowserGuestSessionNavigatorTest;
// Returns command line string to be used for the OTR process. Also modifies
// given command line.
virtual std::string GetOffTheRecordCommandLine(
const GURL& start_url,
const CommandLine& base_command_line,
CommandLine* command_line) = 0;
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_UTILS_H_