| // Copyright 2019 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 "components/browser_ui/sms/android/sms_infobar_delegate.h" |
| |
| #include "base/check_op.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "build/build_config.h" |
| #include "components/infobars/core/infobar.h" |
| #include "components/resources/android/theme_resources.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "components/url_formatter/elide_url.h" |
| #include "content/public/browser/web_contents.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "url/origin.h" |
| |
| namespace sms { |
| |
| SmsInfoBarDelegate::SmsInfoBarDelegate(const OriginList& origin_list, |
| const std::string& one_time_code, |
| base::OnceClosure on_confirm, |
| base::OnceClosure on_cancel) |
| : ConfirmInfoBarDelegate(), |
| origin_list_(origin_list), |
| one_time_code_(one_time_code), |
| on_confirm_(std::move(on_confirm)), |
| on_cancel_(std::move(on_cancel)) {} |
| |
| SmsInfoBarDelegate::~SmsInfoBarDelegate() = default; |
| |
| infobars::InfoBarDelegate::InfoBarIdentifier SmsInfoBarDelegate::GetIdentifier() |
| const { |
| return WEBOTP_SERVICE_INFOBAR_DELEGATE; |
| } |
| |
| int SmsInfoBarDelegate::GetIconId() const { |
| return IDR_ANDROID_INFOBAR_PHONE_ICON; |
| } |
| |
| std::u16string SmsInfoBarDelegate::GetMessageText() const { |
| if (origin_list_.size() == 1) { |
| std::u16string origin = url_formatter::FormatOriginForSecurityDisplay( |
| origin_list_[0], url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS); |
| return l10n_util::GetStringFUTF16(IDS_SMS_INFOBAR_STATUS_SMS_RECEIVED, |
| base::UTF8ToUTF16(one_time_code_), |
| origin); |
| } |
| |
| // Only one cross-origin iframe is allowed. |
| DCHECK_EQ(origin_list_.size(), 2u); |
| |
| std::u16string embedded_origin = |
| url_formatter::FormatOriginForSecurityDisplay( |
| origin_list_[0], url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS); |
| std::u16string top_origin = url_formatter::FormatOriginForSecurityDisplay( |
| origin_list_[1], url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS); |
| return l10n_util::GetStringFUTF16( |
| IDS_SMS_INFOBAR_STATUS_SMS_RECEIVED_FROM_EMBEDDED_FRAME, |
| base::UTF8ToUTF16(one_time_code_), top_origin, embedded_origin); |
| } |
| |
| int SmsInfoBarDelegate::GetButtons() const { |
| return BUTTON_OK; |
| } |
| |
| std::u16string SmsInfoBarDelegate::GetButtonLabel(InfoBarButton button) const { |
| DCHECK_EQ(BUTTON_OK, button); |
| return l10n_util::GetStringUTF16(IDS_SMS_INFOBAR_BUTTON_OK); |
| } |
| |
| bool SmsInfoBarDelegate::Accept() { |
| std::move(on_confirm_).Run(); |
| return true; |
| } |
| |
| void SmsInfoBarDelegate::InfoBarDismissed() { |
| std::move(on_cancel_).Run(); |
| } |
| |
| std::u16string SmsInfoBarDelegate::GetTitle() const { |
| return l10n_util::GetStringUTF16(IDS_SMS_INFOBAR_TITLE); |
| } |
| |
| } // namespace sms |