Commit 18641920 authored by sczs's avatar sczs Committed by Commit Bot

[ios] Changes RecentTabs presentation to UIModalPresentationFormSheet on iOS13.

Bug: 979201
Change-Id: Iee3f28ab517b0f59ea043dde7ba15248d8083201
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1727430Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Commit-Queue: Sergio Collazos <sczs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686573}
parent 64af6895
...@@ -31,6 +31,7 @@ source_set("recent_tabs") { ...@@ -31,6 +31,7 @@ source_set("recent_tabs") {
"//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
"//ios/chrome/browser/ui/ntp", "//ios/chrome/browser/ui/ntp",
"//ios/chrome/browser/ui/table_view", "//ios/chrome/browser/ui/table_view",
"//ios/chrome/browser/ui/table_view:feature_flags",
"//ios/chrome/browser/ui/util", "//ios/chrome/browser/ui/util",
"//ios/chrome/browser/url_loading", "//ios/chrome/browser/url_loading",
"//ui/base", "//ui/base",
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#import "ios/chrome/browser/ui/recent_tabs/recent_tabs_presentation_delegate.h" #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_presentation_delegate.h"
#import "ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.h" #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_table_view_controller.h"
#import "ios/chrome/browser/ui/recent_tabs/recent_tabs_transitioning_delegate.h" #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_transitioning_delegate.h"
#import "ios/chrome/browser/ui/table_view/feature_flags.h"
#import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h"
#import "ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.h" #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.h"
#import "ios/chrome/browser/url_loading/url_loading_params.h" #import "ios/chrome/browser/url_loading/url_loading_params.h"
...@@ -83,12 +84,29 @@ ...@@ -83,12 +84,29 @@
self.recentTabsNavigationController = [[TableViewNavigationController alloc] self.recentTabsNavigationController = [[TableViewNavigationController alloc]
initWithTable:recentTabsTableViewController]; initWithTable:recentTabsTableViewController];
self.recentTabsNavigationController.toolbarHidden = YES; self.recentTabsNavigationController.toolbarHidden = YES;
self.recentTabsTransitioningDelegate =
[[RecentTabsTransitioningDelegate alloc] init]; BOOL useCustomPresentation = YES;
self.recentTabsNavigationController.transitioningDelegate = if (IsCollectionsCardPresentationStyleEnabled()) {
self.recentTabsTransitioningDelegate; if (@available(iOS 13, *)) {
[self.recentTabsNavigationController #if defined(__IPHONE_13_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0)
setModalPresentationStyle:UIModalPresentationCustom]; [self.recentTabsNavigationController
setModalPresentationStyle:UIModalPresentationFormSheet];
self.recentTabsNavigationController.presentationController.delegate =
recentTabsTableViewController;
useCustomPresentation = NO;
#endif
}
}
if (useCustomPresentation) {
self.recentTabsTransitioningDelegate =
[[RecentTabsTransitioningDelegate alloc] init];
self.recentTabsNavigationController.transitioningDelegate =
self.recentTabsTransitioningDelegate;
[self.recentTabsNavigationController
setModalPresentationStyle:UIModalPresentationCustom];
}
[self.baseViewController [self.baseViewController
presentViewController:self.recentTabsNavigationController presentViewController:self.recentTabsNavigationController
animated:YES animated:YES
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#import <map> #import <map>
#import <string> #import <string>
#include "base/ios/ios_util.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "components/strings/grit/components_strings.h" #include "components/strings/grit/components_strings.h"
#import "ios/chrome/app/main_controller.h" #import "ios/chrome/app/main_controller.h"
...@@ -241,4 +242,32 @@ id<GREYMatcher> TitleOfTestPage() { ...@@ -241,4 +242,32 @@ id<GREYMatcher> TitleOfTestPage() {
->RemoveIdentity(identity); ->RemoveIdentity(identity);
} }
// Tests that the VC can be dismissed by swiping down.
- (void)testSwipeDownDismiss {
if (!base::ios::IsRunningOnOrLater(13, 0, 0)) {
EARL_GREY_TEST_SKIPPED(@"Test disabled on iOS 12 and lower.");
}
OpenRecentTabsPanel();
// Check that the TableView is presented.
[[EarlGrey selectElementWithMatcher:
grey_accessibilityID(
kRecentTabsTableViewControllerAccessibilityIdentifier)]
assertWithMatcher:grey_notNil()];
// Swipe TableView down.
[[EarlGrey selectElementWithMatcher:
grey_accessibilityID(
kRecentTabsTableViewControllerAccessibilityIdentifier)]
performAction:grey_swipeFastInDirection(kGREYDirectionDown)];
// Check that the TableView has been dismissed.
[[EarlGrey selectElementWithMatcher:
grey_accessibilityID(
kRecentTabsTableViewControllerAccessibilityIdentifier)]
assertWithMatcher:grey_nil()];
[ChromeEarlGrey closeCurrentTab];
}
@end @end
...@@ -21,7 +21,8 @@ class WebStateList; ...@@ -21,7 +21,8 @@ class WebStateList;
@protocol TableViewFaviconDataSource; @protocol TableViewFaviconDataSource;
@interface RecentTabsTableViewController @interface RecentTabsTableViewController
: ChromeTableViewController<RecentTabsConsumer> : ChromeTableViewController <RecentTabsConsumer,
UIAdaptivePresentationControllerDelegate>
// The coordinator's BrowserState. // The coordinator's BrowserState.
@property(nonatomic, assign) ios::ChromeBrowserState* browserState; @property(nonatomic, assign) ios::ChromeBrowserState* browserState;
// The dispatcher used by this ViewController. // The dispatcher used by this ViewController.
......
...@@ -1148,6 +1148,13 @@ const int kRecentlyClosedTabsSectionIndex = 0; ...@@ -1148,6 +1148,13 @@ const int kRecentlyClosedTabsSectionIndex = 0;
[self.dispatcher showSignin:command baseViewController:self]; [self.dispatcher showSignin:command baseViewController:self];
} }
#pragma mark - UIAdaptivePresentationControllerDelegate
- (void)presentationControllerDidDismiss:
(UIPresentationController*)presentationController {
// Call dismissRecentTabs so the Coordinator cleans up any state it needs to.
[self.presentationDelegate dismissRecentTabs];
}
#pragma mark - Accessibility #pragma mark - Accessibility
- (BOOL)accessibilityPerformEscape { - (BOOL)accessibilityPerformEscape {
......
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