blob: b81943837ebe547cdb062a6a65f52ebd75815f26 [file] [log] [blame]
// Copyright 2018 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 "chrome/browser/ui/webauthn/transport_hover_list_model.h"
#include <utility>
#include "chrome/browser/ui/webauthn/transport_utils.h"
#include "ui/gfx/paint_vector_icon.h"
TransportHoverListModel::TransportHoverListModel(
std::vector<AuthenticatorTransport> transport_list,
Delegate* delegate)
: transport_list_(std::move(transport_list)), delegate_(delegate) {}
TransportHoverListModel::~TransportHoverListModel() = default;
bool TransportHoverListModel::ShouldShowPlaceholderForEmptyList() const {
return false;
}
base::string16 TransportHoverListModel::GetPlaceholderText() const {
return base::string16();
}
const gfx::VectorIcon& TransportHoverListModel::GetPlaceholderIcon() const {
return gfx::kNoneIcon;
}
std::vector<int> TransportHoverListModel::GetItemTags() const {
std::vector<int> tag_list(transport_list_.size());
std::transform(
transport_list_.begin(), transport_list_.end(), tag_list.begin(),
[](const auto& transport) { return base::strict_cast<int>(transport); });
return tag_list;
}
base::string16 TransportHoverListModel::GetItemText(int item_tag) const {
return GetTransportHumanReadableName(
static_cast<AuthenticatorTransport>(item_tag),
TransportSelectionContext::kTransportSelectionSheet);
}
const gfx::VectorIcon& TransportHoverListModel::GetItemIcon(
int item_tag) const {
return GetTransportVectorIcon(static_cast<AuthenticatorTransport>(item_tag));
}
void TransportHoverListModel::OnListItemSelected(int item_tag) {
if (delegate_)
delegate_->OnItemSelected(static_cast<AuthenticatorTransport>(item_tag));
}
size_t TransportHoverListModel::GetPreferredItemCount() const {
return transport_list_.size();
}