Fix crash in save card banner mediator due to null save card delegate.
This CL adds a check for null AutofillSaveCardInfoBarDelegateIOS in SaveCardInfoBarBannerOverlayMediator.dismissInfobarBannerFor- UserInteraction. Fixes immediate crash, see crbug.com/409220427 Bug: 409220427 Change-Id: I207bb4d43ca4a44bd1793150913387e851e8cfd7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6443738 Reviewed-by: Chris Lu <thegreenfrog@chromium.org> Commit-Queue: Kavita Soni <kavitasoni@chromium.org> Cr-Commit-Position: refs/heads/main@{#1445625}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
984c917e27
commit
bc8d1dacdd
@ -78,21 +78,22 @@
|
||||
- (void)dismissInfobarBannerForUserInteraction:(BOOL)userInitiated {
|
||||
autofill::AutofillSaveCardInfoBarDelegateIOS* delegate =
|
||||
self.saveCardDelegate;
|
||||
|
||||
if (!userInitiated) {
|
||||
// Banner is dismissed without user interaction when it times out.
|
||||
delegate->LogSaveCreditCardInfoBarResultMetric(
|
||||
autofill::autofill_metrics::SaveCreditCardPromptResultIOS::KTimedOut,
|
||||
autofill::autofill_metrics::SaveCreditCardPromptOverlayType::kBanner);
|
||||
} else if (userInitiated && !_bannerButtonWasPressed) {
|
||||
// Banner is dismissed with user interaction by swiping it up or by tapping
|
||||
// its button. To distinguish swipe-up dismissal, the method checks if the
|
||||
// button was pressed.
|
||||
delegate->LogSaveCreditCardInfoBarResultMetric(
|
||||
autofill::autofill_metrics::SaveCreditCardPromptResultIOS::kSwiped,
|
||||
autofill::autofill_metrics::SaveCreditCardPromptOverlayType::kBanner);
|
||||
// Delegate may be null due to crbug.com/409220427
|
||||
if (delegate) {
|
||||
if (!userInitiated) {
|
||||
// Banner is dismissed without user interaction when it times out.
|
||||
delegate->LogSaveCreditCardInfoBarResultMetric(
|
||||
autofill::autofill_metrics::SaveCreditCardPromptResultIOS::KTimedOut,
|
||||
autofill::autofill_metrics::SaveCreditCardPromptOverlayType::kBanner);
|
||||
} else if (userInitiated && !_bannerButtonWasPressed) {
|
||||
// Banner is dismissed with user interaction by swiping it up or by
|
||||
// tapping its button. To distinguish swipe-up dismissal, the method
|
||||
// checks if the button was pressed.
|
||||
delegate->LogSaveCreditCardInfoBarResultMetric(
|
||||
autofill::autofill_metrics::SaveCreditCardPromptResultIOS::kSwiped,
|
||||
autofill::autofill_metrics::SaveCreditCardPromptOverlayType::kBanner);
|
||||
}
|
||||
}
|
||||
|
||||
[super dismissInfobarBannerForUserInteraction:userInitiated];
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user