| // Copyright 2019 The Chromium Authors | 
 | // 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 |