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

Unified Diff: ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm

Issue 2824493002: Reland of [ObjC ARC] Converts ios/chrome/browser/ui/contextual_search:contextual_search to ARC. (Closed)
Patch Set: fix test Created 3 years, 8 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
Index: ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm
diff --git a/ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm b/ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm
index 1b556aa9945c38874c29a1d9778e1f4f5fe39f12..ad94baac8c5a43ea34b59cb1ef0d3e1e171421dc 100644
--- a/ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm
+++ b/ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.mm
@@ -5,10 +5,7 @@
#import "ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.h"
#import "base/ios/crb_protocol_observers.h"
-#include "base/ios/weak_nsobject.h"
#include "base/logging.h"
-#include "base/mac/scoped_block.h"
-#include "base/mac/scoped_nsobject.h"
#import "ios/chrome/browser/procedural_block_types.h"
#import "ios/chrome/browser/ui/contextual_search/contextual_search_panel_protocols.h"
#import "ios/chrome/browser/ui/uikit_ui_util.h"
@@ -16,6 +13,10 @@
#import "ios/third_party/material_components_ios/src/components/ShadowElevations/src/MaterialShadowElevations.h"
#import "ios/third_party/material_components_ios/src/components/ShadowLayer/src/MaterialShadowLayer.h"
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
namespace {
// Animation timings.
@@ -42,12 +43,13 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
// that motion will not cause the panel to move, but if the scrolling reaches
// the end of its possible range, the gesture will then start dragging the
// panel.
-@property(nonatomic, assign)
+@property(nonatomic, weak)
UIView<ContextualSearchPanelScrollSynchronizer>* scrollSynchronizer;
// Private readonly property to be used by weak pointers to |self| for non-
// retaining access to the underlying ivar in blocks.
-@property(nonatomic, readonly) ContextualSearchPanelObservers* observers;
+@property(nonatomic, strong, readonly)
+ ContextualSearchPanelObservers* observers;
// Utility to generate a PanelMotion struct for the panel's current position.
- (ContextualSearch::PanelMotion)motion;
@@ -58,26 +60,19 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
// Constraints that define the size of this view. These will be cleared and
// regenerated when the horizontal size class changes.
- base::scoped_nsobject<NSArray> _sizingConstraints;
+ NSArray* _sizingConstraints;
CGPoint _draggingStartPosition;
CGPoint _scrolledOffset;
- base::scoped_nsobject<UIPanGestureRecognizer> _dragRecognizer;
-
- base::scoped_nsobject<ContextualSearchPanelObservers> _observers;
-
- base::scoped_nsobject<PanelConfiguration> _configuration;
-
- base::WeakNSProtocol<id<ContextualSearchPanelScrollSynchronizer>>
- _scrollSynchronizer;
+ UIPanGestureRecognizer* _dragRecognizer;
// Guide that's used to position this view.
- base::WeakNSObject<UILayoutGuide> _positioningGuide;
+ __weak UILayoutGuide* _positioningGuide;
// Constraint that sets the size of |_positioningView| so this view is
// positioned correctly for its state.
- base::WeakNSObject<NSLayoutConstraint> _positioningViewConstraint;
+ __weak NSLayoutConstraint* _positioningViewConstraint;
// Other constraints that determine the position of this view.
- base::scoped_nsobject<NSArray> _positioningConstraints;
+ NSArray* _positioningConstraints;
// Promotion state variables.
BOOL _resizingForPromotion;
@@ -93,6 +88,9 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
}
@synthesize state = _state;
+@synthesize scrollSynchronizer = _scrollSynchronizer;
+@synthesize configuration = _configuration;
+@synthesize observers = _observers;
+ (BOOL)requiresConstraintBasedLayout {
return YES;
@@ -102,27 +100,26 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
- (instancetype)initWithConfiguration:(PanelConfiguration*)configuration {
if ((self = [super initWithFrame:CGRectZero])) {
- _configuration.reset([configuration retain]);
+ _configuration = configuration;
_state = ContextualSearch::DISMISSED;
self.translatesAutoresizingMaskIntoConstraints = NO;
self.backgroundColor = [UIColor whiteColor];
self.accessibilityIdentifier = @"contextualSearchPanel";
- _observers.reset([[ContextualSearchPanelObservers
- observersWithProtocol:@protocol(ContextualSearchPanelMotionObserver)]
- retain]);
+ _observers = [ContextualSearchPanelObservers
+ observersWithProtocol:@protocol(ContextualSearchPanelMotionObserver)];
[self addMotionObserver:self];
// Add gesture recognizer.
- _dragRecognizer.reset([[UIPanGestureRecognizer alloc]
+ _dragRecognizer = [[UIPanGestureRecognizer alloc]
initWithTarget:self
- action:@selector(handleDragFrom:)]);
+ action:@selector(handleDragFrom:)];
[self addGestureRecognizer:_dragRecognizer];
[_dragRecognizer setDelegate:self];
// Set up the stack view that holds the panel content
- _contents = [[[UIStackView alloc] initWithFrame:self.bounds] autorelease];
+ _contents = [[UIStackView alloc] initWithFrame:self.bounds];
[self addSubview:_contents];
_contents.translatesAutoresizingMaskIntoConstraints = NO;
_contents.accessibilityIdentifier = @"panelContents";
@@ -197,16 +194,7 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
#pragma mark - Public property getters/setters
- (PanelConfiguration*)configuration {
- return _configuration.get();
-}
-
-- (void)setScrollSynchronizer:
- (id<ContextualSearchPanelScrollSynchronizer>)scrollSynchronizer {
- _scrollSynchronizer.reset(scrollSynchronizer);
-}
-
-- (id<ContextualSearchPanelScrollSynchronizer>)scrollSynchronizer {
- return _scrollSynchronizer;
+ return _configuration;
}
- (ContextualSearchPanelObservers*)observers {
@@ -218,11 +206,10 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
return;
[_positioningViewConstraint setActive:NO];
- _positioningViewConstraint.reset();
- base::WeakNSObject<ContextualSearchPanelView> weakSelf(self);
+ _positioningViewConstraint = nil;
+ __weak ContextualSearchPanelView* weakSelf = self;
void (^transform)(void) = ^{
- base::scoped_nsobject<ContextualSearchPanelView> strongSelf(
- [weakSelf retain]);
+ ContextualSearchPanelView* strongSelf = weakSelf;
if (strongSelf) {
[strongSelf setNeedsUpdateConstraints];
[[strongSelf superview] layoutIfNeeded];
@@ -231,15 +218,13 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
}
};
- base::mac::ScopedBlock<ProceduralBlockWithBool> completion;
+ ProceduralBlockWithBool completion;
NSTimeInterval animationDuration;
if (state == ContextualSearch::DISMISSED) {
animationDuration = kDismissAnimationDuration;
- completion.reset(
- ^(BOOL) {
- [weakSelf setHidden:YES];
- },
- base::scoped_policy::RETAIN);
+ completion = [^(BOOL) {
+ [weakSelf setHidden:YES];
+ } copy];
} else {
self.hidden = NO;
animationDuration = kPanelAnimationDuration;
@@ -282,8 +267,7 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
if (self.traitCollection.horizontalSizeClass !=
UIUserInterfaceSizeClassUnspecified &&
!_sizingConstraints) {
- _sizingConstraints.reset(
- [[_configuration constraintsForSizingPanel:self] retain]);
+ _sizingConstraints = [_configuration constraintsForSizingPanel:self];
[NSLayoutConstraint activateConstraints:_sizingConstraints];
}
// Update positioning constraints if they don't exist.
@@ -296,12 +280,12 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
];
[NSLayoutConstraint activateConstraints:positioningConstraints];
- _positioningConstraints.reset([positioningConstraints retain]);
+ _positioningConstraints = positioningConstraints;
}
// Always update the positioning view constraint.
- _positioningViewConstraint.reset([self.configuration
- constraintForPositioningGuide:_positioningGuide
- atState:self.state]);
+ _positioningViewConstraint =
+ [self.configuration constraintForPositioningGuide:_positioningGuide
+ atState:self.state];
[_positioningViewConstraint setActive:YES];
}
[super updateConstraints];
@@ -312,10 +296,10 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
return;
// Set up the invisible positioning view used to constrain this view's
// position.
- UILayoutGuide* positioningGuide = [[[UILayoutGuide alloc] init] autorelease];
+ UILayoutGuide* positioningGuide = [[UILayoutGuide alloc] init];
positioningGuide.identifier = @"contextualSearchPosition";
[self.superview addLayoutGuide:positioningGuide];
- _positioningGuide.reset(positioningGuide);
+ _positioningGuide = positioningGuide;
[self setNeedsUpdateConstraints];
}
@@ -330,7 +314,7 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
[_configuration
setHorizontalSizeClass:self.traitCollection.horizontalSizeClass];
[NSLayoutConstraint deactivateConstraints:_sizingConstraints];
- _sizingConstraints.reset();
+ _sizingConstraints = nil;
[self setNeedsUpdateConstraints];
}
@@ -360,7 +344,6 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
[self removeMotionObserver:self];
[self removeGestureRecognizer:_dragRecognizer];
[[_positioningGuide owningView] removeLayoutGuide:_positioningGuide];
- [super dealloc];
}
#pragma mark - Gesture recognizer callbacks
@@ -465,12 +448,12 @@ const CGFloat kShadowElevation = MDCShadowElevationMenu;
(UIGestureRecognizer*)otherGestureRecognizer {
// Allow the drag recognizer and the panel content scroll recognizer to
// co-recognize.
- if (gestureRecognizer == _dragRecognizer.get() &&
+ if (gestureRecognizer == _dragRecognizer &&
otherGestureRecognizer == self.scrollSynchronizer.scrollRecognizer) {
return YES;
}
- if (gestureRecognizer == _dragRecognizer.get() &&
+ if (gestureRecognizer == _dragRecognizer &&
[_dragRecognizer state] == UIGestureRecognizerStateChanged) {
[gestureRecognizer setEnabled:NO];
}

Powered by Google App Engine
This is Rietveld 408576698