Index: ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
index d2775972ace86cfc3fb0c1a33b95f3b50b99150b..d4f86162b7bdd75eed75b111b29db1239efb66d7 100644 |
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_tablet_ntp_controller.mm |
@@ -7,10 +7,7 @@ |
#include <memory> |
#include "base/ios/block_types.h" |
-#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/metrics/user_metrics.h" |
#include "base/metrics/user_metrics_action.h" |
#include "base/strings/sys_string_conversions.h" |
@@ -46,6 +43,10 @@ |
#include "ui/base/l10n/l10n_util_mac.h" |
#include "ui/base/page_transition_types.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
using bookmarks::BookmarkNode; |
namespace { |
@@ -61,7 +62,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
@end |
@interface ContentView : UIView |
-@property(nonatomic, assign) id<ContentViewDelegate> delegate; |
+@property(nonatomic, weak) id<ContentViewDelegate> delegate; |
@end |
@implementation ContentView |
@@ -85,7 +86,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
// Bridge to register for bookmark changes. |
std::unique_ptr<bookmarks::BookmarkModelBridge> _bridge; |
ios::ChromeBrowserState* _browserState; // Weak. |
- id<UrlLoader> _loader; // Weak. |
+ __weak id<UrlLoader> _loader; |
// The following 2 ivars both represent the set of nodes being edited. |
// The set is for fast lookup. |
@@ -94,19 +95,16 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
// DO NOT modify these two ivars directly. |
std::set<const BookmarkNode*> _editNodes; |
std::vector<const BookmarkNode*> _editNodesOrdered; |
- |
- base::mac::ObjCPropertyReleaser |
- _propertyReleaser_BookmarkHomeTabletNTPController; |
} |
-@property(nonatomic, retain) BookmarkPanelView* panelView; |
+@property(nonatomic, strong) BookmarkPanelView* panelView; |
#pragma mark - Properties and methods akin to BookmarkHomeViewController |
// Whether the view controller is in editing mode. |
@property(nonatomic, assign) BOOL editing; |
// The set of edited index paths. |
-@property(nonatomic, retain) NSMutableArray* editIndexPaths; |
+@property(nonatomic, strong) NSMutableArray* editIndexPaths; |
// The bookmark model used. |
@property(nonatomic, assign, readonly) bookmarks::BookmarkModel* bookmarks; |
// The user's browser state model used. |
@@ -128,44 +126,44 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
// This views holds the primary content of this controller. At any point in |
// time, it contains exactly one of the BookmarkCollectionView subclasses. |
-@property(nonatomic, retain) ContentView* contentView; |
+@property(nonatomic, strong) ContentView* contentView; |
// The possible views that can be shown from the menu. |
-@property(nonatomic, retain) BookmarkFolderCollectionView* folderView; |
+@property(nonatomic, strong) BookmarkFolderCollectionView* folderView; |
// This view is created and used if the model is not fully loaded yet by the |
// time this controller starts. |
-@property(nonatomic, retain) BookmarkHomeWaitingView* waitForModelView; |
+@property(nonatomic, strong) BookmarkHomeWaitingView* waitForModelView; |
// The menu with all the folders and special entries. |
-@property(nonatomic, retain) BookmarkMenuView* menuView; |
+@property(nonatomic, strong) BookmarkMenuView* menuView; |
// At any point in time, there is exactly one collection view whose view is part |
// of the view hierarchy. This property determines which collection view is |
// visible. Not by accident, this property also reflects the selected menu item |
// in the BookmarkMenuView. |
-@property(nonatomic, retain) BookmarkMenuItem* primaryMenuItem; |
+@property(nonatomic, strong) BookmarkMenuItem* primaryMenuItem; |
// When the view is first shown on the screen, this property represents the |
// cached value of the y of the content offset of the primary view. This |
// property is set to nil after it is used. |
-@property(nonatomic, retain) |
+@property(nonatomic, strong) |
NSNumber* cachedContentPosition; // FIXME: INACTIVE |
// The navigation bar sits on top of the main content. |
-@property(nonatomic, retain) BookmarkNavigationBar* navigationBar; |
+@property(nonatomic, strong) BookmarkNavigationBar* navigationBar; |
// The editing bar present when items are selected. |
-@property(nonatomic, retain) BookmarkEditingBar* editingBar; |
+@property(nonatomic, strong) BookmarkEditingBar* editingBar; |
// The action sheet coordinator used when trying to edit a single bookmark. |
-@property(nonatomic, retain) ActionSheetCoordinator* actionSheetCoordinator; |
+@property(nonatomic, strong) ActionSheetCoordinator* actionSheetCoordinator; |
// The view controller used to view and edit a single bookmark. |
-@property(nonatomic, retain) BookmarkEditViewController* editViewController; |
+@property(nonatomic, strong) BookmarkEditViewController* editViewController; |
// The view controller used to pick a folder in which to move the selected |
// bookmarks. |
-@property(nonatomic, retain) BookmarkFolderViewController* folderSelector; |
+@property(nonatomic, strong) BookmarkFolderViewController* folderSelector; |
// The view controller to present when editing the current folder. |
-@property(nonatomic, retain) |
+@property(nonatomic, strong) |
BookmarkFolderEditorViewController* folderEditor; // FIX |
// The controller managing the display of the promo cell and the promo view |
// controller. |
-@property(nonatomic, retain) BookmarkPromoController* bookmarkPromoController; |
+@property(nonatomic, strong) BookmarkPromoController* bookmarkPromoController; |
#pragma mark Specific to this class. |
@@ -307,8 +305,6 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
DCHECK(browserState); |
_browserState = browserState->GetOriginalChromeBrowserState(); |
_loader = loader; |
- _propertyReleaser_BookmarkHomeTabletNTPController.Init( |
- self, [BookmarkHomeTabletNTPController class]); |
_bookmarks = ios::BookmarkModelFactory::GetForBrowserState(_browserState); |
_bridge.reset(new bookmarks::BookmarkModelBridge(self, _bookmarks)); |
@@ -331,8 +327,6 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
_editViewController.delegate = nil; |
_folderSelector.delegate = nil; |
- |
- [super dealloc]; |
} |
- (ios::ChromeBrowserState*)browserState { |
@@ -446,8 +440,8 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
DCHECK(self.contentView); |
// Present a waiting view. |
- base::scoped_nsobject<BookmarkHomeWaitingView> waitingView( |
- [[BookmarkHomeWaitingView alloc] initWithFrame:self.view.bounds]); |
+ BookmarkHomeWaitingView* waitingView = |
+ [[BookmarkHomeWaitingView alloc] initWithFrame:self.view.bounds]; |
self.waitForModelView = waitingView; |
[self.view addSubview:self.waitForModelView]; |
[self.waitForModelView startWaiting]; |
@@ -467,10 +461,9 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
LayoutRect menuLayout = |
LayoutRectMake(0, self.view.bounds.size.width, 0, self.menuWidth, |
self.view.bounds.size.height); |
- self.menuView = |
- base::scoped_nsobject<BookmarkMenuView>([[BookmarkMenuView alloc] |
- initWithBrowserState:self.browserState |
- frame:LayoutRectGetRect(menuLayout)]); |
+ self.menuView = [[BookmarkMenuView alloc] |
+ initWithBrowserState:self.browserState |
+ frame:LayoutRectGetRect(menuLayout)]; |
self.menuView.delegate = self; |
self.menuView.autoresizingMask = UIViewAutoresizingFlexibleHeight; |
@@ -505,10 +498,9 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
if (self.folderView) |
return; |
- base::scoped_nsobject<BookmarkFolderCollectionView> view( |
- [[BookmarkFolderCollectionView alloc] |
- initWithBrowserState:self.browserState |
- frame:CGRectZero]); |
+ BookmarkFolderCollectionView* view = [[BookmarkFolderCollectionView alloc] |
+ initWithBrowserState:self.browserState |
+ frame:CGRectZero]; |
self.folderView = view; |
self.folderView.delegate = self; |
[self.folderView setEditing:self.editing animated:NO]; |
@@ -581,9 +573,9 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
if ([self shouldPresentMenuInSlideInPanel]) { |
// Create (if needed), and add the panelView to the view hierarchy. |
if (!self.panelView) { |
- self.panelView = base::scoped_nsobject<BookmarkPanelView>( |
+ self.panelView = |
[[BookmarkPanelView alloc] initWithFrame:CGRectZero |
- menuViewWidth:[self menuWidth]]); |
+ menuViewWidth:[self menuWidth]]; |
} |
[self.view addSubview:self.panelView]; |
CGSize size = self.contentView.bounds.size; |
@@ -636,8 +628,8 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
} |
if (!self.editingBar) { |
- self.editingBar = base::scoped_nsobject<BookmarkEditingBar>( |
- [[BookmarkEditingBar alloc] initWithFrame:[self editingBarFrame]]); |
+ self.editingBar = |
+ [[BookmarkEditingBar alloc] initWithFrame:[self editingBarFrame]]; |
[self.editingBar setCancelTarget:self action:@selector(editingBarCancel)]; |
[self.editingBar setDeleteTarget:self action:@selector(editingBarDelete)]; |
[self.editingBar setMoveTarget:self action:@selector(editingBarMove)]; |
@@ -821,20 +813,20 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
forCell:(BookmarkItemCell*)cell { |
DCHECK(!self.editViewController); |
DCHECK(!self.actionSheetCoordinator); |
- self.actionSheetCoordinator = [[[ActionSheetCoordinator alloc] |
+ self.actionSheetCoordinator = [[ActionSheetCoordinator alloc] |
initWithBaseViewController:self.view.window.rootViewController |
title:nil |
message:nil |
rect:view.bounds |
- view:view] autorelease]; |
- base::WeakNSObject<BookmarkHomeTabletNTPController> weakSelf(self); |
+ view:view]; |
+ __weak BookmarkHomeTabletNTPController* weakSelf = self; |
// Select action. |
[self.actionSheetCoordinator |
addItemWithTitle:l10n_util::GetNSString(IDS_IOS_BOOKMARK_ACTION_SELECT) |
action:^{ |
[weakSelf selectFirstNode:node withCell:cell]; |
- weakSelf.get().actionSheetCoordinator = nil; |
+ weakSelf.actionSheetCoordinator = nil; |
} |
style:UIAlertActionStyleDefault]; |
@@ -846,7 +838,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
if ([cell isKindOfClass:[BookmarkItemCell class]]) |
itemCell = static_cast<BookmarkItemCell*>(cell); |
[weakSelf editNode:node withCell:itemCell]; |
- weakSelf.get().actionSheetCoordinator = nil; |
+ weakSelf.actionSheetCoordinator = nil; |
} |
style:UIAlertActionStyleDefault]; |
@@ -857,7 +849,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
std::set<const BookmarkNode*> nodes; |
nodes.insert(node); |
[weakSelf moveNodes:nodes]; |
- weakSelf.get().actionSheetCoordinator = nil; |
+ weakSelf.actionSheetCoordinator = nil; |
} |
style:UIAlertActionStyleDefault]; |
@@ -868,7 +860,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
std::set<const BookmarkNode*> nodes; |
nodes.insert(node); |
[weakSelf deleteNodes:nodes]; |
- weakSelf.get().actionSheetCoordinator = nil; |
+ weakSelf.actionSheetCoordinator = nil; |
} |
style:UIAlertActionStyleDestructive]; |
@@ -876,7 +868,7 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
[self.actionSheetCoordinator |
addItemWithTitle:l10n_util::GetNSString(IDS_CANCEL) |
action:^{ |
- weakSelf.get().actionSheetCoordinator = nil; |
+ weakSelf.actionSheetCoordinator = nil; |
} |
style:UIAlertActionStyleCancel]; |
@@ -926,18 +918,17 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
self.folderEditor = folderEditor; |
editorController = folderEditor; |
} else { |
- base::scoped_nsobject<BookmarkEditViewController> controller([ |
- [BookmarkEditViewController alloc] initWithBookmark:node |
- browserState:self.browserState]); |
+ BookmarkEditViewController* controller = |
+ [[BookmarkEditViewController alloc] initWithBookmark:node |
+ browserState:self.browserState]; |
self.editViewController = controller; |
self.editViewController.delegate = self; |
editorController = self.editViewController; |
} |
DCHECK(editorController); |
- base::scoped_nsobject<UINavigationController> navController( |
- [[BookmarkNavigationController alloc] |
- initWithRootViewController:editorController]); |
- navController.get().modalPresentationStyle = UIModalPresentationFormSheet; |
+ UINavigationController* navController = [[BookmarkNavigationController alloc] |
+ initWithRootViewController:editorController]; |
+ navController.modalPresentationStyle = UIModalPresentationFormSheet; |
[self.view.window.rootViewController presentViewController:navController |
animated:YES |
completion:NULL]; |
@@ -948,18 +939,16 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
DCHECK(nodes.size() > 0); |
const BookmarkNode* editedNode = *(nodes.begin()); |
const BookmarkNode* selectedFolder = editedNode->parent(); |
- self.folderSelector = base::scoped_nsobject<BookmarkFolderViewController>( |
- [[BookmarkFolderViewController alloc] |
- initWithBookmarkModel:self.bookmarks |
- allowsNewFolders:YES |
- editedNodes:nodes |
- allowsCancel:YES |
- selectedFolder:selectedFolder]); |
+ self.folderSelector = [[BookmarkFolderViewController alloc] |
+ initWithBookmarkModel:self.bookmarks |
+ allowsNewFolders:YES |
+ editedNodes:nodes |
+ allowsCancel:YES |
+ selectedFolder:selectedFolder]; |
self.folderSelector.delegate = self; |
- base::scoped_nsobject<UINavigationController> controller( |
- [[BookmarkNavigationController alloc] |
- initWithRootViewController:self.folderSelector]); |
- controller.get().modalPresentationStyle = UIModalPresentationFormSheet; |
+ UINavigationController* controller = [[BookmarkNavigationController alloc] |
+ initWithRootViewController:self.folderSelector]; |
+ controller.modalPresentationStyle = UIModalPresentationFormSheet; |
[self.view.window.rootViewController presentViewController:controller |
animated:YES |
completion:NULL]; |
@@ -1140,10 +1129,10 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
folderEditor.delegate = self; |
self.folderEditor = folderEditor; |
- base::scoped_nsobject<BookmarkNavigationController> navController( |
+ BookmarkNavigationController* navController = |
[[BookmarkNavigationController alloc] |
- initWithRootViewController:self.folderEditor]); |
- navController.get().modalPresentationStyle = UIModalPresentationFormSheet; |
+ initWithRootViewController:self.folderEditor]; |
+ navController.modalPresentationStyle = UIModalPresentationFormSheet; |
[self.view.window.rootViewController presentViewController:navController |
animated:YES |
completion:NULL]; |
@@ -1198,8 +1187,8 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
_contentView.delegate = self; |
self.contentView.backgroundColor = |
bookmark_utils_ios::mainBackgroundColor(); |
- base::scoped_nsobject<BookmarkNavigationBar> bar( |
- [[BookmarkNavigationBar alloc] initWithFrame:CGRectZero]); |
+ BookmarkNavigationBar* bar = |
+ [[BookmarkNavigationBar alloc] initWithFrame:CGRectZero]; |
self.navigationBar = bar; |
self.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; |
@@ -1232,20 +1221,19 @@ const CGFloat kNavigationBarTopMargin = 8.0; |
return; |
DCHECK(self.waitForModelView); |
- base::WeakNSObject<BookmarkHomeTabletNTPController> weakSelf(self); |
+ __weak BookmarkHomeTabletNTPController* weakSelf = self; |
[self.waitForModelView stopWaitingWithCompletion:^{ |
- base::scoped_nsobject<BookmarkHomeTabletNTPController> strongSelf( |
- [weakSelf retain]); |
+ BookmarkHomeTabletNTPController* strongSelf = weakSelf; |
// Early return if the controller has been deallocated. |
if (!strongSelf) |
return; |
[UIView animateWithDuration:0.2 |
animations:^{ |
- strongSelf.get().waitForModelView.alpha = 0.0; |
+ strongSelf.waitForModelView.alpha = 0.0; |
} |
completion:^(BOOL finished) { |
- [strongSelf.get().waitForModelView removeFromSuperview]; |
- strongSelf.get().waitForModelView = nil; |
+ [strongSelf.waitForModelView removeFromSuperview]; |
+ strongSelf.waitForModelView = nil; |
}]; |
[strongSelf loadBookmarkViews]; |
}]; |