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

#include "chromeos/login_event_recorder.h"

#include <vector>

#include "base/lazy_instance.h"

namespace chromeos {

static base::LazyInstance<LoginEventRecorder>::DestructorAtExit
    g_login_event_recorder = LAZY_INSTANCE_INITIALIZER;

LoginEventRecorder::LoginEventRecorder() : delegate_(NULL) {
}

LoginEventRecorder::~LoginEventRecorder() = default;

// static
LoginEventRecorder* LoginEventRecorder::Get() {
  return g_login_event_recorder.Pointer();
}

void LoginEventRecorder::SetDelegate(LoginEventRecorder::Delegate* delegate) {
  delegate_ = delegate;
}

void LoginEventRecorder::AddLoginTimeMarker(const std::string& marker_name,
                                            bool send_to_uma) {
  if (delegate_)
    delegate_->AddLoginTimeMarker(marker_name, send_to_uma);
}

void LoginEventRecorder::RecordAuthenticationSuccess() {
  if (delegate_)
    delegate_->RecordAuthenticationSuccess();
}

void LoginEventRecorder::RecordAuthenticationFailure() {
  if (delegate_)
    delegate_->RecordAuthenticationFailure();
}

}  // namespace chromeos
