[go: nahoru, domu]

blob: 892afa63e7bd894c7294dd70c3b52f4ee3e70a74 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/device_reauth/device_authenticator_common.h"
#include "base/metrics/histogram_functions.h"
#include "base/time/time.h"
#include "components/device_reauth/device_reauth_metrics_util.h"
using device_reauth::ReauthResult;
DeviceAuthenticatorProxy::DeviceAuthenticatorProxy() = default;
DeviceAuthenticatorProxy::~DeviceAuthenticatorProxy() = default;
DeviceAuthenticatorCommon::DeviceAuthenticatorCommon(
DeviceAuthenticatorProxy* proxy,
base::TimeDelta auth_validity_period,
const std::string& auth_result_histogram)
: device_authenticator_proxy_(proxy->GetWeakPtr()),
auth_validity_period_(auth_validity_period),
auth_result_histogram_(std::move(auth_result_histogram)) {}
DeviceAuthenticatorCommon::~DeviceAuthenticatorCommon() = default;
void DeviceAuthenticatorCommon::RecordAuthenticationTimeIfSuccessful(
bool success) {
if (!auth_result_histogram_.empty()) {
base::UmaHistogramEnumeration(
auth_result_histogram_,
success ? ReauthResult::kSuccess : ReauthResult::kFailure);
}
if (!success) {
return;
}
if (device_authenticator_proxy_) {
device_authenticator_proxy_->UpdateLastGoodAuthTimestamp();
}
}
bool DeviceAuthenticatorCommon::NeedsToAuthenticate() const {
std::optional<base::TimeTicks> last_good_auth_timestamp;
if (device_authenticator_proxy_) {
last_good_auth_timestamp =
device_authenticator_proxy_->GetLastGoodAuthTimestamp();
}
return !last_good_auth_timestamp.has_value() ||
base::TimeTicks::Now() - last_good_auth_timestamp.value() >=
auth_validity_period_;
}
void DeviceAuthenticatorCommon::RecordAuthResultSkipped() {
if (!auth_result_histogram_.empty()) {
base::UmaHistogramEnumeration(auth_result_histogram_,
ReauthResult::kSkipped);
}
}