blob: f4d0f8b072916217e089901a3dc78b4d4f649d8f [file] [log] [blame]
// Copyright 2014 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 CHROMEOS_LOGIN_EVENT_RECORDER_H_
#define CHROMEOS_LOGIN_EVENT_RECORDER_H_
#include <string>
#include "base/macros.h"
#include "chromeos/chromeos_export.h"
namespace chromeos {
// LoginEventRecorder records the bootimes of Chrome OS.
// Actual implementation is handled by delegate.
class CHROMEOS_EXPORT LoginEventRecorder {
public:
class Delegate {
public:
// Add a time marker for login. A timeline will be dumped to
// /tmp/login-times-sent after login is done. If |send_to_uma| is true
// the time between this marker and the last will be sent to UMA with
// the identifier BootTime.|marker_name|.
virtual void AddLoginTimeMarker(const std::string& marker_name,
bool send_to_uma) = 0;
// Record events for successful authentication.
virtual void RecordAuthenticationSuccess() = 0;
// Record events for authentication failure.
virtual void RecordAuthenticationFailure() = 0;
};
LoginEventRecorder();
virtual ~LoginEventRecorder();
static LoginEventRecorder* Get();
void SetDelegate(Delegate* delegate);
// Add a time marker for login. A timeline will be dumped to
// /tmp/login-times-sent after login is done. If |send_to_uma| is true
// the time between this marker and the last will be sent to UMA with
// the identifier BootTime.|marker_name|.
void AddLoginTimeMarker(const std::string& marker_name, bool send_to_uma);
// Record events for successful authentication.
void RecordAuthenticationSuccess();
// Record events for authentication failure.
void RecordAuthenticationFailure();
private:
Delegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(LoginEventRecorder);
};
} // namespace chromeos
#endif // CHROMEOS_LOGIN_EVENT_RECORDER_H_