Index: ios/chrome/browser/ui/infobars/infobar_view.mm |
diff --git a/ios/chrome/browser/ui/infobars/infobar_view.mm b/ios/chrome/browser/ui/infobars/infobar_view.mm |
index 88d913b3f893bcc7da6e1216947b71a761022c90..dc3471dd17e6611a0fac48ddd23b204740a08889 100644 |
--- a/ios/chrome/browser/ui/infobars/infobar_view.mm |
+++ b/ios/chrome/browser/ui/infobars/infobar_view.mm |
@@ -9,7 +9,6 @@ |
#include "base/format_macros.h" |
#include "base/i18n/rtl.h" |
-#include "base/ios/weak_nsobject.h" |
#include "base/logging.h" |
#include "base/mac/foundation_util.h" |
#include "base/strings/sys_string_conversions.h" |
@@ -26,6 +25,10 @@ |
#import "ui/gfx/ios/uikit_util.h" |
#include "url/gurl.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
namespace { |
const char kChromeInfobarURL[] = "chromeinternal://infobar/"; |
@@ -82,16 +85,15 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
@end |
@implementation SwitchView { |
- base::scoped_nsobject<UILabel> label_; |
- base::scoped_nsobject<UISwitch> switch_; |
+ UILabel* label_; |
+ UISwitch* switch_; |
CGFloat preferredTotalWidth_; |
CGFloat preferredLabelWidth_; |
} |
- (id)initWithLabel:(NSString*)labelText isOn:(BOOL)isOn { |
// Creates switch and label. |
- base::scoped_nsobject<UILabel> tempLabel( |
- [[UILabel alloc] initWithFrame:CGRectZero]); |
+ UILabel* tempLabel = [[UILabel alloc] initWithFrame:CGRectZero]; |
[tempLabel setTextAlignment:NSTextAlignmentNatural]; |
[tempLabel setFont:[MDCTypography body1Font]]; |
[tempLabel setText:labelText]; |
@@ -99,8 +101,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
[tempLabel setLineBreakMode:NSLineBreakByWordWrapping]; |
[tempLabel setNumberOfLines:0]; |
[tempLabel setAdjustsFontSizeToFitWidth:NO]; |
- base::scoped_nsobject<UISwitch> tempSwitch( |
- [[UISwitch alloc] initWithFrame:CGRectZero]); |
+ UISwitch* tempSwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; |
[tempSwitch setExclusiveTouch:YES]; |
[tempSwitch setAccessibilityLabel:labelText]; |
[tempSwitch setOnTintColor:[[MDCPalette cr_bluePalette] tint500]]; |
@@ -117,8 +118,8 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
self = [super initWithFrame:frameRect]; |
if (!self) |
return nil; |
- label_.reset([tempLabel retain]); |
- switch_.reset([tempSwitch retain]); |
+ label_ = tempLabel; |
+ switch_ = tempSwitch; |
// Sets the position of the label and the switch. The label is left aligned |
// and the switch is right aligned. Both are vertically centered. |
@@ -223,37 +224,37 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
@implementation InfoBarView { |
// Delegates UIView events. |
- InfoBarViewDelegate* delegate_; // weak |
+ InfoBarViewDelegate* delegate_; // weak. |
// The current height of this infobar (used for animations where part of the |
// infobar is hidden). |
CGFloat visibleHeight_; |
// The height of this infobar when fully visible. |
CGFloat targetHeight_; |
// View containing |imageView_|. Exists to apply drop shadows to the view. |
- base::scoped_nsobject<UIView> imageViewContainer_; |
+ UIView* imageViewContainer_; |
// View containing the icon. |
- base::scoped_nsobject<UIImageView> imageView_; |
+ UIImageView* imageView_; |
// Close button. |
- base::scoped_nsobject<UIButton> closeButton_; |
+ UIButton* closeButton_; |
// View containing the switch and its label. |
- base::scoped_nsobject<SwitchView> switchView_; |
+ SwitchView* switchView_; |
// We are using a LabelLinkController with an UILabel to be able to have |
// parts of the label underlined and clickable. This label_ may be nil if |
// the delegate returns an empty string for GetMessageText(). |
- base::scoped_nsobject<LabelLinkController> labelLinkController_; |
- UILabel* label_; // Weak. |
+ LabelLinkController* labelLinkController_; |
+ UILabel* label_; |
// Array of range information. The first element of the pair is the tag of |
// the action and the second element is the range defining the link. |
std::vector<std::pair<NSUInteger, NSRange>> linkRanges_; |
// Text for the label with link markers included. |
- base::scoped_nsobject<NSString> markedLabel_; |
+ NSString* markedLabel_; |
// Buttons. |
// button1_ is tagged with ConfirmInfoBarDelegate::BUTTON_OK . |
// button2_ is tagged with ConfirmInfoBarDelegate::BUTTON_CANCEL . |
- base::scoped_nsobject<UIButton> button1_; |
- base::scoped_nsobject<UIButton> button2_; |
+ UIButton* button1_; |
+ UIButton* button2_; |
// Drop shadow. |
- base::scoped_nsobject<UIImageView> shadow_; |
+ UIImageView* shadow_; |
} |
@synthesize visibleHeight = visibleHeight_; |
@@ -265,7 +266,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
delegate_ = delegate; |
// Make the drop shadow. |
UIImage* shadowImage = [UIImage imageNamed:@"infobar_shadow"]; |
- shadow_.reset([[UIImageView alloc] initWithImage:shadowImage]); |
+ shadow_ = [[UIImageView alloc] initWithImage:shadowImage]; |
[self addSubview:shadow_]; |
[self setAutoresizingMask:UIViewAutoresizingFlexibleWidth | |
UIViewAutoresizingFlexibleHeight]; |
@@ -274,9 +275,6 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
return self; |
} |
-- (void)dealloc { |
- [super dealloc]; |
-} |
- (NSString*)markedLabel { |
return markedLabel_; |
@@ -663,7 +661,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
NSString* imagePath = |
[[NSBundle mainBundle] pathForResource:@"infobar_close" ofType:@"png"]; |
UIImage* image = [UIImage imageWithContentsOfFile:imagePath]; |
- closeButton_.reset([[UIButton buttonWithType:UIButtonTypeCustom] retain]); |
+ closeButton_ = [UIButton buttonWithType:UIButtonTypeCustom]; |
[closeButton_ setExclusiveTouch:YES]; |
[closeButton_ setImage:image forState:UIControlStateNormal]; |
[closeButton_ addTarget:target |
@@ -679,17 +677,17 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
tag:(NSInteger)tag |
target:(id)target |
action:(SEL)action { |
- switchView_.reset([[SwitchView alloc] initWithLabel:label isOn:isOn]); |
+ switchView_ = [[SwitchView alloc] initWithLabel:label isOn:isOn]; |
[switchView_ setTag:tag target:target action:action]; |
[self addSubview:switchView_]; |
} |
- (void)addLeftIcon:(UIImage*)image { |
if (!imageViewContainer_) { |
- imageViewContainer_.reset([[UIView alloc] init]); |
+ imageViewContainer_ = [[UIView alloc] init]; |
[self addSubview:imageViewContainer_]; |
} |
- imageView_.reset([[UIImageView alloc] initWithImage:image]); |
+ imageView_ = [[UIImageView alloc] initWithImage:image]; |
[imageViewContainer_ addSubview:imageView_]; |
} |
@@ -726,7 +724,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
[string rangeOfString:[[InfoBarView openingMarkerForLink] |
stringByAppendingString:@"("]]; |
if (!startingRange.length) |
- return [[string copy] autorelease]; |
+ return [string copy]; |
// Read the tag. |
NSUInteger beginTag = NSMaxRange(startingRange); |
NSRange closingParenthesis = [string |
@@ -734,13 +732,13 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
options:NSLiteralSearch |
range:NSMakeRange(beginTag, [string length] - beginTag)]; |
if (closingParenthesis.location == NSNotFound) |
- return [[string copy] autorelease]; |
+ return [string copy]; |
NSInteger tag = [[string |
substringWithRange:NSMakeRange(beginTag, closingParenthesis.location - |
beginTag)] integerValue]; |
// If the parsing fails, |tag| is 0. Negative values are not allowed. |
if (tag <= 0) |
- return [[string copy] autorelease]; |
+ return [string copy]; |
// Find the closing marker. |
startingRange.length = |
closingParenthesis.location - startingRange.location + 1; |
@@ -768,21 +766,21 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
} |
- (void)addLabel:(NSString*)text action:(void (^)(NSUInteger))action { |
- markedLabel_.reset([text copy]); |
+ markedLabel_ = [text copy]; |
if (action) |
text = [self stripMarkersFromString:text]; |
if ([label_ superview]) { |
[label_ removeFromSuperview]; |
} |
- label_ = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; |
+ label_ = [[UILabel alloc] initWithFrame:CGRectZero]; |
UIFont* font = [MDCTypography subheadFont]; |
[label_ setBackgroundColor:[UIColor clearColor]]; |
NSMutableParagraphStyle* paragraphStyle = |
- [[[NSMutableParagraphStyle alloc] init] autorelease]; |
+ [[NSMutableParagraphStyle alloc] init]; |
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; |
paragraphStyle.lineSpacing = kLabelLineSpacing; |
NSDictionary* attributes = @{ |
@@ -791,16 +789,16 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
}; |
[label_ setNumberOfLines:0]; |
- [label_ setAttributedText:[[[NSAttributedString alloc] |
- initWithString:text |
- attributes:attributes] autorelease]]; |
+ [label_ |
+ setAttributedText:[[NSAttributedString alloc] initWithString:text |
+ attributes:attributes]]; |
[self addSubview:label_]; |
if (linkRanges_.empty()) |
return; |
- labelLinkController_.reset([[LabelLinkController alloc] |
+ labelLinkController_ = [[LabelLinkController alloc] |
initWithLabel:label_ |
action:^(const GURL& gurl) { |
if (action) { |
@@ -808,7 +806,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
gurl.ExtractFileName()) integerValue]; |
action(actionTag); |
} |
- }]); |
+ }]; |
[labelLinkController_ setLinkUnderlineStyle:NSUnderlineStyleSingle]; |
[labelLinkController_ setLinkColor:[UIColor blackColor]]; |
@@ -829,20 +827,20 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
tag2:(NSInteger)tag2 |
target:(id)target |
action:(SEL)action { |
- button1_.reset([[self infoBarButton:title1 |
- palette:[MDCPalette cr_bluePalette] |
- customTitleColor:[UIColor whiteColor] |
- tag:tag1 |
- target:target |
- action:action] retain]); |
+ button1_ = [self infoBarButton:title1 |
+ palette:[MDCPalette cr_bluePalette] |
+ customTitleColor:[UIColor whiteColor] |
+ tag:tag1 |
+ target:target |
+ action:action]; |
[self addSubview:button1_]; |
- button2_.reset([[self infoBarButton:title2 |
- palette:nil |
- customTitleColor:UIColorFromRGB(kButton2TitleColor) |
- tag:tag2 |
- target:target |
- action:action] retain]); |
+ button2_ = [self infoBarButton:title2 |
+ palette:nil |
+ customTitleColor:UIColorFromRGB(kButton2TitleColor) |
+ tag:tag2 |
+ target:target |
+ action:action]; |
[self addSubview:button2_]; |
} |
@@ -852,12 +850,12 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
action:(SEL)action { |
if (![title length]) |
return; |
- button1_.reset([[self infoBarButton:title |
- palette:[MDCPalette cr_bluePalette] |
- customTitleColor:[UIColor whiteColor] |
- tag:tag |
- target:target |
- action:action] retain]); |
+ button1_ = [self infoBarButton:title |
+ palette:[MDCPalette cr_bluePalette] |
+ customTitleColor:[UIColor whiteColor] |
+ tag:tag |
+ target:target |
+ action:action]; |
[self addSubview:button1_]; |
} |
@@ -869,19 +867,19 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
tag:(NSInteger)tag |
target:(id)target |
action:(SEL)action { |
- base::scoped_nsobject<MDCFlatButton> button([[MDCFlatButton alloc] init]); |
- button.get().inkColor = [[palette tint300] colorWithAlphaComponent:0.5f]; |
+ MDCFlatButton* button = [[MDCFlatButton alloc] init]; |
+ button.inkColor = [[palette tint300] colorWithAlphaComponent:0.5f]; |
[button setBackgroundColor:[palette tint500] forState:UIControlStateNormal]; |
[button setBackgroundColor:[UIColor colorWithWhite:0.8f alpha:1.0f] |
forState:UIControlStateDisabled]; |
if (palette) |
- button.get().hasOpaqueBackground = YES; |
+ button.hasOpaqueBackground = YES; |
if (customTitleColor) { |
- button.get().tintAdjustmentMode = UIViewTintAdjustmentModeNormal; |
- button.get().customTitleColor = customTitleColor; |
+ button.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; |
+ button.customTitleColor = customTitleColor; |
} |
- button.get().titleLabel.adjustsFontSizeToFitWidth = YES; |
- button.get().titleLabel.minimumScaleFactor = 0.6f; |
+ button.titleLabel.adjustsFontSizeToFitWidth = YES; |
+ button.titleLabel.minimumScaleFactor = 0.6f; |
[button setTitle:message forState:UIControlStateNormal]; |
[button setTag:tag]; |
[button addTarget:target |
@@ -890,7 +888,7 @@ enum InfoBarButtonPosition { ON_FIRST_LINE, CENTER, LEFT, RIGHT }; |
// Without the call to layoutIfNeeded, |button| returns an incorrect |
// titleLabel the first time it is accessed in |narrowestWidthOfButton|. |
[button layoutIfNeeded]; |
- return button.autorelease(); |
+ return button; |
} |
- (CGRect)frameOfCloseButton:(BOOL)singleLineMode { |