1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/webauthn/authenticator_common_views.h"
#include <memory>
#include <string>
#include <utility>
#include "chrome/browser/ui/passwords/ui_utils.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "components/vector_icons/vector_icons.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/models/image_model.h"
#include "ui/color/color_id.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/text_constants.h"
#include "ui/gfx/vector_icon_types.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/layout/box_layout_view.h"
#include "ui/views/style/typography.h"
#include "ui/views/view.h"
namespace {
constexpr int kGapSize = 8;
constexpr int kGpmIconSize = 20;
constexpr int kMediumIconSize = 26;
constexpr int kHorizontalInset = 8;
constexpr int kHorizontalSpacing = 16;
} // namespace
std::unique_ptr<views::View> CreatePasskeyWithUsernameLabel(
std::u16string username) {
auto container = std::make_unique<views::BoxLayoutView>();
container->SetOrientation(views::BoxLayout::Orientation::kHorizontal);
container->SetInsideBorderInsets(gfx::Insets::VH(0, kHorizontalInset));
container->SetBetweenChildSpacing(kHorizontalSpacing);
container->AddChildView(
std::make_unique<views::ImageView>(ui::ImageModel::FromVectorIcon(
vector_icons::kPasskeyIcon, ui::kColorIcon, kMediumIconSize)));
auto username_column = std::make_unique<views::BoxLayoutView>();
username_column->SetOrientation(views::BoxLayout::Orientation::kVertical);
username_column->SetCrossAxisAlignment(
views::BoxLayout::CrossAxisAlignment::kStart);
auto* username_view =
username_column->AddChildView(std::make_unique<views::Label>(
username, views::style::CONTEXT_DIALOG_BODY_TEXT));
username_column->AddChildView(std::make_unique<views::Label>(
l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_PASSKEY),
views::style::CONTEXT_DIALOG_BODY_TEXT));
username_view->SetElideBehavior(gfx::ElideBehavior::ELIDE_EMAIL);
container->AddChildView(std::move(username_column));
return std::move(container);
}
std::unique_ptr<views::View> CreateGpmIconWithLabel() {
auto view = std::make_unique<views::BoxLayoutView>();
view->SetOrientation(views::BoxLayout::Orientation::kHorizontal);
view->SetBetweenChildSpacing(kGapSize);
view->AddChildView(
std::make_unique<views::ImageView>(ui::ImageModel::FromVectorIcon(
GooglePasswordManagerVectorIcon(), ui::kColorIcon, kGpmIconSize)));
view->AddChildView(std::make_unique<views::Label>(
l10n_util::GetStringUTF16(IDS_WEBAUTHN_SOURCE_GOOGLE_PASSWORD_MANAGER)));
return view;
}
|