Commit bbf20922 authored by Chris Lu's avatar Chris Lu Committed by Commit Bot

[ios] Use SaveCardMainAction for bannerInfobarButtonWasPressed:

SaveCard's acceptance action involves passing the card credentials
to be saved. Thus, it can't use the InfobarBannerMainActionResponse
like other InfoBars. Thus, the banner's response to
bannerInfobarButtonWasPressed: will use SaveCardMainAction to
accept the banner InfoBar action.

Bug: 1071914
Change-Id: I9e5495f422cd43ea315a8b6096466e9ea2fb829f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2246951
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Reviewed-by: default avatarSergio Collazos <sczs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#778883}
parent bfa7d5a3
......@@ -28,6 +28,17 @@ class SaveCardBannerRequestConfig
// The label for the card.
base::string16 card_label() const { return card_label_; }
// The card holder name of the card.
base::string16 cardholder_name() const { return cardholder_name_; }
// The expiration month of the card.
base::string16 expiration_date_month() const {
return expiration_date_month_;
}
// The expiration year of the card.
base::string16 expiration_date_year() const { return expiration_date_year_; }
// The button label text.
base::string16 button_label_text() const { return button_label_text_; }
......@@ -49,6 +60,9 @@ class SaveCardBannerRequestConfig
// Configuration data extracted from |infobar_|'s save card delegate.
base::string16 message_text_;
base::string16 card_label_;
base::string16 cardholder_name_;
base::string16 expiration_date_month_;
base::string16 expiration_date_year_;
base::string16 button_label_text_;
NSString* icon_image_name_ = nil;
bool should_upload_credentials_ = false;
......
......@@ -34,6 +34,9 @@ SaveCardBannerRequestConfig::SaveCardBannerRequestConfig(
infobar_->delegate());
message_text_ = delegate->GetMessageText();
card_label_ = delegate->card_label();
cardholder_name_ = delegate->cardholder_name();
expiration_date_month_ = delegate->expiration_date_month();
expiration_date_year_ = delegate->expiration_date_year();
button_label_text_ =
delegate->upload()
? l10n_util::GetStringUTF16(IDS_IOS_AUTOFILL_SAVE_ELLIPSIS)
......
......@@ -15,6 +15,7 @@ source_set("save_card") {
"//ios/chrome/app/strings:ios_strings_grit",
"//ios/chrome/browser/overlays",
"//ios/chrome/browser/overlays/public/infobar_banner",
"//ios/chrome/browser/overlays/public/infobar_modal",
"//ios/chrome/browser/ui/infobars/banners",
"//ios/chrome/browser/ui/overlays:coordinators",
"//ios/chrome/browser/ui/overlays/infobar_banner:mediators",
......@@ -39,6 +40,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/infobars/test",
"//ios/chrome/browser/overlays",
"//ios/chrome/browser/overlays/public/infobar_banner",
"//ios/chrome/browser/overlays/public/infobar_modal",
"//ios/chrome/browser/overlays/test",
"//ios/chrome/browser/ui/infobars:feature_flags",
"//ios/chrome/browser/ui/infobars/banners/test",
......
......@@ -7,6 +7,7 @@
#include "base/strings/sys_string_conversions.h"
#include "ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h"
#import "ios/chrome/browser/overlays/public/infobar_banner/save_card_infobar_banner_overlay_request_config.h"
#import "ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_responses.h"
#include "ios/chrome/browser/overlays/public/overlay_response.h"
#import "ios/chrome/browser/ui/infobars/banners/infobar_banner_consumer.h"
#import "ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_overlay_mediator+consumer_support.h"
......@@ -19,6 +20,7 @@
#endif
using save_card_infobar_overlays::SaveCardBannerRequestConfig;
using save_card_infobar_overlays::SaveCardMainAction;
@interface SaveCardInfobarBannerOverlayMediator ()
// The save card banner config from the request.
......@@ -52,8 +54,13 @@ using save_card_infobar_overlays::SaveCardBannerRequestConfig;
}
// Notify the model layer to perform the infobar's main action before
// dismissing the banner.
[self dispatchResponse:OverlayResponse::CreateWithInfo<
InfobarBannerMainActionResponse>()];
[self dispatchResponse:OverlayResponse::CreateWithInfo<SaveCardMainAction>(
base::SysUTF16ToNSString(
self.config->cardholder_name()),
base::SysUTF16ToNSString(
self.config->expiration_date_month()),
base::SysUTF16ToNSString(
self.config->expiration_date_year()))];
[self dismissOverlay];
}
......
......@@ -18,6 +18,7 @@
#include "ios/chrome/browser/infobars/infobar_ios.h"
#include "ios/chrome/browser/overlays/public/infobar_banner/infobar_banner_overlay_responses.h"
#import "ios/chrome/browser/overlays/public/infobar_banner/save_card_infobar_banner_overlay_request_config.h"
#import "ios/chrome/browser/overlays/public/infobar_modal/save_card_infobar_modal_overlay_responses.h"
#include "ios/chrome/browser/overlays/test/fake_overlay_request_callback_installer.h"
#import "ios/chrome/browser/ui/infobars/banners/test/fake_infobar_banner_consumer.h"
#import "ios/chrome/browser/ui/infobars/infobar_feature.h"
......@@ -29,15 +30,15 @@
#endif
using save_card_infobar_overlays::SaveCardBannerRequestConfig;
using save_card_infobar_overlays::SaveCardMainAction;
// Test fixture for SaveCardInfobarBannerOverlayMediator.
class SaveCardInfobarBannerOverlayMediatorTest : public PlatformTest {
public:
SaveCardInfobarBannerOverlayMediatorTest()
: callback_installer_(
&callback_receiver_,
{InfobarBannerShowModalResponse::ResponseSupport(),
InfobarBannerMainActionResponse::ResponseSupport()}) {
: callback_installer_(&callback_receiver_,
{InfobarBannerShowModalResponse::ResponseSupport(),
SaveCardMainAction::ResponseSupport()}) {
feature_list_.InitWithFeatures({kIOSInfobarUIReboot},
{kInfobarUIRebootOnlyiOS13});
}
......@@ -163,7 +164,6 @@ TEST_F(SaveCardInfobarBannerOverlayMediatorTest, PresentModalWhenUploadOff) {
EXPECT_CALL(
callback_receiver_,
DispatchCallback(request.get(),
InfobarBannerMainActionResponse::ResponseSupport()));
DispatchCallback(request.get(), SaveCardMainAction::ResponseSupport()));
[mediator bannerInfobarButtonWasPressed:nil];
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment