| Index: ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm
|
| diff --git a/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm b/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm
|
| index 2cfaf373b9edfb8e8ec653de5d9f3df23b571e40..8b8ff0f874e53d622b6afd6ea505333fa37452a7 100644
|
| --- a/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm
|
| +++ b/ios/chrome/browser/ui/ntp/recent_tabs/recent_tabs_table_view_controller.mm
|
| @@ -6,9 +6,7 @@
|
|
|
| #include <memory>
|
|
|
| -#import "base/ios/weak_nsobject.h"
|
| #include "base/logging.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| #include "base/metrics/user_metrics.h"
|
| #include "base/metrics/user_metrics_action.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| @@ -43,6 +41,10 @@
|
| #import "ios/web/public/web_state/context_menu_params.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| +#error "This file requires ARC support."
|
| +#endif
|
| +
|
| namespace {
|
|
|
| // Key for saving collapsed session state in the UserDefaults.
|
| @@ -87,13 +89,13 @@ enum CellType {
|
| // The service that manages the recently closed tabs.
|
| sessions::TabRestoreService* _tabRestoreService; // weak
|
| // Loader used to open new tabs.
|
| - id<UrlLoader> _loader; // weak
|
| + __weak id<UrlLoader> _loader;
|
| // The sync state.
|
| SessionsSyncUserState _sessionState;
|
| // The synced sessions.
|
| std::unique_ptr<synced_sessions::SyncedSessions> _syncedSessions;
|
| // Handles displaying the context menu for all form factors.
|
| - base::scoped_nsobject<ContextMenuCoordinator> _contextMenuCoordinator;
|
| + ContextMenuCoordinator* _contextMenuCoordinator;
|
| }
|
| // Returns the type of the section at index |section|.
|
| - (SectionType)sectionType:(NSInteger)section;
|
| @@ -168,7 +170,6 @@ enum CellType {
|
|
|
| - (void)dealloc {
|
| [self.tableView removeObserver:self forKeyPath:@"contentSize"];
|
| - [super dealloc];
|
| }
|
|
|
| - (void)viewDidLoad {
|
| @@ -177,11 +178,11 @@ enum CellType {
|
| [self.tableView setSeparatorColor:[UIColor clearColor]];
|
| [self.tableView setDataSource:self];
|
| [self.tableView setDelegate:self];
|
| - base::scoped_nsobject<UILongPressGestureRecognizer> longPress(
|
| + UILongPressGestureRecognizer* longPress =
|
| [[UILongPressGestureRecognizer alloc]
|
| initWithTarget:self
|
| - action:@selector(handleLongPress:)]);
|
| - longPress.get().delegate = self;
|
| + action:@selector(handleLongPress:)];
|
| + longPress.delegate = self;
|
| [self.tableView addGestureRecognizer:longPress];
|
|
|
| [self.tableView addObserver:self
|
| @@ -384,8 +385,8 @@ enum CellType {
|
| UIViewController* rootViewController =
|
| self.tableView.window.rootViewController;
|
| ProceduralBlock openHistory = ^{
|
| - base::scoped_nsobject<GenericChromeCommand> openHistory(
|
| - [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_HISTORY]);
|
| + GenericChromeCommand* openHistory =
|
| + [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_HISTORY];
|
| [rootViewController chromeExecuteCommand:openHistory];
|
| };
|
| // Dismiss modal, if shown, and open history.
|
| @@ -599,19 +600,19 @@ enum CellType {
|
| // Get view coordinates in local space.
|
| CGPoint viewCoordinate = [longPressGesture locationInView:self.tableView];
|
| params.location = viewCoordinate;
|
| - params.view.reset([self.tableView retain]);
|
| + params.view.reset(self.tableView);
|
|
|
| // Present sheet/popover using controller that is added to view hierarchy.
|
| UIViewController* topController = [params.view window].rootViewController;
|
| while (topController.presentedViewController)
|
| topController = topController.presentedViewController;
|
|
|
| - _contextMenuCoordinator.reset([[ContextMenuCoordinator alloc]
|
| - initWithBaseViewController:topController
|
| - params:params]);
|
| + _contextMenuCoordinator =
|
| + [[ContextMenuCoordinator alloc] initWithBaseViewController:topController
|
| + params:params];
|
|
|
| // Fill the sheet/popover with buttons.
|
| - base::WeakNSObject<RecentTabsTableViewController> weakSelf(self);
|
| + __weak RecentTabsTableViewController* weakSelf = self;
|
|
|
| // "Open all tabs" button.
|
| NSString* openAllButtonLabel =
|
| @@ -732,63 +733,60 @@ enum CellType {
|
| - (UITableViewCell*)tableView:(UITableView*)tableView
|
| cellForRowAtIndexPath:(NSIndexPath*)indexPath {
|
| UITableViewCell* cell =
|
| - [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
|
| - reuseIdentifier:nil] autorelease];
|
| + [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
|
| + reuseIdentifier:nil];
|
| UIView* contentView = cell.contentView;
|
|
|
| - base::scoped_nsobject<UIView> subview;
|
| + UIView* subview;
|
| CellType cellType = [self cellType:indexPath];
|
| switch (cellType) {
|
| case CELL_CLOSED_TAB_SECTION_HEADER: {
|
| BOOL collapsed = [self sectionIsCollapsed:kRecentlyClosedCollapsedKey];
|
| - subview.reset([[GenericSectionHeaderView alloc]
|
| + subview = [[GenericSectionHeaderView alloc]
|
| initWithType:recent_tabs::RECENTLY_CLOSED_TABS_SECTION_HEADER
|
| - sectionIsCollapsed:collapsed]);
|
| + sectionIsCollapsed:collapsed];
|
| [subview setTag:kSectionHeader];
|
| break;
|
| }
|
| case CELL_CLOSED_TAB_DATA: {
|
| - base::scoped_nsobject<SessionTabDataView> genericTabData(
|
| - [[SessionTabDataView alloc] initWithFrame:CGRectZero]);
|
| + SessionTabDataView* genericTabData =
|
| + [[SessionTabDataView alloc] initWithFrame:CGRectZero];
|
| [genericTabData
|
| updateWithTabRestoreEntry:[self tabRestoreEntryAtIndex:indexPath]
|
| browserState:_browserState];
|
| - subview.reset([genericTabData.get() retain]);
|
| + subview = genericTabData;
|
| break;
|
| }
|
| case CELL_SHOW_FULL_HISTORY:
|
| - subview.reset([[ShowFullHistoryView alloc] initWithFrame:CGRectZero]);
|
| + subview = [[ShowFullHistoryView alloc] initWithFrame:CGRectZero];
|
| break;
|
| case CELL_SEPARATOR:
|
| - subview.reset(
|
| - [[RecentlyClosedSectionFooter alloc] initWithFrame:CGRectZero]);
|
| + subview = [[RecentlyClosedSectionFooter alloc] initWithFrame:CGRectZero];
|
| [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
| break;
|
| case CELL_OTHER_DEVICES_SECTION_HEADER: {
|
| BOOL collapsed = [self sectionIsCollapsed:kOtherDeviceCollapsedKey];
|
| - subview.reset([[GenericSectionHeaderView alloc]
|
| + subview = [[GenericSectionHeaderView alloc]
|
| initWithType:recent_tabs::OTHER_DEVICES_SECTION_HEADER
|
| - sectionIsCollapsed:collapsed]);
|
| + sectionIsCollapsed:collapsed];
|
| [subview setTag:kSectionHeader];
|
| break;
|
| }
|
| case CELL_OTHER_DEVICES_SIGNED_OUT:
|
| - subview.reset([[SignedOutView alloc] initWithFrame:CGRectZero]);
|
| + subview = [[SignedOutView alloc] initWithFrame:CGRectZero];
|
| [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
| break;
|
| case CELL_OTHER_DEVICES_SIGNED_IN_SYNC_OFF:
|
| - subview.reset([[SignedInSyncOffView alloc] initWithFrame:CGRectZero
|
| - browserState:_browserState]);
|
| + subview = [[SignedInSyncOffView alloc] initWithFrame:CGRectZero
|
| + browserState:_browserState];
|
| [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
| break;
|
| case CELL_OTHER_DEVICES_SIGNED_IN_SYNC_ON_NO_SESSIONS:
|
| - subview.reset(
|
| - [[SignedInSyncOnNoSessionsView alloc] initWithFrame:CGRectZero]);
|
| + subview = [[SignedInSyncOnNoSessionsView alloc] initWithFrame:CGRectZero];
|
| [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
| break;
|
| case CELL_OTHER_DEVICES_SYNC_IN_PROGRESS:
|
| - subview.reset(
|
| - [[SignedInSyncInProgressView alloc] initWithFrame:CGRectZero]);
|
| + subview = [[SignedInSyncInProgressView alloc] initWithFrame:CGRectZero];
|
| [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
| break;
|
| case CELL_SESSION_SECTION_HEADER: {
|
| @@ -796,20 +794,20 @@ enum CellType {
|
| [self sessionAtIndexPath:indexPath];
|
| NSString* key = [self keyForDistantSession:distantSession];
|
| BOOL collapsed = [self sectionIsCollapsed:key];
|
| - base::scoped_nsobject<SessionSectionHeaderView> sessionSectionHeader(
|
| + SessionSectionHeaderView* sessionSectionHeader =
|
| [[SessionSectionHeaderView alloc] initWithFrame:CGRectZero
|
| - sectionIsCollapsed:collapsed]);
|
| + sectionIsCollapsed:collapsed];
|
| [sessionSectionHeader updateWithSession:distantSession];
|
| - subview.reset(sessionSectionHeader.release());
|
| + subview = sessionSectionHeader;
|
| [subview setTag:kSectionHeader];
|
| break;
|
| }
|
| case CELL_SESSION_TAB_DATA: {
|
| - base::scoped_nsobject<SessionTabDataView> genericTabData(
|
| - [[SessionTabDataView alloc] initWithFrame:CGRectZero]);
|
| + SessionTabDataView* genericTabData =
|
| + [[SessionTabDataView alloc] initWithFrame:CGRectZero];
|
| [genericTabData updateWithDistantTab:[self distantTabAtIndex:indexPath]
|
| browserState:_browserState];
|
| - subview.reset([genericTabData.get() retain]);
|
| + subview = genericTabData;
|
| break;
|
| }
|
| }
|
| @@ -820,7 +818,7 @@ enum CellType {
|
| // Sets constraints on the subview.
|
| [subview setTranslatesAutoresizingMaskIntoConstraints:NO];
|
|
|
| - NSDictionary* viewsDictionary = @{ @"view" : subview.get() };
|
| + NSDictionary* viewsDictionary = @{ @"view" : subview };
|
| // This set of constraints should match the constraints set on the
|
| // RecentlyClosedSectionFooter.
|
| // clang-format off
|
| @@ -930,8 +928,7 @@ enum CellType {
|
| - (UIView*)tableView:(UITableView*)tableView
|
| viewForHeaderInSection:(NSInteger)section {
|
| if ([self sectionType:section] == CLOSED_TAB_SECTION) {
|
| - return [[[RecentlyTabsTopSpacingHeader alloc] initWithFrame:CGRectZero]
|
| - autorelease];
|
| + return [[RecentlyTabsTopSpacingHeader alloc] initWithFrame:CGRectZero];
|
| }
|
| return nil;
|
| }
|
|
|