| Index: ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.mm
|
| diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.mm b/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.mm
|
| index 315ceedc82523c4487b4fe73e70dd33c232b90ad..38ea80526f47f812abd7a0d07f0106af33e32ee6 100644
|
| --- a/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.mm
|
| +++ b/ios/chrome/browser/ui/bookmarks/bookmark_collection_cells.mm
|
| @@ -7,7 +7,8 @@
|
| #import <QuartzCore/QuartzCore.h>
|
|
|
| #include "base/logging.h"
|
| -
|
| +#include "base/mac/objc_property_releaser.h"
|
| +#include "base/mac/scoped_nsobject.h"
|
| #import "ios/chrome/browser/ui/bookmarks/bookmark_extended_button.h"
|
| #import "ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h"
|
| #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
|
| @@ -21,37 +22,38 @@
|
| #import "ui/gfx/ios/NSString+CrStringDrawing.h"
|
| #include "url/gurl.h"
|
|
|
| -#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| -#error "This file requires ARC support."
|
| -#endif
|
| -
|
| namespace {
|
| const CGFloat kBookmarkItemCellDefaultImageSize = 40.0;
|
| const CGFloat kBookmarkFolderCellDefaultImageSize = 24.0;
|
| } // namespace
|
|
|
| -@interface BookmarkCell ()
|
| +@interface BookmarkCell () {
|
| + @protected
|
| + // Subclasses should set these in the constructor with the wanted values.
|
| + CGFloat _imageSize;
|
| +
|
| + @private
|
| + base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkCell;
|
| +}
|
| // Redefined to be read-write.
|
| -@property(nonatomic, strong) UILabel* titleLabel;
|
| +@property(nonatomic, retain) UILabel* titleLabel;
|
| // Redefined to readwrite.
|
| -@property(nonatomic, strong) UIImageView* imageView;
|
| +@property(nonatomic, retain) UIImageView* imageView;
|
| // Label to show placeholder text when there is no image displayed.
|
| -@property(nonatomic, strong) UILabel* placeholderLabel;
|
| +@property(nonatomic, retain) UILabel* placeholderLabel;
|
| // When the cell is selected for editing, a cover is shown with a blue color.
|
| // Subclasses should insert new views below this view.
|
| -@property(nonatomic, strong) UIView* highlightCover;
|
| +@property(nonatomic, retain) UIView* highlightCover;
|
| // Lists the accessibility elements that are to be seen by UIAccessibility.
|
| @property(nonatomic, readonly) NSMutableArray* accessibilityElements;
|
| // Location of the last touch on the cell.
|
| @property(nonatomic, assign) CGPoint touchLocation;
|
| // The view doing the highlight animation. Only set while the cell is
|
| // highlighted.
|
| -@property(nonatomic, strong) MDCInkView* touchFeedbackView;
|
| -@property(nonatomic, strong) BookmarkExtendedButton* button;
|
| +@property(nonatomic, retain) MDCInkView* touchFeedbackView;
|
| +@property(nonatomic, retain) BookmarkExtendedButton* button;
|
| @property(nonatomic, assign) SEL buttonAction;
|
| -@property(nonatomic, weak) id buttonTarget;
|
| -// Side of a square image. Subclasses should set this to desired size.
|
| -@property(nonatomic, assign) CGFloat imageSize;
|
| +@property(nonatomic, assign) id buttonTarget;
|
| @end
|
|
|
| @implementation BookmarkCell
|
| @@ -66,7 +68,6 @@
|
| @synthesize buttonAction = _buttonAction;
|
| @synthesize buttonTarget = _buttonTarget;
|
| @synthesize placeholderLabel = _placeholderLabel;
|
| -@synthesize imageSize = _imageSize;
|
|
|
| + (NSString*)reuseIdentifier {
|
| NOTREACHED();
|
| @@ -76,6 +77,7 @@
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| self = [super initWithFrame:frame];
|
| if (self) {
|
| + _propertyReleaser_BookmarkCell.Init(self, [BookmarkCell class]);
|
| self.exclusiveTouch = YES;
|
| self.backgroundColor = [UIColor whiteColor];
|
|
|
| @@ -100,7 +102,8 @@
|
| _highlightCover.translatesAutoresizingMaskIntoConstraints = NO;
|
| [self.contentView addSubview:_highlightCover];
|
|
|
| - self.button = [[BookmarkExtendedButton alloc] init];
|
| + self.button = base::scoped_nsobject<BookmarkExtendedButton>(
|
| + [[BookmarkExtendedButton alloc] init]);
|
| self.button.contentMode = UIViewContentModeCenter;
|
| self.button.backgroundColor = [UIColor clearColor];
|
| [self.button addTarget:self
|
| @@ -124,7 +127,7 @@
|
| }
|
|
|
| - (void)updateConstraints {
|
| - if (self.imageSize) {
|
| + if (_imageSize) {
|
| // Create constraints.
|
|
|
| // Align all the views on the same horizontal line.
|
| @@ -149,10 +152,10 @@
|
| @"highlight" : self.highlightCover
|
| },
|
| @{
|
| - @"buttonSize" :@32.0,
|
| - @"leadingImageMargin" : @16.0,
|
| - @"leadingMargin" : @64.0,
|
| - @"imageSize" : @(self.imageSize),
|
| + @"buttonSize" : [NSNumber numberWithFloat:32.0],
|
| + @"leadingImageMargin" : [NSNumber numberWithFloat:16.0],
|
| + @"leadingMargin" : [NSNumber numberWithFloat:64.0],
|
| + @"imageSize" : [NSNumber numberWithFloat:_imageSize],
|
| },
|
| self.contentView);
|
| // clang-format on
|
| @@ -244,8 +247,8 @@
|
|
|
| if (highlighted) {
|
| // Creates an ink feedback and animates it.
|
| - MDCInkView* touchFeedbackView =
|
| - [[MDCInkView alloc] initWithFrame:self.bounds];
|
| + base::scoped_nsobject<MDCInkView> touchFeedbackView(
|
| + [[MDCInkView alloc] initWithFrame:self.bounds]);
|
| [self addSubview:touchFeedbackView];
|
| self.touchFeedbackView = touchFeedbackView;
|
| [self.touchFeedbackView startTouchBeganAnimationAtPoint:self.touchLocation
|
| @@ -269,12 +272,9 @@
|
| }
|
|
|
| - (void)buttonTapped:(id)target {
|
| -#pragma clang diagnostic push
|
| -#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
|
| [self.buttonTarget performSelector:self.buttonAction
|
| withObject:self
|
| withObject:target];
|
| -#pragma clang diagnostic pop
|
| }
|
|
|
| - (void)showButtonOfType:(bookmark_cell::ButtonType)buttonType
|
| @@ -355,6 +355,11 @@
|
|
|
| #pragma mark - BookmarkItemCell
|
|
|
| +@interface BookmarkItemCell () {
|
| + base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkItemCell;
|
| +}
|
| +@end
|
| +
|
| @implementation BookmarkItemCell
|
|
|
| + (NSString*)reuseIdentifier {
|
| @@ -368,13 +373,15 @@
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| self = [super initWithFrame:frame];
|
| if (self) {
|
| + _propertyReleaser_BookmarkItemCell.Init(self, [BookmarkItemCell class]);
|
| +
|
| // Set the non-layout properties of the titles.
|
| UIFont* font = [MDCTypography subheadFont];
|
| self.titleLabel.font = font;
|
| self.titleLabel.backgroundColor = [UIColor clearColor];
|
| self.titleLabel.numberOfLines = 1;
|
|
|
| - self.imageSize = kBookmarkItemCellDefaultImageSize;
|
| + _imageSize = kBookmarkItemCellDefaultImageSize;
|
| }
|
| return self;
|
| }
|
| @@ -399,6 +406,13 @@
|
| @end
|
|
|
| #pragma mark - BookmarkFolderCell
|
| +
|
| +@interface BookmarkFolderCell () {
|
| + base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkFolderCell;
|
| +}
|
| +
|
| +@end
|
| +
|
| @implementation BookmarkFolderCell
|
|
|
| + (NSString*)reuseIdentifier {
|
| @@ -408,10 +422,12 @@
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| self = [super initWithFrame:frame];
|
| if (self) {
|
| + _propertyReleaser_BookmarkFolderCell.Init(self, [BookmarkFolderCell class]);
|
| +
|
| self.imageView.image = [UIImage imageNamed:@"bookmark_gray_folder"];
|
| self.titleLabel.font = [MDCTypography subheadFont];
|
|
|
| - self.imageSize = kBookmarkFolderCellDefaultImageSize;
|
| + _imageSize = kBookmarkFolderCellDefaultImageSize;
|
| }
|
| return self;
|
| }
|
| @@ -432,13 +448,14 @@
|
|
|
| #pragma mark - BookmarkHeaderView
|
|
|
| -@interface BookmarkHeaderView ()
|
| -@property(nonatomic, strong) UILabel* titleLabel;
|
| +@interface BookmarkHeaderView () {
|
| + base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkHeaderView;
|
| +}
|
| +@property(nonatomic, retain) UILabel* titleLabel;
|
| @end
|
|
|
| @implementation BookmarkHeaderView
|
| @synthesize titleLabel = _titleLabel;
|
| -
|
| + (NSString*)reuseIdentifier {
|
| return @"BookmarkHeaderView";
|
| }
|
| @@ -450,7 +467,9 @@
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| self = [super initWithFrame:frame];
|
| if (self) {
|
| - UILabel* titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
|
| + _propertyReleaser_BookmarkHeaderView.Init(self, [BookmarkHeaderView class]);
|
| + base::scoped_nsobject<UILabel> titleLabel(
|
| + [[UILabel alloc] initWithFrame:CGRectZero]);
|
| self.titleLabel = titleLabel;
|
| UIFont* font = [MDCTypography body2Font];
|
| self.titleLabel.font = font;
|
| @@ -488,9 +507,11 @@
|
|
|
| #pragma mark - BookmarkHeaderSeparatorView
|
|
|
| -@interface BookmarkHeaderSeparatorView ()
|
| +@interface BookmarkHeaderSeparatorView () {
|
| + base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkHeaderSeparatorView;
|
| +}
|
| // The bottom separator line.
|
| -@property(nonatomic, strong) UIView* lineView;
|
| +@property(nonatomic, retain) UIView* lineView;
|
| @end
|
|
|
| @implementation BookmarkHeaderSeparatorView
|
| @@ -508,6 +529,8 @@
|
| - (instancetype)initWithFrame:(CGRect)frame {
|
| self = [super initWithFrame:frame];
|
| if (self) {
|
| + _propertyReleaser_BookmarkHeaderSeparatorView.Init(
|
| + self, [BookmarkHeaderSeparatorView class]);
|
| _lineView = [[UIView alloc] init];
|
| _lineView.backgroundColor = bookmark_utils_ios::separatorColor();
|
| [self addSubview:_lineView];
|
|
|