Index: ios/chrome/browser/ui/toolbar/toolbar_controller.mm |
diff --git a/ios/chrome/browser/ui/toolbar/toolbar_controller.mm b/ios/chrome/browser/ui/toolbar/toolbar_controller.mm |
index 0e8d5ac6efd7b72d8248d0f9c9e216de68baf7da..b21d58076d5e1eabba4fc969aff08dcd9f50eef9 100644 |
--- a/ios/chrome/browser/ui/toolbar/toolbar_controller.mm |
+++ b/ios/chrome/browser/ui/toolbar/toolbar_controller.mm |
@@ -35,6 +35,10 @@ |
#import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h" |
#import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoFontLoader.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
using base::UserMetricsAction; |
using ios::material::TimingFunction; |
@@ -200,26 +204,21 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
@end |
@interface ToolbarController () { |
- // The top-level toolbar view. |
- base::scoped_nsobject<ToolbarView> view_; |
- // The view for the toolbar background image. |
- base::scoped_nsobject<UIImageView> backgroundView_; |
- base::scoped_nsobject<UIImageView> shadowView_; |
- base::scoped_nsobject<UIImageView> fullBleedShadowView_; |
+ // The shadow view. Only used on iPhone. |
+ UIImageView* fullBleedShadowView_; |
// The backing object for |self.transitionLayers|. |
- base::scoped_nsobject<NSMutableArray> transitionLayers_; |
- |
- base::scoped_nsobject<ToolbarToolsMenuButton> toolsMenuButton_; |
- base::scoped_nsobject<UIButton> stackButton_; |
- base::scoped_nsobject<UIButton> shareButton_; |
- base::scoped_nsobject<NSArray> standardButtons_; |
- base::scoped_nsobject<ToolsMenuButtonObserverBridge> |
- toolsMenuButtonObserverBridge_; |
+ NSMutableArray* transitionLayers_; |
+ |
+ ToolbarToolsMenuButton* toolsMenuButton_; |
+ UIButton* stackButton_; |
+ UIButton* shareButton_; |
+ NSArray* standardButtons_; |
+ ToolsMenuButtonObserverBridge* toolsMenuButtonObserverBridge_; |
ToolbarControllerStyle style_; |
// The following is nil if not visible. |
- base::scoped_nsobject<ToolsPopupController> toolsPopupController_; |
+ ToolsPopupController* toolsPopupController_; |
} |
// Returns the background image that should be used for |style|. |
@@ -245,15 +244,18 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
@implementation ToolbarController |
@synthesize readingListModel = readingListModel_; |
- |
+@synthesize view = view_; |
+@synthesize backgroundView = backgroundView_; |
+@synthesize shadowView = shadowView_; |
+@synthesize toolsPopupController = toolsPopupController_; |
@synthesize style = style_; |
- (void)setReadingListModel:(ReadingListModel*)readingListModel { |
readingListModel_ = readingListModel; |
if (readingListModel_) { |
- toolsMenuButtonObserverBridge_.reset([[ToolsMenuButtonObserverBridge alloc] |
- initWithModel:readingListModel_ |
- toolbarButton:toolsMenuButton_]); |
+ toolsMenuButtonObserverBridge_ = |
+ [[ToolsMenuButtonObserverBridge alloc] initWithModel:readingListModel_ |
+ toolbarButton:toolsMenuButton_]; |
} |
} |
@@ -278,11 +280,11 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
toolsMenuButtonFrame.origin.y += statusBarOffset; |
} |
- view_.reset([[ToolbarView alloc] initWithFrame:viewFrame]); |
- backgroundView_.reset([[UIImageView alloc] initWithFrame:backgroundFrame]); |
- toolsMenuButton_.reset([[ToolbarToolsMenuButton alloc] |
- initWithFrame:toolsMenuButtonFrame |
- style:style_]); |
+ view_ = [[ToolbarView alloc] initWithFrame:viewFrame]; |
+ backgroundView_ = [[UIImageView alloc] initWithFrame:backgroundFrame]; |
+ toolsMenuButton_ = |
+ [[ToolbarToolsMenuButton alloc] initWithFrame:toolsMenuButtonFrame |
+ style:style_]; |
[toolsMenuButton_ setTag:IDC_SHOW_TOOLS_MENU]; |
[toolsMenuButton_ |
setAutoresizingMask:UIViewAutoresizingFlexibleLeadingMargin() | |
@@ -296,7 +298,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
if (idiom == IPAD_IDIOM) { |
CGRect shareButtonFrame = LayoutRectGetRect(kShareMenuButtonFrame); |
- shareButton_.reset([[UIButton alloc] initWithFrame:shareButtonFrame]); |
+ shareButton_ = [[UIButton alloc] initWithFrame:shareButtonFrame]; |
[shareButton_ setTag:IDC_SHARE_PAGE]; |
[shareButton_ |
setAutoresizingMask:UIViewAutoresizingFlexibleLeadingMargin() | |
@@ -313,7 +315,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
CGRect shadowFrame = kShadowViewFrame[idiom]; |
shadowFrame.origin.y = CGRectGetMaxY(backgroundFrame); |
- shadowView_.reset([[UIImageView alloc] initWithFrame:shadowFrame]); |
+ shadowView_ = [[UIImageView alloc] initWithFrame:shadowFrame]; |
[shadowView_ setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; |
[shadowView_ setUserInteractionEnabled:NO]; |
[view_ addSubview:shadowView_]; |
@@ -323,8 +325,8 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
// iPad omnibox does not expand to full bleed. |
CGRect fullBleedShadowFrame = kFullBleedShadowViewFrame; |
fullBleedShadowFrame.origin.y = shadowFrame.origin.y; |
- fullBleedShadowView_.reset( |
- [[UIImageView alloc] initWithFrame:fullBleedShadowFrame]); |
+ fullBleedShadowView_ = |
+ [[UIImageView alloc] initWithFrame:fullBleedShadowFrame]; |
[fullBleedShadowView_ |
setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; |
[fullBleedShadowView_ setUserInteractionEnabled:NO]; |
@@ -334,8 +336,8 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
setImage:NativeImage(IDR_IOS_TOOLBAR_SHADOW_FULL_BLEED)]; |
} |
- transitionLayers_.reset( |
- [[NSMutableArray alloc] initWithCapacity:kTransitionLayerCapacity]); |
+ transitionLayers_ = |
+ [[NSMutableArray alloc] initWithCapacity:kTransitionLayerCapacity]; |
// UIImageViews do not default to userInteractionEnabled:YES. |
[view_ setUserInteractionEnabled:YES]; |
@@ -346,8 +348,8 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
setImage:StretchableImageFromUIImage(tile, 0.0, 3.0)]; |
if (idiom == IPHONE_IDIOM) { |
- stackButton_.reset( |
- [[ToolbarCenteredButton alloc] initWithFrame:stackButtonFrame]); |
+ stackButton_ = |
+ [[ToolbarCenteredButton alloc] initWithFrame:stackButtonFrame]; |
[stackButton_ setTag:IDC_TOGGLE_TAB_SWITCHER]; |
[[stackButton_ titleLabel] |
setFont:[self fontForSize:kFontSizeFewerThanTenTabs]]; |
@@ -407,27 +409,14 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
- (void)dealloc { |
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
[toolsPopupController_ setDelegate:nil]; |
- [super dealloc]; |
-} |
- |
-- (UIImageView*)view { |
- return view_.get(); |
-} |
- |
-- (UIImageView*)backgroundView { |
- return backgroundView_.get(); |
} |
- (CGFloat)statusBarOffset { |
return StatusBarHeight(); |
} |
-- (UIImageView*)shadowView { |
- return shadowView_.get(); |
-} |
- |
- (NSMutableArray*)transitionLayers { |
- return transitionLayers_.get(); |
+ return transitionLayers_; |
} |
- (BOOL)imageShouldFlipForRightToLeftLayoutDirection:(int)imageEnum { |
@@ -444,22 +433,18 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
[standardButtons addObject:stackButton_]; |
if (shareButtonShouldBeVisible) |
[standardButtons addObject:shareButton_]; |
- standardButtons_.reset([standardButtons retain]); |
+ standardButtons_ = standardButtons; |
} |
- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection { |
[self updateStandardButtons]; |
} |
-- (ToolsPopupController*)toolsPopupController { |
- return toolsPopupController_.get(); |
-} |
- |
- (void)applicationDidEnterBackground:(NSNotification*)notify { |
- if (toolsPopupController_.get()) { |
+ if (toolsPopupController_) { |
// Dismiss the tools popup menu without animation. |
[toolsMenuButton_ setToolsMenuIsVisible:NO]; |
- toolsPopupController_.reset(nil); |
+ toolsPopupController_ = nil; |
[[NSNotificationCenter defaultCenter] |
postNotificationName:kMenuWillHideNotification |
object:nil]; |
@@ -490,7 +475,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (int)imageEnumForButton:(UIButton*)button { |
- if (button == stackButton_.get()) |
+ if (button == stackButton_) |
return ToolbarButtonNameStack; |
return NumberOfToolbarButtonNames; |
} |
@@ -563,7 +548,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (void)registerEventsForButton:(UIButton*)button { |
- if (button != toolsMenuButton_.get()) { |
+ if (button != toolsMenuButton_) { |
// |target| must be |self| (as opposed to |nil|) because |self| isn't in the |
// responder chain. |
[button addTarget:self |
@@ -585,7 +570,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (UIView*)shareButtonView { |
- return shareButton_.get(); |
+ return shareButton_; |
} |
- (void)showToolsMenuPopupWithConfiguration: |
@@ -602,8 +587,8 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
[toolsMenuButton_ setToolsMenuIsVisible:YES]; |
[configuration setToolsMenuButton:toolsMenuButton_]; |
- toolsPopupController_.reset( |
- [[ToolsPopupController alloc] initWithConfiguration:configuration]); |
+ toolsPopupController_ = |
+ [[ToolsPopupController alloc] initWithConfiguration:configuration]; |
[toolsPopupController_ setDelegate:self]; |
@@ -613,9 +598,9 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (void)dismissToolsMenuPopup { |
- if (!toolsPopupController_.get()) |
+ if (!toolsPopupController_) |
return; |
- ToolsPopupController* tempTPC = toolsPopupController_.get(); |
+ ToolsPopupController* tempTPC = toolsPopupController_; |
[tempTPC containerView].userInteractionEnabled = NO; |
[tempTPC dismissAnimatedWithCompletion:^{ |
// Unpress the tools menu button by restoring the normal and |
@@ -626,7 +611,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
}]; |
// reset tabHistoryPopupController_ to prevent -applicationDidEnterBackground |
// from posting another kMenuWillHideNotification. |
- toolsPopupController_.reset(); |
+ toolsPopupController_ = nil; |
[[NSNotificationCenter defaultCenter] |
postNotificationName:kMenuWillHideNotification |
@@ -685,7 +670,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
fadeButtons.fromValue = @1; |
fadeButtons.toValue = @0; |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
if (![button isHidden]) { |
[button layer].opacity = 0; |
[[button layer] addAnimation:fadeButtons forKey:@"fade"]; |
@@ -699,7 +684,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
[CATransaction |
setAnimationTimingFunction:TimingFunction(ios::material::CurveEaseIn)]; |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
CABasicAnimation* shiftButton = |
[CABasicAnimation animationWithKeyPath:@"position"]; |
CGPoint startPosition = [button layer].position; |
@@ -721,7 +706,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (void)fadeInStandardControls { |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
[self fadeInView:button |
fromLeadingOffset:10 |
withDuration:ios::material::kDuration2 |
@@ -739,7 +724,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
- (void)animationDidStart:(CAAnimation*)anim { |
// Once the buttons start fading in, set their opacity to 1 so there's no |
// flicker at the end of the animation. |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
if (anim == [[button layer] animationForKey:@"fadeIn"]) { |
[button layer].opacity = 1; |
return; |
@@ -933,18 +918,18 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
- (void)setStandardControlsVisible:(BOOL)visible { |
if (visible) { |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
[button setAlpha:1.0]; |
} |
} else { |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
[button setAlpha:0.0]; |
} |
} |
} |
- (void)setStandardControlsAlpha:(CGFloat)alpha { |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
if (![button isHidden]) |
[button setAlpha:alpha]; |
} |
@@ -956,7 +941,7 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (void)setStandardControlsTransform:(CGAffineTransform)transform { |
- for (UIButton* button in standardButtons_.get()) { |
+ for (UIButton* button in standardButtons_) { |
[button setTransform:transform]; |
} |
} |
@@ -1014,11 +999,11 @@ const LayoutOffset kButtonFadeOutXOffset = 10; |
} |
- (IBAction)recordUserMetrics:(id)sender { |
- if (sender == toolsMenuButton_.get()) |
+ if (sender == toolsMenuButton_) |
base::RecordAction(UserMetricsAction("MobileToolbarShowMenu")); |
- else if (sender == stackButton_.get()) |
+ else if (sender == stackButton_) |
base::RecordAction(UserMetricsAction("MobileToolbarShowStackView")); |
- else if (sender == shareButton_.get()) |
+ else if (sender == shareButton_) |
base::RecordAction(UserMetricsAction("MobileToolbarShareMenu")); |
else |
NOTREACHED(); |