15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file.
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chromeos/login_event_recorder.h"
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <vector>
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/lazy_instance.h"
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace chromeos {
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static base::LazyInstance<LoginEventRecorder> g_login_event_recorder =
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    LAZY_INSTANCE_INITIALIZER;
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)LoginEventRecorder::LoginEventRecorder() : delegate_(NULL) {
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)LoginEventRecorder::~LoginEventRecorder() {
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)LoginEventRecorder* LoginEventRecorder::Get() {
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return g_login_event_recorder.Pointer();
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void LoginEventRecorder::SetDelegate(LoginEventRecorder::Delegate* delegate) {
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  delegate_ = delegate;
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void LoginEventRecorder::AddLoginTimeMarker(const std::string& marker_name,
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                            bool send_to_uma) {
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (delegate_)
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    delegate_->AddLoginTimeMarker(marker_name, send_to_uma);
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void LoginEventRecorder::RecordAuthenticationSuccess() {
3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  if (delegate_)
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    delegate_->RecordAuthenticationSuccess();
4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void LoginEventRecorder::RecordAuthenticationFailure() {
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  if (delegate_)
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    delegate_->RecordAuthenticationFailure();
4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace chromeos
48