Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Unified Diff: ios/chrome/browser/ui/tabs/tab_strip_controller.mm

Issue 2942913002: [ObjC ARC] Converts ios/chrome/browser/ui/tabs:tabs to ARC. (Closed)
Patch Set: comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/chrome/browser/ui/tabs/BUILD.gn ('k') | ios/chrome/browser/ui/tabs/tab_strip_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/tabs/tab_strip_controller.mm
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
index c09b68a369b2f3dce5afbcc304cdb4f01116fcdc..7261aae9e00abfa542639236173283eaf0ea035e 100644
--- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
+++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -9,11 +9,9 @@
#include <vector>
#include "base/i18n/rtl.h"
-#import "base/ios/weak_nsobject.h"
#include "base/mac/bundle_locations.h"
#include "base/mac/foundation_util.h"
-#include "base/mac/objc_property_releaser.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"
@@ -39,6 +37,10 @@
#include "third_party/google_toolbox_for_mac/src/iPhone/GTMFadeTruncatingLabel.h"
#include "ui/gfx/image/image.h"
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
using base::UserMetricsAction;
NSString* const kWillStartTabStripTabAnimation =
@@ -118,27 +120,27 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
TabStripViewLayoutDelegate,
UIGestureRecognizerDelegate,
UIScrollViewDelegate> {
- base::scoped_nsobject<TabModel> _tabModel;
+ TabModel* _tabModel;
UIView* _view;
TabStripView* _tabStripView;
UIButton* _buttonNewTab;
- base::scoped_nsobject<UIButton> _tabSwitcherButton;
+ UIButton* _tabSwitcherButton;
// Background view of the tab switcher button. Only visible while in compact
// layout.
- base::scoped_nsobject<UIImageView> _tabSwitcherButtonBackgroundView;
+ UIImageView* _tabSwitcherButtonBackgroundView;
TabStrip::Style _style;
- base::WeakNSProtocol<id<FullScreenControllerDelegate>> _fullscreenDelegate;
+ __weak id<FullScreenControllerDelegate> _fullscreenDelegate;
// Array of TabViews. There is a one-to-one correspondence between this array
// and the set of Tabs in the TabModel.
- base::scoped_nsobject<NSMutableArray> _tabArray;
+ NSMutableArray* _tabArray;
// Set of TabViews that are currently closing. These TabViews are also in
// |_tabArray|. Used to translate between |_tabArray| indexes and TabModel
// indexes.
- base::scoped_nsobject<NSMutableSet> _closingTabs;
+ NSMutableSet* _closingTabs;
// Tracks target frames for TabViews.
// TODO(rohitrao): This is unnecessary, as UIKit updates view frames
@@ -155,7 +157,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// View used to dim unselected tabs when in reordering mode. Nil when not
// reordering tabs.
- base::scoped_nsobject<UIView> _dimmingView;
+ UIView* _dimmingView;
// Is the selected tab highlighted, used when dragging or swiping tabs.
BOOL _highlightsSelectedTab;
@@ -165,7 +167,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
BOOL _isReordering;
// The tab that is currently being dragged. nil when not in reordering mode.
- base::scoped_nsobject<TabView> _draggedTab;
+ TabView* _draggedTab;
// The last known location of the touch that is dragging the tab. This
// location is in the coordinate system of |[_tabStripView superview]| because
@@ -183,8 +185,6 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// The model index of the placeholder gap, if one exists. This value is used
// as the new model index of the dragged tab when it is dropped.
NSUInteger _placeholderGapModelIndex;
-
- base::mac::ObjCPropertyReleaser _propertyReleaser_TabStripController;
}
@property(nonatomic, readonly, retain) TabStripView* tabStripView;
@@ -326,11 +326,10 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (instancetype)initWithTabModel:(TabModel*)tabModel
style:(TabStrip::Style)style {
if ((self = [super init])) {
- _propertyReleaser_TabStripController.Init(self, [TabStripController class]);
- _tabArray.reset([[NSMutableArray alloc] initWithCapacity:10]);
- _closingTabs.reset([[NSMutableSet alloc] initWithCapacity:5]);
+ _tabArray = [[NSMutableArray alloc] initWithCapacity:10];
+ _closingTabs = [[NSMutableSet alloc] initWithCapacity:5];
- _tabModel.reset([tabModel retain]);
+ _tabModel = tabModel;
[_tabModel addObserver:self];
_style = style;
@@ -432,7 +431,6 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
[_tabStripView setDelegate:nil];
[_tabStripView setLayoutDelegate:nil];
[_tabModel removeObserver:self];
- [super dealloc];
}
- (id<FullScreenControllerDelegate>)fullscreenDelegate {
@@ -441,12 +439,12 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (void)setFullscreenDelegate:
(id<FullScreenControllerDelegate>)fullscreenDelegate {
- _fullscreenDelegate.reset(fullscreenDelegate);
+ _fullscreenDelegate = fullscreenDelegate;
}
- (void)initializeTabArrayFromTabModel {
DCHECK(_tabModel);
- for (Tab* tab in _tabModel.get()) {
+ for (Tab* tab in _tabModel) {
BOOL isSelectedTab = [_tabModel currentTab] == tab;
TabView* view = [self tabViewForTab:tab isSelected:isSelectedTab];
[_tabArray addObject:view];
@@ -464,8 +462,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
}
- (TabView*)emptyTabView {
- TabView* view =
- [[[TabView alloc] initWithEmptyView:YES selected:YES] autorelease];
+ TabView* view = [[TabView alloc] initWithEmptyView:YES selected:YES];
[view setIncognitoStyle:(_style == TabStrip::kStyleIncognito)];
[view setContentMode:UIViewContentModeRedraw];
@@ -477,8 +474,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
}
- (TabView*)tabViewForTab:(Tab*)tab isSelected:(BOOL)isSelected {
- TabView* view =
- [[[TabView alloc] initWithEmptyView:NO selected:isSelected] autorelease];
+ TabView* view = [[TabView alloc] initWithEmptyView:NO selected:isSelected];
if (UseRTLLayout())
[view setTransform:CGAffineTransformMakeScale(-1, 1)];
[view setIncognitoStyle:(_style == TabStrip::kStyleIncognito)];
@@ -495,10 +491,10 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
forControlEvents:UIControlEventTouchUpInside];
// Install a long press gesture recognizer to handle drag and drop.
- base::scoped_nsobject<UILongPressGestureRecognizer> longPress(
+ UILongPressGestureRecognizer* longPress =
[[UILongPressGestureRecognizer alloc]
initWithTarget:self
- action:@selector(handleLongPress:)]);
+ action:@selector(handleLongPress:)];
[longPress setMinimumPressDuration:kDragAndDropLongPressDuration];
[longPress setDelegate:self];
[view addGestureRecognizer:longPress];
@@ -533,10 +529,10 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// Create the dimming view if it doesn't exist. In all cases, make sure it's
// set up correctly.
- if (_dimmingView.get())
+ if (_dimmingView)
[_dimmingView setFrame:frame];
else
- _dimmingView.reset([[UIView alloc] initWithFrame:frame]);
+ _dimmingView = [[UIView alloc] initWithFrame:frame];
// Enable user interaction in order to eat touches from views behind it.
[_dimmingView setUserInteractionEnabled:YES];
@@ -567,7 +563,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// Do not remove the dimming view if the animation was aborted.
if (finished) {
[_dimmingView removeFromSuperview];
- _dimmingView.reset();
+ _dimmingView = nil;
}
}];
}
@@ -576,7 +572,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (void)recordUserMetrics:(id)sender {
if (sender == _buttonNewTab)
base::RecordAction(UserMetricsAction("MobileTabStripNewTab"));
- else if (sender == _tabSwitcherButton.get())
+ else if (sender == _tabSwitcherButton)
base::RecordAction(UserMetricsAction("MobileTabSwitcherOpen"));
else
LOG(WARNING) << "Trying to record metrics for unknown sender "
@@ -650,7 +646,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (NSUInteger)indexForModelIndex:(NSUInteger)modelIndex {
NSUInteger index = modelIndex;
NSUInteger i = 0;
- for (TabView* tab in _tabArray.get()) {
+ for (TabView* tab in _tabArray) {
if ([_closingTabs containsObject:tab])
++index;
@@ -667,7 +663,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (NSUInteger)modelIndexForIndex:(NSUInteger)index {
NSUInteger modelIndex = 0;
NSUInteger arrayIndex = 0;
- for (TabView* tab in _tabArray.get()) {
+ for (TabView* tab in _tabArray) {
if (arrayIndex == index) {
if ([_closingTabs containsObject:tab])
return NSNotFound;
@@ -710,7 +706,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// Set up initial drag state.
_lastDragLocation = [gesture locationInView:[_tabStripView superview]];
_isReordering = YES;
- _draggedTab.reset([view retain]);
+ _draggedTab = view;
_placeholderGapModelIndex = [self modelIndexForTabView:_draggedTab];
// Update the autoscroll distance and timer.
@@ -785,7 +781,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
_isReordering = NO;
_placeholderGapModelIndex = NSNotFound;
- _draggedTab.reset();
+ _draggedTab = nil;
}
- (BOOL)isReorderingTabs {
@@ -953,8 +949,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
// Reorder the objects in _tabArray to keep in sync with the model ordering.
NSUInteger arrayIndex = [self indexForModelIndex:fromIndex];
- base::scoped_nsobject<TabView> view(
- [[_tabArray objectAtIndex:arrayIndex] retain]);
+ TabView* view = [_tabArray objectAtIndex:arrayIndex];
[_tabArray removeObject:view];
[_tabArray insertObject:view atIndex:toIndex];
[self setNeedsLayoutWithAnimation];
@@ -965,7 +960,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
didChangeActiveTab:(Tab*)newTab
previousTab:(Tab*)previousTab
atIndex:(NSUInteger)modelIndex {
- for (TabView* view in _tabArray.get()) {
+ for (TabView* view in _tabArray) {
[view setSelected:NO];
}
@@ -1032,8 +1027,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
CGRect buttonFrame =
CGRectMake(CGRectGetMaxX(_view.frame) - kTabSwitcherButtonWidth, 0.0,
kTabSwitcherButtonWidth, tabStripHeight);
- _tabSwitcherButton.reset(
- [[UIButton buttonWithType:UIButtonTypeCustom] retain]);
+ _tabSwitcherButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_tabSwitcherButton setTintColor:[UIColor whiteColor]];
[_tabSwitcherButton setFrame:buttonFrame];
[_tabSwitcherButton setContentMode:UIViewContentModeCenter];
@@ -1174,7 +1168,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
NSUInteger numNonClosingTabsToLeft = 0;
NSUInteger i = 0;
- for (TabView* tab in _tabArray.get()) {
+ for (TabView* tab in _tabArray) {
if ([_closingTabs containsObject:tab])
++i;
@@ -1231,7 +1225,7 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
[_tabSwitcherButtonBackgroundView setHidden:YES];
} else {
if (!_tabSwitcherButtonBackgroundView) {
- _tabSwitcherButtonBackgroundView.reset([[UIImageView alloc] init]);
+ _tabSwitcherButtonBackgroundView = [[UIImageView alloc] init];
const CGFloat tabStripHeight = _view.frame.size.height;
const CGRect backgroundViewFrame = CGRectMake(
CGRectGetMaxX(_view.frame) - kTabSwitcherButtonBackgroundWidth, 0.0,
@@ -1555,8 +1549,8 @@ const CGFloat kNewTabButtonBottomOffsetHighRes = 2.0;
- (TabSwitcherTabStripPlaceholderView*)placeholderView {
TabSwitcherTabStripPlaceholderView* placeholderView =
- [[[TabSwitcherTabStripPlaceholderView alloc]
- initWithFrame:self.view.bounds] autorelease];
+ [[TabSwitcherTabStripPlaceholderView alloc]
+ initWithFrame:self.view.bounds];
CGFloat xOffset = [_tabStripView contentOffset].x;
UIView* previousView = nil;
const NSUInteger selectedModelIndex =
« no previous file with comments | « ios/chrome/browser/ui/tabs/BUILD.gn ('k') | ios/chrome/browser/ui/tabs/tab_strip_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698