Index: ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm |
index e12d250be5d540501ce2fe629649074a121e0836..da55fb7293bae425573755d151ef387d1cc364f5 100644 |
--- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm |
@@ -7,7 +7,10 @@ |
#include <memory> |
#include <vector> |
+#import "base/ios/weak_nsobject.h" |
#include "base/logging.h" |
+#include "base/mac/objc_property_releaser.h" |
+#include "base/mac/scoped_nsobject.h" |
#include "base/strings/sys_string_conversions.h" |
#include "components/bookmarks/browser/bookmark_model.h" |
#import "ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h" |
@@ -21,10 +24,6 @@ |
#import "ios/third_party/material_components_ios/src/components/AppBar/src/MaterialAppBar.h" |
#include "ui/base/l10n/l10n_util_mac.h" |
-#if !defined(__has_feature) || !__has_feature(objc_arc) |
-#error "This file requires ARC support." |
-#endif |
- |
using bookmarks::BookmarkNode; |
namespace { |
@@ -55,7 +54,9 @@ |
std::set<const BookmarkNode*> _editedNodes; |
std::vector<const BookmarkNode*> _folders; |
std::unique_ptr<bookmarks::BookmarkModelBridge> _modelBridge; |
- MDCAppBar* _appBar; |
+ base::scoped_nsobject<MDCAppBar> _appBar; |
+ base::mac::ObjCPropertyReleaser |
+ _propertyReleaser_BookmarkFolderViewController; |
} |
// Should the controller setup Cancel and Done buttons instead of a back button. |
@@ -71,7 +72,7 @@ |
@property(nonatomic, readonly) const BookmarkNode* selectedFolder; |
// The view controller to present when creating a new folder. |
-@property(nonatomic, strong) |
+@property(nonatomic, retain) |
BookmarkFolderEditorViewController* folderAddController; |
// A linear list of folders. |
@@ -79,7 +80,7 @@ |
const std::vector<const BookmarkNode*>& folders; |
// The table view that displays the options and folders. |
-@property(nonatomic, strong) UITableView* tableView; |
+@property(nonatomic, retain) UITableView* tableView; |
// Returns the cell for the default section and the given |row|. |
- (BookmarkFolderTableViewCell*)defaultSectionCellForRow:(NSInteger)row; |
@@ -125,6 +126,8 @@ |
DCHECK(selectedFolder == NULL || selectedFolder->is_folder()); |
self = [super initWithNibName:nil bundle:nil]; |
if (self) { |
+ _propertyReleaser_BookmarkFolderViewController.Init( |
+ self, [BookmarkFolderViewController class]); |
_allowsCancel = allowsCancel; |
_allowsNewFolders = allowsNewFolders; |
_bookmarkModel = bookmarkModel; |
@@ -135,7 +138,7 @@ |
_modelBridge.reset( |
new bookmarks::BookmarkModelBridge(self, _bookmarkModel)); |
- _appBar = [[MDCAppBar alloc] init]; |
+ _appBar.reset([[MDCAppBar alloc] init]); |
[self addChildViewController:[_appBar headerViewController]]; |
} |
return self; |
@@ -152,6 +155,7 @@ |
_tableView.dataSource = nil; |
_tableView.delegate = nil; |
_folderAddController.delegate = nil; |
+ [super dealloc]; |
} |
- (UIStatusBarStyle)preferredStatusBarStyle { |
@@ -170,13 +174,13 @@ |
self.title = l10n_util::GetNSString(IDS_IOS_BOOKMARK_CHOOSE_GROUP_BUTTON); |
- UIBarButtonItem* doneItem = [[UIBarButtonItem alloc] |
+ base::scoped_nsobject<UIBarButtonItem> doneItem([[UIBarButtonItem alloc] |
initWithTitle:l10n_util::GetNSString( |
IDS_IOS_BOOKMARK_EDIT_MODE_EXIT_MOBILE) |
style:UIBarButtonItemStylePlain |
target:self |
- action:@selector(done:)]; |
- doneItem.accessibilityIdentifier = @"Done"; |
+ action:@selector(done:)]); |
+ doneItem.get().accessibilityIdentifier = @"Done"; |
self.navigationItem.rightBarButtonItem = doneItem; |
if (self.allowsCancel) { |
@@ -200,14 +204,14 @@ |
} |
// The table view. |
- UITableView* tableView = |
- [[UITableView alloc] initWithFrame:self.view.bounds |
- style:UITableViewStylePlain]; |
- tableView.dataSource = self; |
- tableView.delegate = self; |
- tableView.autoresizingMask = |
+ base::scoped_nsobject<UITableView> tableView([[UITableView alloc] |
+ initWithFrame:self.view.bounds |
+ style:UITableViewStylePlain]); |
+ tableView.get().dataSource = self; |
+ tableView.get().delegate = self; |
+ tableView.get().autoresizingMask = |
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; |
- tableView.separatorStyle = UITableViewCellSeparatorStyleNone; |
+ tableView.get().separatorStyle = UITableViewCellSeparatorStyleNone; |
[self.view addSubview:tableView]; |
[self.view sendSubviewToBack:tableView]; |
self.tableView = tableView; |
@@ -333,16 +337,18 @@ |
CGRect headerViewFrame = |
CGRectMake(0, 0, CGRectGetWidth(tableView.frame), |
[self tableView:tableView heightForHeaderInSection:section]); |
- UIView* headerView = [[UIView alloc] initWithFrame:headerViewFrame]; |
+ UIView* headerView = |
+ [[[UIView alloc] initWithFrame:headerViewFrame] autorelease]; |
if (section == BookmarkFolderSectionFolders && |
[self shouldShowDefaultSection]) { |
CGRect separatorFrame = |
CGRectMake(0, 0, CGRectGetWidth(headerView.bounds), |
1.0 / [[UIScreen mainScreen] scale]); // 1-pixel divider. |
- UIView* separator = [[UIView alloc] initWithFrame:separatorFrame]; |
- separator.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | |
- UIViewAutoresizingFlexibleWidth; |
- separator.backgroundColor = bookmark_utils_ios::separatorColor(); |
+ base::scoped_nsobject<UIView> separator( |
+ [[UIView alloc] initWithFrame:separatorFrame]); |
+ separator.get().autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | |
+ UIViewAutoresizingFlexibleWidth; |
+ separator.get().backgroundColor = bookmark_utils_ios::separatorColor(); |
[headerView addSubview:separator]; |
} |
return headerView; |
@@ -363,7 +369,7 @@ |
- (UIView*)tableView:(UITableView*)tableView |
viewForFooterInSection:(NSInteger)section { |
- return [[UIView alloc] init]; |
+ return [[[UIView alloc] init] autorelease]; |
} |
- (void)tableView:(UITableView*)tableView |
@@ -532,15 +538,16 @@ |
- (void)delayedNotifyDelegateOfSelection { |
self.view.userInteractionEnabled = NO; |
- __weak BookmarkFolderViewController* weakSelf = self; |
+ base::WeakNSObject<BookmarkFolderViewController> weakSelf(self); |
dispatch_after( |
dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), |
dispatch_get_main_queue(), ^{ |
- BookmarkFolderViewController* strongSelf = weakSelf; |
+ base::scoped_nsobject<BookmarkFolderViewController> strongSelf( |
+ [weakSelf retain]); |
// Early return if the controller has been deallocated. |
if (!strongSelf) |
return; |
- strongSelf.view.userInteractionEnabled = YES; |
+ strongSelf.get().view.userInteractionEnabled = YES; |
[strongSelf done:nil]; |
}); |
} |