Commit 3bede828 authored by sczs's avatar sczs Committed by Commit Bot

[ios] Creates feature flag for CrashRestore Infobar

- Also creates the ConfirmInfoBarController directly on crash_restore_helper
since using CreateConfirmInfoBar would also create a Message infobar if
the ConfirmInfobar as Messages flag is on.

Bug: 1028951
Change-Id: I81fec50e851ed830c49e8306994c0f836d2c8efb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1939492Reviewed-by: default avatarMark Cogan <marq@chromium.org>
Commit-Queue: Sergio Collazos <sczs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#719577}
parent 908fb5fe
...@@ -19,7 +19,9 @@ ...@@ -19,7 +19,9 @@
#include "components/strings/grit/components_strings.h" #include "components/strings/grit/components_strings.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/crash_report/breakpad_helper.h" #import "ios/chrome/browser/crash_report/breakpad_helper.h"
#include "ios/chrome/browser/infobars/confirm_infobar_controller.h"
#include "ios/chrome/browser/infobars/confirm_infobar_metrics_recorder.h" #include "ios/chrome/browser/infobars/confirm_infobar_metrics_recorder.h"
#include "ios/chrome/browser/infobars/infobar.h"
#include "ios/chrome/browser/infobars/infobar_manager_impl.h" #include "ios/chrome/browser/infobars/infobar_manager_impl.h"
#include "ios/chrome/browser/infobars/infobar_utils.h" #include "ios/chrome/browser/infobars/infobar_utils.h"
#include "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_factory.h" #include "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_factory.h"
...@@ -138,12 +140,15 @@ bool SessionCrashedInfoBarDelegate::Create( ...@@ -138,12 +140,15 @@ bool SessionCrashedInfoBarDelegate::Create(
std::unique_ptr<ConfirmInfoBarDelegate> delegate( std::unique_ptr<ConfirmInfoBarDelegate> delegate(
new SessionCrashedInfoBarDelegate(crash_restore_helper)); new SessionCrashedInfoBarDelegate(crash_restore_helper));
if (IsConfirmInfobarMessagesUIEnabled()) { if (IsCrashRestoreInfobarMessagesUIEnabled()) {
return !!infobar_manager->AddInfoBar( return !!infobar_manager->AddInfoBar(
::CreateHighPriorityConfirmInfoBar(std::move(delegate))); ::CreateHighPriorityConfirmInfoBar(std::move(delegate)));
} else { } else {
return !!infobar_manager->AddInfoBar( ConfirmInfoBarController* controller = [[ConfirmInfoBarController alloc]
::CreateConfirmInfoBar(std::move(delegate))); initWithInfoBarDelegate:delegate.get()];
std::unique_ptr<infobars::InfoBar> infobar =
std::make_unique<InfoBarIOS>(controller, std::move(delegate));
return !!infobar_manager->AddInfoBar(std::move(infobar));
} }
} }
......
...@@ -585,6 +585,10 @@ const flags_ui::FeatureEntry kFeatureEntries[] = { ...@@ -585,6 +585,10 @@ const flags_ui::FeatureEntry kFeatureEntries[] = {
{"mobile-google-srp", flag_descriptions::kMobileGoogleSRPName, {"mobile-google-srp", flag_descriptions::kMobileGoogleSRPName,
flag_descriptions::kMobileGoogleSRPDescription, flags_ui::kOsIos, flag_descriptions::kMobileGoogleSRPDescription, flags_ui::kOsIos,
FEATURE_VALUE_TYPE(web::kMobileGoogleSRP)}, FEATURE_VALUE_TYPE(web::kMobileGoogleSRP)},
{"messages-crash-restore-infobars",
flag_descriptions::kCrashRestoreInfobarMessagesUIName,
flag_descriptions::kCrashRestoreInfobarMessagesUIDescription,
flags_ui::kOsIos, FEATURE_VALUE_TYPE(kCrashRestoreInfobarMessagesUI)},
}; };
// Add all switches from experimental flags to |command_line|. // Add all switches from experimental flags to |command_line|.
......
...@@ -124,6 +124,11 @@ const char kConfirmInfobarMessagesUIName[] = "Confirm Infobars Messages UI"; ...@@ -124,6 +124,11 @@ const char kConfirmInfobarMessagesUIName[] = "Confirm Infobars Messages UI";
const char kConfirmInfobarMessagesUIDescription[] = const char kConfirmInfobarMessagesUIDescription[] =
"When enabled Confirm Infobars use the new Messages UI."; "When enabled Confirm Infobars use the new Messages UI.";
const char kCrashRestoreInfobarMessagesUIName[] =
"Crash Restore Infobars Messages UI";
const char kCrashRestoreInfobarMessagesUIDescription[] =
"When enabled Crash Restore Infobars use the new Messages UI.";
const char kCreditCardScannerName[] = "Enable the 'Use Camera' button"; const char kCreditCardScannerName[] = "Enable the 'Use Camera' button";
const char kCreditCardScannerDescription[] = const char kCreditCardScannerDescription[] =
"Allow a user to scan a credit card using the credit card camera scanner." "Allow a user to scan a credit card using the credit card camera scanner."
......
...@@ -98,6 +98,11 @@ extern const char kCollectionsCardPresentationStyleDescription[]; ...@@ -98,6 +98,11 @@ extern const char kCollectionsCardPresentationStyleDescription[];
extern const char kConfirmInfobarMessagesUIName[]; extern const char kConfirmInfobarMessagesUIName[];
extern const char kConfirmInfobarMessagesUIDescription[]; extern const char kConfirmInfobarMessagesUIDescription[];
// Title and description for the flag that enables Messages UI on
// Crash Restore Infobars.
extern const char kCrashRestoreInfobarMessagesUIName[];
extern const char kCrashRestoreInfobarMessagesUIDescription[];
// Title and description for the flag to scan a new credit card using the // Title and description for the flag to scan a new credit card using the
// camera. // camera.
extern const char kCreditCardScannerName[]; extern const char kCreditCardScannerName[];
......
...@@ -18,6 +18,13 @@ extern const base::Feature kInfobarUIReboot; ...@@ -18,6 +18,13 @@ extern const base::Feature kInfobarUIReboot;
// Use IsConfirmInfobarMessagesUIEnabled() instead of this constant directly. // Use IsConfirmInfobarMessagesUIEnabled() instead of this constant directly.
extern const base::Feature kConfirmInfobarMessagesUI; extern const base::Feature kConfirmInfobarMessagesUI;
// Feature to choose whether Confirm Infobars use the new Messages UI or the
// legacy one. Also, in order for it to work kInfobarUIReboot needs to be
// enabled.
// Use IsCrashRestoreInfobarMessagesUIEnabled() instead of this constant
// directly.
extern const base::Feature kCrashRestoreInfobarMessagesUI;
// Feature to choose whether Downloads uses the new Messages UI or the // Feature to choose whether Downloads uses the new Messages UI or the
// legacy one. Also, in order for it to work kInfobarUIReboot needs to be // legacy one. Also, in order for it to work kInfobarUIReboot needs to be
// enabled. // enabled.
...@@ -42,6 +49,9 @@ bool IsInfobarUIRebootEnabled(); ...@@ -42,6 +49,9 @@ bool IsInfobarUIRebootEnabled();
// Whether the Confirm Infobar Messages UI is enabled. // Whether the Confirm Infobar Messages UI is enabled.
bool IsConfirmInfobarMessagesUIEnabled(); bool IsConfirmInfobarMessagesUIEnabled();
// Whether the Crash Restore Infobar Messages UI is enabled.
bool IsCrashRestoreInfobarMessagesUIEnabled();
// Whether the Download Infobar Messages UI is enabled. // Whether the Download Infobar Messages UI is enabled.
bool IsDownloadInfobarMessagesUIEnabled(); bool IsDownloadInfobarMessagesUIEnabled();
......
...@@ -17,6 +17,12 @@ const base::Feature kInfobarUIReboot{"InfobarUIReboot", ...@@ -17,6 +17,12 @@ const base::Feature kInfobarUIReboot{"InfobarUIReboot",
const base::Feature kConfirmInfobarMessagesUI{"ConfirmInfobarMessagesUI", const base::Feature kConfirmInfobarMessagesUI{"ConfirmInfobarMessagesUI",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
// Feature enabled by default since it will always be checked along
// kInfobarUIReboot, effectively working as a kill switch. Meaning that if
// kInfobarUIReboot is not enabled this feature won't work.
const base::Feature kCrashRestoreInfobarMessagesUI{
"CrashRestoreInfobarMessagesUI", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kDownloadInfobarMessagesUI{ const base::Feature kDownloadInfobarMessagesUI{
"DownloadInfobarMessagesUI", base::FEATURE_DISABLED_BY_DEFAULT}; "DownloadInfobarMessagesUI", base::FEATURE_DISABLED_BY_DEFAULT};
...@@ -43,6 +49,11 @@ bool IsConfirmInfobarMessagesUIEnabled() { ...@@ -43,6 +49,11 @@ bool IsConfirmInfobarMessagesUIEnabled() {
IsInfobarUIRebootEnabled(); IsInfobarUIRebootEnabled();
} }
bool IsCrashRestoreInfobarMessagesUIEnabled() {
return base::FeatureList::IsEnabled(kCrashRestoreInfobarMessagesUI) &&
IsInfobarUIRebootEnabled();
}
bool IsDownloadInfobarMessagesUIEnabled() { bool IsDownloadInfobarMessagesUIEnabled() {
return base::FeatureList::IsEnabled(kDownloadInfobarMessagesUI) && return base::FeatureList::IsEnabled(kDownloadInfobarMessagesUI) &&
IsInfobarUIRebootEnabled(); IsInfobarUIRebootEnabled();
......
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