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