// 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_
