| // 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 "chrome/browser/ui/views/autofill/popup/popup_warning_view.h" |
| |
| #include <memory> |
| #include <string> |
| |
| #include "chrome/browser/ui/views/autofill/popup/popup_base_view.h" |
| #include "chrome/browser/ui/views/chrome_typography.h" |
| #include "components/autofill/core/browser/suggestions/suggestion.h" |
| #include "ui/accessibility/ax_enums.mojom.h" |
| #include "ui/accessibility/ax_node_data.h" |
| #include "ui/base/metadata/metadata_impl_macros.h" |
| #include "ui/color/color_id.h" |
| #include "ui/views/accessibility/view_accessibility.h" |
| #include "ui/views/border.h" |
| #include "ui/views/controls/label.h" |
| #include "ui/views/layout/fill_layout.h" |
| |
| namespace autofill { |
| |
| PopupWarningView::PopupWarningView(const Suggestion& suggestion) { |
| const std::u16string& text_value = suggestion.main_text.value; |
| |
| SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY); |
| GetViewAccessibility().SetRole(ax::mojom::Role::kStaticText); |
| GetViewAccessibility().SetName(text_value); |
| |
| // TODO(crbug.com/327247047): SetUseDefaultFillLayout(true) ignore insets by |
| // default. But we need insets for broder. |
| SetLayoutManager(std::make_unique<views::FillLayout>()); |
| SetBorder(views::CreateEmptyBorder( |
| gfx::Insets::VH(PopupBaseView::GetCornerRadius(), |
| PopupBaseView::ArrowHorizontalMargin()))); |
| |
| AddChildView(views::Builder<views::Label>() |
| .SetText(text_value) |
| .SetTextContext(views::style::CONTEXT_DIALOG_BODY_TEXT) |
| .SetTextStyle(ChromeTextStyle::STYLE_RED) |
| .SetMultiLine(true) |
| .SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT) |
| .SetEnabledColor(ui::kColorAlertHighSeverity) |
| .Build()); |
| } |
| |
| PopupWarningView::~PopupWarningView() = default; |
| |
| BEGIN_METADATA(PopupWarningView) |
| END_METADATA |
| |
| } // namespace autofill |