[iOS][Waffle] Fix learn more dialog size
This patch should be merged to M124.
The learn more presentation needs to follow the same rules than the
search engine dialog presentation.
This patch is related with crrev.com/c/5392920.
Before:
https://drive.google.com/file/d/1TaahNID6ZksnTJeYSatVV1u0HMl22duo/view?resourcekey=0-wOIowykM5YHdQ_cJySoF7g
After:
https://drive.google.com/file/d/1GYVJ10IMFTYhGmGR6qdXXwuXUDkCC-eV/view?resourcekey=0-etLoc3tTXzshOK9uGIHNvQ, https://drive.google.com/file/d/14cYL4AHTwZwuh7U9GNp_PL7IyQv78G8h/view?resourcekey=0-gQHiA6Fs0fRlh0rJmi7m-A,
Fixed: 331787552
Change-Id: I22ff8cecd8dd8878b6f757002adeb17a2c27a30c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5405613
Auto-Submit: Jérôme Lebel <jlebel@chromium.org>
Reviewed-by: Vincent Boisselle <vincb@google.com>
Commit-Queue: Jérôme Lebel <jlebel@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1279917}
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h
index 1064db0..31ae05a4 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h
@@ -11,6 +11,13 @@
extern const CGFloat kFaviconImageViewSize;
extern const CGFloat kFaviconImageViewRadius;
+// Preferred width and height of the Search Engine Choice screen on iPad.
+// We prefer to set a prefferred content size to avoid cases when the view is
+// too big which leads to too much white space and unnecessary chevrons. This
+// may need to be adjusted if the layout of the choice screen changes.
+extern const CGFloat kIPadSearchEngineChoiceScreenPreferredWidth;
+extern const CGFloat kIPadSearchEngineChoiceScreenPreferredHeight;
+
// Accessibility identifier for the choice screen title.
extern NSString* const kSearchEngineChoiceTitleAccessibilityIdentifier;
// Prefix for the SnippetSearchEngineButton accessibility identifier.
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.mm b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.mm
index 16177c498..6b66b1d 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.mm
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.mm
@@ -7,6 +7,9 @@
const CGFloat kFaviconImageViewSize = 24.;
const CGFloat kFaviconImageViewRadius = 3.;
+const CGFloat kIPadSearchEngineChoiceScreenPreferredWidth = 540.;
+const CGFloat kIPadSearchEngineChoiceScreenPreferredHeight = 820.;
+
NSString* const kSearchEngineChoiceTitleAccessibilityIdentifier =
@"SearchEngineChoiceTitleAccessibilityIdentifier";
NSString* const kSnippetSearchEngineOneLineChevronIdentifierPrefix =
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_coordinator.mm b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_coordinator.mm
index f9b16447..941cde5 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_coordinator.mm
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_coordinator.mm
@@ -16,6 +16,7 @@
#import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
#import "ios/chrome/browser/ui/first_run/first_run_screen_delegate.h"
#import "ios/chrome/browser/ui/scoped_iphone_portrait_only/scoped_iphone_portrait_only.h"
+#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h"
#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.h"
#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_view_controller.h"
#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_mediator.h"
@@ -23,18 +24,6 @@
#import "ui/base/device_form_factor.h"
#import "ui/base/l10n/l10n_util_mac.h"
-namespace {
-
-// Preferred width and height of the Search Engine Choice screen on iPad.
-//
-// We prefer to set a prefferred content size to avoid cases when the view is
-// too big which leads to too much white space and unnecessary chevrons. This
-// may need to be adjusted if the layout of the choice screen changes.
-constexpr CGFloat kIPadSearchEngineChoiceScreenPreferredWidth = 540.;
-constexpr CGFloat kIPadSearchEngineChoiceScreenPreferredHeight = 820.;
-
-} // namespace
-
@interface SearchEngineChoiceCoordinator () <
SearchEngineChoiceActionDelegate,
SearchEngineChoiceLearnMoreCoordinatorDelegate>
@@ -156,7 +145,8 @@
[[SearchEngineChoiceLearnMoreCoordinator alloc]
initWithBaseViewController:_viewController
browser:self.browser];
- _searchEngineChoiceLearnMoreCoordinator.presentationFormSheet = _firstRun;
+ _searchEngineChoiceLearnMoreCoordinator.forcePresentationFormSheet =
+ _firstRun;
_searchEngineChoiceLearnMoreCoordinator.delegate = self;
[_searchEngineChoiceLearnMoreCoordinator start];
if (_firstRun) {
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/BUILD.gn b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/BUILD.gn
index 0d32433..a012177 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/BUILD.gn
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/BUILD.gn
@@ -20,6 +20,7 @@
"//ios/chrome/browser/shared/ui/table_view",
"//ios/chrome/browser/shared/ui/table_view:utils",
"//ios/chrome/browser/shared/ui/table_view/cells",
+ "//ios/chrome/browser/ui/search_engine_choice:constants",
"//ios/chrome/common:string_util",
"//ios/chrome/common/ui/colors",
"//ios/chrome/common/ui/util",
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.h b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.h
index 0002304..be87613 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.h
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.h
@@ -24,9 +24,13 @@
delegate;
// If `YES`, the view controller is presented with UIModalPresentationFormSheet,
-// otherwise teh view controller is presented with UIModalPresentationPageSheet.
+// otherwise the view controller is presented:
+// + For iPhone: UIModalPresentationPageSheet
+// + For iPad: UIModalPresentationFormSheet, using
+// kIPadSearchEngineChoiceScreenPreferredWidth
+// kIPadSearchEngineChoiceScreenPreferredHeight.
// The value has to be set before `start` is called.
-@property(nonatomic, assign) BOOL presentationFormSheet;
+@property(nonatomic, assign) BOOL forcePresentationFormSheet;
@end
diff --git a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.mm b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.mm
index 2e02d3e..0585791a 100644
--- a/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.mm
+++ b/ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_coordinator.mm
@@ -7,7 +7,9 @@
#import "ios/chrome/browser/shared/model/browser/browser.h"
#import "ios/chrome/browser/shared/public/commands/command_dispatcher.h"
#import "ios/chrome/browser/shared/ui/table_view/table_view_utils.h"
+#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_constants.h"
#import "ios/chrome/browser/ui/search_engine_choice/search_engine_choice_learn_more/search_engine_choice_learn_more_view_controller.h"
+#import "ui/base/device_form_factor.h"
@interface SearchEngineChoiceLearnMoreCoordinator () <
UIAdaptivePresentationControllerDelegate,
@@ -28,10 +30,20 @@
UINavigationController* navigationController = [[UINavigationController alloc]
initWithRootViewController:_viewController];
// Need to set `modalPresentationStyle` otherwise, UIKit ignores the value.
- if (self.presentationFormSheet) {
+ if (self.forcePresentationFormSheet) {
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
} else {
- navigationController.modalPresentationStyle = UIModalPresentationPageSheet;
+ ui::DeviceFormFactor deviceFormFactor = ui::GetDeviceFormFactor();
+ if (deviceFormFactor == ui::DEVICE_FORM_FACTOR_PHONE) {
+ navigationController.modalPresentationStyle =
+ UIModalPresentationPageSheet;
+ } else {
+ navigationController.modalPresentationStyle =
+ UIModalPresentationFormSheet;
+ navigationController.preferredContentSize =
+ CGSizeMake(kIPadSearchEngineChoiceScreenPreferredWidth,
+ kIPadSearchEngineChoiceScreenPreferredHeight);
+ }
}
navigationController.presentationController.delegate = self;
UISheetPresentationController* presentationController =