[go: nahoru, domu]

blob: 41a2240608413398992dbf34c3d6465ad2f1360b [file] [log] [blame]
// Copyright 2021 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 "ash/login/ui/auth_factor_model.h"
#include "ash/login/ui/auth_icon_view.h"
namespace ash {
// static
bool AuthFactorModel::can_use_pin_ = false;
AuthFactorModel::AuthFactorModel() = default;
AuthFactorModel::~AuthFactorModel() = default;
void AuthFactorModel::Init(AuthIconView* icon,
base::RepeatingClosure update_state_callback) {
DCHECK(!icon_) << "Init should only be called once.";
icon_ = icon;
update_state_callback_ = update_state_callback;
}
void AuthFactorModel::SetVisible(bool visible) {
DCHECK(icon_);
icon_->SetVisible(visible);
}
void AuthFactorModel::OnThemeChanged() {
if (icon_)
UpdateIcon(icon_);
}
void AuthFactorModel::HandleTapOrClick() {
// If an auth factor icon is clicked while the auth factor has a permanent
// error, then show the error again by marking it as not timed out.
if (GetAuthFactorState() == AuthFactorState::kErrorPermanent)
has_permanent_error_display_timed_out_ = false;
DoHandleTapOrClick();
// Call `RefreshUI` here in case |has_permanent_error_display_timed_out_|
// changed. It's called regardless of whether or not there was an actual
// change so that `DoHandleTapOrClick` can avoid calling `RefreshUI`, which
// could result in multiple calls.
RefreshUI();
}
void AuthFactorModel::HandleErrorTimeout() {
if (GetAuthFactorState() == AuthFactorState::kErrorPermanent)
has_permanent_error_display_timed_out_ = true;
DoHandleErrorTimeout();
// Call `RefreshUI` here in case |has_permanent_error_display_timed_out_|
// changed. It's called regardless of whether or not there was an actual
// change so that `DoHandleErrorTimeout` can avoid calling `RefreshUI`, which
// could result in multiple calls.
RefreshUI();
}
void AuthFactorModel::RefreshUI() {
DCHECK(icon_);
if (update_state_callback_) {
update_state_callback_.Run();
}
UpdateIcon(icon_);
}
void AuthFactorModel::set_can_use_pin(bool can_use_pin) {
can_use_pin_ = can_use_pin;
}
bool AuthFactorModel::can_use_pin() {
return can_use_pin_;
}
void AuthFactorModel::OnArrowButtonTapOrClickEvent() {}
} // namespace ash