Index: ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm |
index f742137fe58c010c30415151cfe5b908abc115d0..96a88858ed36cc44acd1f870da1d4a675c70f7ad 100644 |
--- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm |
@@ -9,11 +9,13 @@ |
#include "base/auto_reset.h" |
#include "base/ios/block_types.h" |
+#include "base/ios/weak_nsobject.h" |
#include "base/logging.h" |
#include "base/mac/bind_objc_block.h" |
#import "base/mac/foundation_util.h" |
- |
+#include "base/mac/objc_property_releaser.h" |
#include "base/mac/scoped_cftyperef.h" |
+#include "base/mac/scoped_nsobject.h" |
#include "base/strings/sys_string_conversions.h" |
#include "components/bookmarks/browser/bookmark_model.h" |
#include "components/url_formatter/url_fixer.h" |
@@ -43,10 +45,6 @@ |
#include "ui/gfx/image/image.h" |
#include "url/gurl.h" |
-#if !defined(__has_feature) || !__has_feature(objc_arc) |
-#error "This file requires ARC support." |
-#endif |
- |
using bookmarks::BookmarkModel; |
using bookmarks::BookmarkNode; |
@@ -80,6 +78,8 @@ |
BOOL _ignoresBookmarkModelChanges; |
std::unique_ptr<bookmarks::BookmarkModelBridge> _modelBridge; |
+ |
+ base::mac::ObjCPropertyReleaser _propertyReleaser_BookmarkEditViewController; |
} |
// The bookmark this controller displays or edits. |
@@ -97,20 +97,20 @@ |
// The folder picker view controller. |
// Redefined to be readwrite. |
-@property(nonatomic, strong) BookmarkFolderViewController* folderViewController; |
+@property(nonatomic, retain) BookmarkFolderViewController* folderViewController; |
@property(nonatomic, assign) ios::ChromeBrowserState* browserState; |
// Cancel button item in navigation bar. |
-@property(nonatomic, strong) UIBarButtonItem* cancelItem; |
+@property(nonatomic, retain) UIBarButtonItem* cancelItem; |
// Done button item in navigation bar. |
-@property(nonatomic, strong) UIBarButtonItem* doneItem; |
+@property(nonatomic, retain) UIBarButtonItem* doneItem; |
// CollectionViewItem-s from the collection. |
-@property(nonatomic, strong) BookmarkTextFieldItem* nameItem; |
-@property(nonatomic, strong) BookmarkParentFolderItem* folderItem; |
-@property(nonatomic, strong) BookmarkTextFieldItem* URLItem; |
+@property(nonatomic, retain) BookmarkTextFieldItem* nameItem; |
+@property(nonatomic, retain) BookmarkParentFolderItem* folderItem; |
+@property(nonatomic, retain) BookmarkTextFieldItem* URLItem; |
// Reports the changes to the delegate, that has the responsibility to save the |
// bookmark. |
@@ -168,6 +168,8 @@ |
DCHECK(browserState); |
self = [super initWithStyle:CollectionViewControllerStyleAppBar]; |
if (self) { |
+ _propertyReleaser_BookmarkEditViewController.Init( |
+ self, [BookmarkEditViewController class]); |
DCHECK(!bookmark->is_folder()); |
DCHECK(!browserState->IsOffTheRecord()); |
_bookmark = bookmark; |
@@ -187,6 +189,7 @@ |
- (void)dealloc { |
_folderViewController.delegate = nil; |
+ [super dealloc]; |
} |
#pragma mark View lifecycle |
@@ -208,34 +211,36 @@ |
self.navigationItem.leftBarButtonItem = cancelItem; |
self.cancelItem = cancelItem; |
- UIBarButtonItem* doneItem = [[UIBarButtonItem alloc] |
+ base::scoped_nsobject<UIBarButtonItem> doneItem([[UIBarButtonItem alloc] |
initWithTitle:l10n_util::GetNSString(IDS_IOS_BOOKMARK_DONE_BUTTON) |
style:UIBarButtonItemStylePlain |
target:self |
- action:@selector(save)]; |
- doneItem.accessibilityIdentifier = @"Done"; |
+ action:@selector(save)]); |
+ doneItem.get().accessibilityIdentifier = @"Done"; |
self.navigationItem.rightBarButtonItem = doneItem; |
self.doneItem = doneItem; |
- BookmarksElevatedToolbar* buttonBar = [[BookmarksElevatedToolbar alloc] init]; |
- UIBarButtonItem* deleteItem = [[UIBarButtonItem alloc] |
+ base::scoped_nsobject<BookmarksElevatedToolbar> buttonBar( |
+ [[BookmarksElevatedToolbar alloc] init]); |
+ base::scoped_nsobject<UIBarButtonItem> deleteItem([[UIBarButtonItem alloc] |
initWithTitle:l10n_util::GetNSString(IDS_IOS_BOOKMARK_DELETE) |
style:UIBarButtonItemStylePlain |
target:self |
- action:@selector(deleteBookmark)]; |
- deleteItem.accessibilityIdentifier = @"Delete_action"; |
+ action:@selector(deleteBookmark)]); |
+ deleteItem.get().accessibilityIdentifier = @"Delete_action"; |
[deleteItem setTitleTextAttributes:@{ |
NSForegroundColorAttributeName : [UIColor blackColor] |
} |
forState:UIControlStateNormal]; |
- [buttonBar.layer addSublayer:[[MDCShadowLayer alloc] init]]; |
- buttonBar.shadowElevation = MDCShadowElevationSearchBarResting; |
- buttonBar.backgroundColor = [UIColor whiteColor]; |
- buttonBar.items = @[ deleteItem ]; |
+ [buttonBar.get().layer |
+ addSublayer:[[[MDCShadowLayer alloc] init] autorelease]]; |
+ buttonBar.get().shadowElevation = MDCShadowElevationSearchBarResting; |
+ buttonBar.get().backgroundColor = [UIColor whiteColor]; |
+ buttonBar.get().items = @[ deleteItem ]; |
[self.view addSubview:buttonBar]; |
// Constraint |buttonBar| to be in bottom |
- buttonBar.translatesAutoresizingMaskIntoConstraints = NO; |
+ buttonBar.get().translatesAutoresizingMaskIntoConstraints = NO; |
[self.view addConstraints: |
[NSLayoutConstraint |
constraintsWithVisualFormat:@"H:|[buttonBar]|" |
@@ -343,7 +348,8 @@ |
[model addSectionWithIdentifier:SectionIdentifierInfo]; |
- self.nameItem = [[BookmarkTextFieldItem alloc] initWithType:ItemTypeName]; |
+ self.nameItem = |
+ [[[BookmarkTextFieldItem alloc] initWithType:ItemTypeName] autorelease]; |
self.nameItem.accessibilityIdentifier = @"Title Field"; |
self.nameItem.placeholder = |
l10n_util::GetNSString(IDS_IOS_BOOKMARK_NAME_FIELD_HEADER); |
@@ -351,12 +357,13 @@ |
self.nameItem.delegate = self; |
[model addItem:self.nameItem toSectionWithIdentifier:SectionIdentifierInfo]; |
- self.folderItem = |
- [[BookmarkParentFolderItem alloc] initWithType:ItemTypeFolder]; |
+ self.folderItem = [[[BookmarkParentFolderItem alloc] |
+ initWithType:ItemTypeFolder] autorelease]; |
self.folderItem.title = bookmark_utils_ios::TitleForBookmarkNode(self.folder); |
[model addItem:self.folderItem toSectionWithIdentifier:SectionIdentifierInfo]; |
- self.URLItem = [[BookmarkTextFieldItem alloc] initWithType:ItemTypeURL]; |
+ self.URLItem = |
+ [[[BookmarkTextFieldItem alloc] initWithType:ItemTypeURL] autorelease]; |
self.URLItem.accessibilityIdentifier = @"URL Field"; |
self.URLItem.placeholder = |
l10n_util::GetNSString(IDS_IOS_BOOKMARK_URL_FIELD_HEADER); |
@@ -403,14 +410,14 @@ |
std::set<const BookmarkNode*> editedNodes; |
editedNodes.insert(self.bookmark); |
- BookmarkFolderViewController* folderViewController = |
+ base::scoped_nsobject<BookmarkFolderViewController> folderViewController( |
[[BookmarkFolderViewController alloc] |
initWithBookmarkModel:self.bookmarkModel |
allowsNewFolders:YES |
editedNodes:editedNodes |
allowsCancel:NO |
- selectedFolder:self.folder]; |
- folderViewController.delegate = self; |
+ selectedFolder:self.folder]); |
+ folderViewController.get().delegate = self; |
self.folderViewController = folderViewController; |
[self.navigationController pushViewController:self.folderViewController |
@@ -576,7 +583,7 @@ |
#pragma mark - UIResponder |
- (NSArray*)keyCommands { |
- __weak BookmarkEditViewController* weakSelf = self; |
+ base::WeakNSObject<BookmarkEditViewController> weakSelf(self); |
return @[ [UIKeyCommand cr_keyCommandWithInput:UIKeyInputEscape |
modifierFlags:Cr_UIKeyModifierNone |
title:nil |