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

Side by Side Diff: ios/chrome/browser/ui/contextual_search/contextual_search_header_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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/chrome/browser/ui/contextual_search/contextual_search_header_view.h " 5 #import "ios/chrome/browser/ui/contextual_search/contextual_search_header_view.h "
6 6
7 #import "base/ios/weak_nsobject.h"
8 #include "base/logging.h" 7 #include "base/logging.h"
9 #include "base/mac/scoped_cftyperef.h" 8 #include "base/mac/scoped_cftyperef.h"
10 #include "base/mac/scoped_nsobject.h"
11 #import "ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.h" 9 #import "ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.h"
12 #import "ios/chrome/browser/ui/uikit_ui_util.h" 10 #import "ios/chrome/browser/ui/uikit_ui_util.h"
13 #import "ios/chrome/common/material_timing.h" 11 #import "ios/chrome/common/material_timing.h"
14 #include "ios/chrome/common/string_util.h" 12 #include "ios/chrome/common/string_util.h"
15 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" 13 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
16 #include "ios/public/provider/chrome/browser/images/branded_image_provider.h" 14 #include "ios/public/provider/chrome/browser/images/branded_image_provider.h"
17 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h" 15 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h"
18 16
17 #if !defined(__has_feature) || !__has_feature(objc_arc)
18 #error "This file requires ARC support."
19 #endif
20
19 namespace { 21 namespace {
20 const CGFloat kHorizontalMargin = 24.0; 22 const CGFloat kHorizontalMargin = 24.0;
21 const CGFloat kHorizontalLayoutGap = 16.0; 23 const CGFloat kHorizontalLayoutGap = 16.0;
22 24
23 const NSTimeInterval kTextTransformAnimationDuration = 25 const NSTimeInterval kTextTransformAnimationDuration =
24 ios::material::kDuration1; 26 ios::material::kDuration1;
25 const NSTimeInterval kLogoIrisAnimationDuration = ios::material::kDuration1; 27 const NSTimeInterval kLogoIrisAnimationDuration = ios::material::kDuration1;
26 } // namespace 28 } // namespace
27 29
28 // An image that can "iris" in/out. Assumes a square image and will do a stupid- 30 // An image that can "iris" in/out. Assumes a square image and will do a stupid-
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 CGFloat _height; 100 CGFloat _height;
99 // Circular logo positioned leading side. 101 // Circular logo positioned leading side.
100 __unsafe_unretained IrisingImageView* _logo; 102 __unsafe_unretained IrisingImageView* _logo;
101 // Up/down caret positioned trailing side. 103 // Up/down caret positioned trailing side.
102 __unsafe_unretained UIImageView* _caret; 104 __unsafe_unretained UIImageView* _caret;
103 // Close control position identically to the caret. 105 // Close control position identically to the caret.
104 __unsafe_unretained TappableButton* _closeButton; 106 __unsafe_unretained TappableButton* _closeButton;
105 // Label showing the text the user tapped on in the web page, and any 107 // Label showing the text the user tapped on in the web page, and any
106 // additional context that will be displayed. 108 // additional context that will be displayed.
107 __unsafe_unretained UILabel* _textLabel; 109 __unsafe_unretained UILabel* _textLabel;
108 base::WeakNSProtocol<id<ContextualSearchPanelTapHandler>> _tapHandler; 110 __weak id<ContextualSearchPanelTapHandler> _tapHandler;
109 base::scoped_nsobject<UIGestureRecognizer> _tapRecognizer; 111 UIGestureRecognizer* _tapRecognizer;
110 } 112 }
111 113
112 + (BOOL)requiresConstraintBasedLayout { 114 + (BOOL)requiresConstraintBasedLayout {
113 return YES; 115 return YES;
114 } 116 }
115 117
116 - (instancetype)initWithHeight:(CGFloat)height { 118 - (instancetype)initWithHeight:(CGFloat)height {
117 if (!(self = [super initWithFrame:CGRectZero])) 119 if (!(self = [super initWithFrame:CGRectZero]))
118 return nil; 120 return nil;
119 121
120 DCHECK(height > 0); 122 DCHECK(height > 0);
121 _height = height; 123 _height = height;
122 124
123 self.translatesAutoresizingMaskIntoConstraints = NO; 125 self.translatesAutoresizingMaskIntoConstraints = NO;
124 self.backgroundColor = [UIColor whiteColor]; 126 self.backgroundColor = [UIColor whiteColor];
125 _tapRecognizer.reset([[UITapGestureRecognizer alloc] init]); 127 _tapRecognizer = [[UITapGestureRecognizer alloc] init];
126 [self addGestureRecognizer:_tapRecognizer]; 128 [self addGestureRecognizer:_tapRecognizer];
127 [_tapRecognizer addTarget:self action:@selector(panelWasTapped:)]; 129 [_tapRecognizer addTarget:self action:@selector(panelWasTapped:)];
128 130
129 UIImage* logoImage = ios::GetChromeBrowserProvider() 131 UIImage* logoImage = ios::GetChromeBrowserProvider()
130 ->GetBrandedImageProvider() 132 ->GetBrandedImageProvider()
131 ->GetContextualSearchHeaderImage(); 133 ->GetContextualSearchHeaderImage();
132 _logo = [[[IrisingImageView alloc] initWithImage:logoImage] autorelease]; 134 IrisingImageView* logo = [[IrisingImageView alloc] initWithImage:logoImage];
135 _logo = logo;
133 _logo.translatesAutoresizingMaskIntoConstraints = NO; 136 _logo.translatesAutoresizingMaskIntoConstraints = NO;
134 _logo.iris = 0.0; 137 _logo.iris = 0.0;
135 138
136 _caret = [[[UIImageView alloc] 139 UIImageView* caret =
137 initWithImage:[UIImage imageNamed:@"expand_less"]] autorelease]; 140 [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"expand_less"]];
141 _caret = caret;
138 _caret.translatesAutoresizingMaskIntoConstraints = NO; 142 _caret.translatesAutoresizingMaskIntoConstraints = NO;
139 [_caret setContentHuggingPriority:UILayoutPriorityDefaultHigh 143 [_caret setContentHuggingPriority:UILayoutPriorityDefaultHigh
140 forAxis:UILayoutConstraintAxisVertical]; 144 forAxis:UILayoutConstraintAxisVertical];
141 [_caret setContentHuggingPriority:UILayoutPriorityDefaultHigh 145 [_caret setContentHuggingPriority:UILayoutPriorityDefaultHigh
142 forAxis:UILayoutConstraintAxisHorizontal]; 146 forAxis:UILayoutConstraintAxisHorizontal];
143 147
144 _closeButton = 148 TappableButton* closeButton =
145 [[[TappableButton alloc] initWithFrame:CGRectZero] autorelease]; 149 [[TappableButton alloc] initWithFrame:CGRectZero];
150 _closeButton = closeButton;
146 _closeButton.translatesAutoresizingMaskIntoConstraints = NO; 151 _closeButton.translatesAutoresizingMaskIntoConstraints = NO;
147 [_closeButton setImage:[UIImage imageNamed:@"card_close_button"] 152 [_closeButton setImage:[UIImage imageNamed:@"card_close_button"]
148 forState:UIControlStateNormal]; 153 forState:UIControlStateNormal];
149 [_closeButton setImage:[UIImage imageNamed:@"card_close_button_pressed"] 154 [_closeButton setImage:[UIImage imageNamed:@"card_close_button_pressed"]
150 forState:UIControlStateHighlighted]; 155 forState:UIControlStateHighlighted];
151 [_closeButton setContentHuggingPriority:UILayoutPriorityDefaultHigh 156 [_closeButton setContentHuggingPriority:UILayoutPriorityDefaultHigh
152 forAxis:UILayoutConstraintAxisVertical]; 157 forAxis:UILayoutConstraintAxisVertical];
153 [_closeButton setContentHuggingPriority:UILayoutPriorityDefaultHigh 158 [_closeButton setContentHuggingPriority:UILayoutPriorityDefaultHigh
154 forAxis:UILayoutConstraintAxisHorizontal]; 159 forAxis:UILayoutConstraintAxisHorizontal];
155 _closeButton.alpha = 0; 160 _closeButton.alpha = 0;
156 161
157 _textLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 162 UILabel* textLabel = [[UILabel alloc] initWithFrame:CGRectZero];
163 _textLabel = textLabel;
158 _textLabel.translatesAutoresizingMaskIntoConstraints = NO; 164 _textLabel.translatesAutoresizingMaskIntoConstraints = NO;
159 _textLabel.font = [MDCTypography subheadFont]; 165 _textLabel.font = [MDCTypography subheadFont];
160 _textLabel.textAlignment = NSTextAlignmentNatural; 166 _textLabel.textAlignment = NSTextAlignmentNatural;
161 _textLabel.lineBreakMode = NSLineBreakByCharWrapping; 167 _textLabel.lineBreakMode = NSLineBreakByCharWrapping;
162 // Ensure that |_textLabel| doesn't expand past the space defined for it 168 // Ensure that |_textLabel| doesn't expand past the space defined for it
163 // regardless of how long its text is. 169 // regardless of how long its text is.
164 [_textLabel setContentHuggingPriority:UILayoutPriorityDefaultLow 170 [_textLabel setContentHuggingPriority:UILayoutPriorityDefaultLow
165 forAxis:UILayoutConstraintAxisHorizontal]; 171 forAxis:UILayoutConstraintAxisHorizontal];
166 172
167 [self setAccessibilityIdentifier:@"header"]; 173 [self setAccessibilityIdentifier:@"header"];
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 } 226 }
221 227
222 #pragma mark - property implementation. 228 #pragma mark - property implementation.
223 229
224 - (void)setTapHandler:(id<ContextualSearchPanelTapHandler>)tapHandler { 230 - (void)setTapHandler:(id<ContextualSearchPanelTapHandler>)tapHandler {
225 if (_tapHandler) { 231 if (_tapHandler) {
226 [_closeButton removeTarget:_tapHandler 232 [_closeButton removeTarget:_tapHandler
227 action:@selector(closePanel) 233 action:@selector(closePanel)
228 forControlEvents:UIControlEventTouchUpInside]; 234 forControlEvents:UIControlEventTouchUpInside];
229 } 235 }
230 _tapHandler.reset(tapHandler); 236 _tapHandler = tapHandler;
231 if (_tapHandler) { 237 if (_tapHandler) {
232 [_closeButton addTarget:_tapHandler 238 [_closeButton addTarget:_tapHandler
233 action:@selector(closePanel) 239 action:@selector(closePanel)
234 forControlEvents:UIControlEventTouchUpInside]; 240 forControlEvents:UIControlEventTouchUpInside];
235 } 241 }
236 } 242 }
237 243
238 - (id<ContextualSearchPanelTapHandler>)tapHandler { 244 - (id<ContextualSearchPanelTapHandler>)tapHandler {
239 return _tapHandler; 245 return _tapHandler;
240 } 246 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 _caret.alpha = caretGradation * caretGradation; 301 _caret.alpha = caretGradation * caretGradation;
296 _closeButton.alpha = closeGradation * closeGradation; 302 _closeButton.alpha = closeGradation * closeGradation;
297 } 303 }
298 304
299 #pragma mark - Animated transitions 305 #pragma mark - Animated transitions
300 306
301 - (void)setText:(NSString*)text 307 - (void)setText:(NSString*)text
302 followingTextRange:(NSRange)followingTextRange 308 followingTextRange:(NSRange)followingTextRange
303 animated:(BOOL)animated { 309 animated:(BOOL)animated {
304 NSMutableAttributedString* styledText = 310 NSMutableAttributedString* styledText =
305 [[[NSMutableAttributedString alloc] initWithString:text] autorelease]; 311 [[NSMutableAttributedString alloc] initWithString:text];
306 [styledText addAttribute:NSForegroundColorAttributeName 312 [styledText addAttribute:NSForegroundColorAttributeName
307 value:[UIColor colorWithWhite:0 alpha:0.71f] 313 value:[UIColor colorWithWhite:0 alpha:0.71f]
308 range:followingTextRange]; 314 range:followingTextRange];
309 315
310 void (^transform)(void) = ^{ 316 void (^transform)(void) = ^{
311 _textLabel.attributedText = styledText; 317 _textLabel.attributedText = styledText;
312 }; 318 };
313 void (^complete)(BOOL) = ^(BOOL finished) { 319 void (^complete)(BOOL) = ^(BOOL finished) {
314 [self showLogoAnimated:animated]; 320 [self showLogoAnimated:animated];
315 }; 321 };
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 curve:ios::material::CurveEaseOut 392 curve:ios::material::CurveEaseOut
387 options:0 393 options:0
388 animations:transform 394 animations:transform
389 completion:nil]; 395 completion:nil];
390 } else { 396 } else {
391 transform(); 397 transform();
392 } 398 }
393 } 399 }
394 400
395 @end 401 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698