| Index: ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm
 | 
| diff --git a/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm b/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm
 | 
| index 645a9651e7c63e7355585bf13c83638e123f1d15..528b23ab18dc32ffb78447b53a0c391428192bc7 100644
 | 
| --- a/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm
 | 
| +++ b/ios/chrome/browser/ui/toolbar/web_toolbar_controller.mm
 | 
| @@ -13,7 +13,6 @@
 | 
|  #include <memory>
 | 
|  
 | 
|  #include "base/command_line.h"
 | 
| -#include "base/ios/weak_nsobject.h"
 | 
|  #include "base/logging.h"
 | 
|  #include "base/mac/bundle_locations.h"
 | 
|  #include "base/mac/foundation_util.h"
 | 
| @@ -44,6 +43,7 @@
 | 
|  #import "ios/chrome/browser/ui/keyboard/hardware_keyboard_watcher.h"
 | 
|  #include "ios/chrome/browser/ui/omnibox/location_bar_controller_impl.h"
 | 
|  #include "ios/chrome/browser/ui/omnibox/omnibox_view_ios.h"
 | 
| +#import "ios/chrome/browser/ui/popup_menu/popup_menu_view.h"
 | 
|  #import "ios/chrome/browser/ui/reversed_animation.h"
 | 
|  #include "ios/chrome/browser/ui/rtl_geometry.h"
 | 
|  #import "ios/chrome/browser/ui/toolbar/toolbar_controller+protected.h"
 | 
| @@ -72,6 +72,10 @@
 | 
|  #include "ui/base/page_transition_types.h"
 | 
|  #import "ui/gfx/ios/NSString+CrStringDrawing.h"
 | 
|  
 | 
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
 | 
| +#error "This file requires ARC support."
 | 
| +#endif
 | 
| +
 | 
|  using base::UserMetricsAction;
 | 
|  using ios::material::TimingFunction;
 | 
|  
 | 
| @@ -242,23 +246,23 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|                                     OmniboxPopupPositioner,
 | 
|                                     ToolbarFrameDelegate> {
 | 
|    // Top-level view for web content.
 | 
| -  base::scoped_nsobject<UIView> _webToolbar;
 | 
| -  base::scoped_nsobject<UIButton> _backButton;
 | 
| -  base::scoped_nsobject<UIButton> _forwardButton;
 | 
| -  base::scoped_nsobject<UIButton> _reloadButton;
 | 
| -  base::scoped_nsobject<UIButton> _stopButton;
 | 
| -  base::scoped_nsobject<UIButton> _starButton;
 | 
| -  base::scoped_nsobject<UIButton> _voiceSearchButton;
 | 
| -  base::scoped_nsobject<OmniboxTextFieldIOS> _omniBox;
 | 
| -  base::scoped_nsobject<UIButton> _cancelButton;
 | 
| -  base::scoped_nsobject<UIView> _keyBoardAccessoryView;
 | 
| -  base::scoped_nsobject<UIButton> _keyboardVoiceSearchButton;
 | 
| +  UIView* _webToolbar;
 | 
| +  UIButton* _backButton;
 | 
| +  UIButton* _forwardButton;
 | 
| +  UIButton* _reloadButton;
 | 
| +  UIButton* _stopButton;
 | 
| +  UIButton* _starButton;
 | 
| +  UIButton* _voiceSearchButton;
 | 
| +  OmniboxTextFieldIOS* _omniBox;
 | 
| +  UIButton* _cancelButton;
 | 
| +  UIView* _keyBoardAccessoryView;
 | 
| +  UIButton* _keyboardVoiceSearchButton;
 | 
|    // Progress bar used to show what fraction of the page has loaded.
 | 
| -  base::scoped_nsobject<MDCProgressView> _determinateProgressView;
 | 
| -  base::scoped_nsobject<UIImageView> _omniboxBackground;
 | 
| +  MDCProgressView* _determinateProgressView;
 | 
| +  UIImageView* _omniboxBackground;
 | 
|    BOOL _prerenderAnimating;
 | 
| -  base::scoped_nsobject<UIImageView> _incognitoIcon;
 | 
| -  base::scoped_nsobject<UIView> _clippingView;
 | 
| +  UIImageView* _incognitoIcon;
 | 
| +  UIView* _clippingView;
 | 
|  
 | 
|    std::unique_ptr<LocationBarController> _locationBar;
 | 
|    BOOL _initialLayoutComplete;
 | 
| @@ -280,21 +284,21 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    ToolbarButtonMode _forwardButtonMode;
 | 
|  
 | 
|    // Keeps track of last known trait collection used by the subviews.
 | 
| -  base::scoped_nsobject<UITraitCollection> _lastKnownTraitCollection;
 | 
| +  UITraitCollection* _lastKnownTraitCollection;
 | 
|  
 | 
|    // A snapshot of the current toolbar view. Only valid for phone, will be nil
 | 
|    // if on tablet.
 | 
| -  base::scoped_nsobject<UIImage> _snapshot;
 | 
| +  UIImage* _snapshot;
 | 
|    // A hash of the state of the toolbar when the snapshot was taken.
 | 
|    uint32_t _snapshotHash;
 | 
|  
 | 
|    // View controller for displaying tab history when the user long presses the
 | 
|    // back or forward button. nil if not visible.
 | 
| -  base::scoped_nsobject<TabHistoryPopupController> _tabHistoryPopupController;
 | 
| +  TabHistoryPopupController* _tabHistoryPopupController;
 | 
|  
 | 
|    // Hardware keyboard watcher, to detect the type of keyboard currently
 | 
|    // attached.
 | 
| -  base::scoped_nsobject<HardwareKeyboardWatcher> _hardwareKeyboardWatcher;
 | 
| +  HardwareKeyboardWatcher* _hardwareKeyboardWatcher;
 | 
|  
 | 
|    // The current browser state.
 | 
|    ios::ChromeBrowserState* _browserState;  // weak
 | 
| @@ -395,19 +399,19 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    InterfaceIdiom idiom = IsIPadIdiom() ? IPAD_IDIOM : IPHONE_IDIOM;
 | 
|    // Note that |_webToolbar| gets its frame set to -specificControlArea later in
 | 
|    // this method.
 | 
| -  _webToolbar.reset([[UIView alloc]
 | 
| -      initWithFrame:LayoutRectGetRect(kWebToolbarFrame[idiom])]);
 | 
| +  _webToolbar =
 | 
| +      [[UIView alloc] initWithFrame:LayoutRectGetRect(kWebToolbarFrame[idiom])];
 | 
|    UIColor* textColor =
 | 
|        _incognito
 | 
|            ? [UIColor whiteColor]
 | 
|            : [UIColor colorWithWhite:0 alpha:[MDCTypography body1FontOpacity]];
 | 
|    UIColor* tintColor = _incognito ? textColor : nil;
 | 
|    CGRect omniboxRect = LayoutRectGetRect(kOmniboxFrame[idiom]);
 | 
| -  _omniBox.reset([[OmniboxTextFieldIOS alloc]
 | 
| -      initWithFrame:omniboxRect
 | 
| -               font:[MDCTypography subheadFont]
 | 
| -          textColor:textColor
 | 
| -          tintColor:tintColor]);
 | 
| +  _omniBox =
 | 
| +      [[OmniboxTextFieldIOS alloc] initWithFrame:omniboxRect
 | 
| +                                            font:[MDCTypography subheadFont]
 | 
| +                                       textColor:textColor
 | 
| +                                       tintColor:tintColor];
 | 
|    if (_incognito) {
 | 
|      [_omniBox setIncognito:YES];
 | 
|      [_omniBox
 | 
| @@ -421,15 +425,15 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|                            alpha:1.0];
 | 
|      [_omniBox setPlaceholderTextColor:placeholderTextColor];
 | 
|    }
 | 
| -  _backButton.reset([[UIButton alloc]
 | 
| -      initWithFrame:LayoutRectGetRect(kBackButtonFrame[idiom])]);
 | 
| +  _backButton = [[UIButton alloc]
 | 
| +      initWithFrame:LayoutRectGetRect(kBackButtonFrame[idiom])];
 | 
|    [_backButton setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin() |
 | 
|                                     UIViewAutoresizingFlexibleTopMargin |
 | 
|                                     UIViewAutoresizingFlexibleBottomMargin];
 | 
|    // Note that the forward button gets repositioned when -layoutOmnibox is
 | 
|    // called.
 | 
| -  _forwardButton.reset([[UIButton alloc]
 | 
| -      initWithFrame:LayoutRectGetRect(kForwardButtonFrame[idiom])]);
 | 
| +  _forwardButton = [[UIButton alloc]
 | 
| +      initWithFrame:LayoutRectGetRect(kForwardButtonFrame[idiom])];
 | 
|    [_forwardButton
 | 
|        setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin() |
 | 
|                            UIViewAutoresizingFlexibleBottomMargin];
 | 
| @@ -439,7 +443,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|    // _omniboxBackground needs to be added under _omniBox so as not to cover up
 | 
|    // _omniBox.
 | 
| -  _omniboxBackground.reset([[UIImageView alloc] initWithFrame:omniboxRect]);
 | 
| +  _omniboxBackground = [[UIImageView alloc] initWithFrame:omniboxRect];
 | 
|    [_omniboxBackground
 | 
|        setAutoresizingMask:UIViewAutoresizingFlexibleWidth |
 | 
|                            UIViewAutoresizingFlexibleBottomMargin];
 | 
| @@ -451,7 +455,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      [_forwardButton setImageEdgeInsets:UIEdgeInsetsMakeDirected(0, -7, 0, 0)];
 | 
|      CGRect clippingFrame =
 | 
|          RectShiftedUpAndResizedForStatusBar(kToolbarFrame[idiom]);
 | 
| -    _clippingView.reset([[UIView alloc] initWithFrame:clippingFrame]);
 | 
| +    _clippingView = [[UIView alloc] initWithFrame:clippingFrame];
 | 
|      [_clippingView setAutoresizingMask:UIViewAutoresizingFlexibleWidth |
 | 
|                                         UIViewAutoresizingFlexibleBottomMargin];
 | 
|      [_clippingView setClipsToBounds:YES];
 | 
| @@ -471,8 +475,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|            setBackgroundColor:
 | 
|                [UIColor colorWithWhite:kNTPBackgroundColorBrightnessIncognito
 | 
|                                  alpha:1.0]];
 | 
| -      _incognitoIcon.reset([[UIImageView alloc]
 | 
| -          initWithImage:[UIImage imageNamed:@"incognito_marker_typing"]]);
 | 
| +      _incognitoIcon = [[UIImageView alloc]
 | 
| +          initWithImage:[UIImage imageNamed:@"incognito_marker_typing"]];
 | 
|        [_incognitoIcon setAlpha:0];
 | 
|        [_incognitoIcon
 | 
|            setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin()];
 | 
| @@ -489,22 +493,22 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    if (idiom == IPAD_IDIOM) {
 | 
|      // Note that the reload button gets repositioned when -layoutOmnibox is
 | 
|      // called.
 | 
| -    _reloadButton.reset([[UIButton alloc]
 | 
| -        initWithFrame:LayoutRectGetRect(kStopReloadButtonFrame)]);
 | 
| +    _reloadButton = [[UIButton alloc]
 | 
| +        initWithFrame:LayoutRectGetRect(kStopReloadButtonFrame)];
 | 
|      [_reloadButton
 | 
|          setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin() |
 | 
|                              UIViewAutoresizingFlexibleBottomMargin];
 | 
| -    _stopButton.reset([[UIButton alloc]
 | 
| -        initWithFrame:LayoutRectGetRect(kStopReloadButtonFrame)]);
 | 
| +    _stopButton = [[UIButton alloc]
 | 
| +        initWithFrame:LayoutRectGetRect(kStopReloadButtonFrame)];
 | 
|      [_stopButton
 | 
|          setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin() |
 | 
|                              UIViewAutoresizingFlexibleBottomMargin];
 | 
| -    _starButton.reset(
 | 
| -        [[UIButton alloc] initWithFrame:LayoutRectGetRect(kStarButtonFrame)]);
 | 
| +    _starButton =
 | 
| +        [[UIButton alloc] initWithFrame:LayoutRectGetRect(kStarButtonFrame)];
 | 
|      [_starButton setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin |
 | 
|                                       UIViewAutoresizingFlexibleLeadingMargin()];
 | 
| -    _voiceSearchButton.reset([[UIButton alloc]
 | 
| -        initWithFrame:LayoutRectGetRect(kVoiceSearchButtonFrame)]);
 | 
| +    _voiceSearchButton = [[UIButton alloc]
 | 
| +        initWithFrame:LayoutRectGetRect(kVoiceSearchButtonFrame)];
 | 
|      [_voiceSearchButton
 | 
|          setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin |
 | 
|                              UIViewAutoresizingFlexibleLeadingMargin()];
 | 
| @@ -551,15 +555,15 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|    _backButtonMode = ToolbarButtonModeNormal;
 | 
|    _forwardButtonMode = ToolbarButtonModeNormal;
 | 
| -  base::scoped_nsobject<UILongPressGestureRecognizer> backLongPress(
 | 
| +  UILongPressGestureRecognizer* backLongPress =
 | 
|        [[UILongPressGestureRecognizer alloc]
 | 
|            initWithTarget:self
 | 
| -                  action:@selector(handleLongPress:)]);
 | 
| +                  action:@selector(handleLongPress:)];
 | 
|    [_backButton addGestureRecognizer:backLongPress];
 | 
| -  base::scoped_nsobject<UILongPressGestureRecognizer> forwardLongPress(
 | 
| +  UILongPressGestureRecognizer* forwardLongPress =
 | 
|        [[UILongPressGestureRecognizer alloc]
 | 
|            initWithTarget:self
 | 
| -                  action:@selector(handleLongPress:)]);
 | 
| +                  action:@selector(handleLongPress:)];
 | 
|    [_forwardButton addGestureRecognizer:forwardLongPress];
 | 
|  
 | 
|    // TODO(leng):  Consider moving this to a pak file as well.  For now,
 | 
| @@ -607,8 +611,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      CGFloat progressWidth = self.view.frame.size.width;
 | 
|      CGFloat progressHeight = 0;
 | 
|      progressHeight = kMaterialProgressBarHeight;
 | 
| -    _determinateProgressView.reset([[MDCProgressView alloc] init]);
 | 
| -    _determinateProgressView.get().hidden = YES;
 | 
| +    _determinateProgressView = [[MDCProgressView alloc] init];
 | 
| +    _determinateProgressView.hidden = YES;
 | 
|      [_determinateProgressView
 | 
|          setProgressTintColor:[MDCPalette cr_bluePalette].tint500];
 | 
|      [_determinateProgressView
 | 
| @@ -672,7 +676,6 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  - (void)dealloc {
 | 
|    [[NSNotificationCenter defaultCenter] removeObserver:self];
 | 
|    [_tabHistoryPopupController setDelegate:nil];
 | 
| -  [super dealloc];
 | 
|  }
 | 
|  
 | 
|  #pragma mark -
 | 
| @@ -746,17 +749,19 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|  - (void)showPrerenderingAnimation {
 | 
|    _prerenderAnimating = YES;
 | 
| +  __weak MDCProgressView* weakDeterminateProgressView =
 | 
| +      _determinateProgressView;
 | 
|    [_determinateProgressView setProgress:0];
 | 
|    [_determinateProgressView setHidden:NO
 | 
|                               animated:YES
 | 
|                             completion:^(BOOL finished) {
 | 
| -                             [_determinateProgressView
 | 
| +                             [weakDeterminateProgressView
 | 
|                                   setProgress:1
 | 
|                                      animated:YES
 | 
|                                    completion:^(BOOL finished) {
 | 
| -                                    [_determinateProgressView setHidden:YES
 | 
| -                                                               animated:YES
 | 
| -                                                             completion:nil];
 | 
| +                                    [weakDeterminateProgressView setHidden:YES
 | 
| +                                                                  animated:YES
 | 
| +                                                                completion:nil];
 | 
|                                    }];
 | 
|                             }];
 | 
|  }
 | 
| @@ -786,11 +791,11 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  }
 | 
|  
 | 
|  - (UIView*)bookmarkButtonView {
 | 
| -  return _starButton.get();
 | 
| +  return _starButton;
 | 
|  }
 | 
|  
 | 
|  - (CGRect)visibleOmniboxFrame {
 | 
| -  CGRect frame = _omniboxBackground.get().frame;
 | 
| +  CGRect frame = _omniboxBackground.frame;
 | 
|    frame = [self.view.superview convertRect:frame
 | 
|                                    fromView:[_omniboxBackground superview]];
 | 
|    // Account for the omnibox background image transparent sides.
 | 
| @@ -802,7 +807,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      return nil;
 | 
|    // Below call will be no-op if cached snapshot is valid.
 | 
|    [self updateSnapshotWithWidth:width forced:YES];
 | 
| -  return [[_snapshot retain] autorelease];
 | 
| +  return _snapshot;
 | 
|  }
 | 
|  
 | 
|  - (void)showTabHistoryPopupInView:(UIView*)view
 | 
| @@ -824,10 +829,10 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|                                 CGRectGetMaxY(buttonBounds));
 | 
|    CGPoint convertedOrigin =
 | 
|        [view convertPoint:origin fromView:historyButton.imageView];
 | 
| -  _tabHistoryPopupController.reset([[TabHistoryPopupController alloc]
 | 
| -      initWithOrigin:convertedOrigin
 | 
| -          parentView:view
 | 
| -               items:items]);
 | 
| +  _tabHistoryPopupController =
 | 
| +      [[TabHistoryPopupController alloc] initWithOrigin:convertedOrigin
 | 
| +                                             parentView:view
 | 
| +                                                  items:items];
 | 
|    [_tabHistoryPopupController setDelegate:self];
 | 
|  
 | 
|    // Fade in the popup and notify observers.
 | 
| @@ -844,7 +849,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  - (void)dismissTabHistoryPopup {
 | 
|    if (!_tabHistoryPopupController)
 | 
|      return;
 | 
| -  TabHistoryPopupController* tempTHPC = _tabHistoryPopupController.get();
 | 
| +  TabHistoryPopupController* tempTHPC = _tabHistoryPopupController;
 | 
|    [tempTHPC containerView].userInteractionEnabled = NO;
 | 
|    [tempTHPC dismissAnimatedWithCompletion:^{
 | 
|      // Unpress the back/forward button by restoring the normal and
 | 
| @@ -856,7 +861,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    }];
 | 
|    // reset _tabHistoryPopupController to prevent -applicationDidEnterBackground
 | 
|    // from posting another kTabHistoryPopupWillHideNotification.
 | 
| -  _tabHistoryPopupController.reset();
 | 
| +  _tabHistoryPopupController = nil;
 | 
|  
 | 
|    [[NSNotificationCenter defaultCenter]
 | 
|        postNotificationName:kTabHistoryPopupWillHideNotification
 | 
| @@ -875,9 +880,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|  - (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
 | 
|    [super traitCollectionDidChange:previousTraitCollection];
 | 
| -  _lastKnownTraitCollection.reset([[UITraitCollection
 | 
| -      traitCollectionWithTraitsFromCollections:@[ self.view.traitCollection ]]
 | 
| -      retain]);
 | 
| +  _lastKnownTraitCollection = [UITraitCollection
 | 
| +      traitCollectionWithTraitsFromCollections:@[ self.view.traitCollection ]];
 | 
|    if (IsIPadIdiom()) {
 | 
|      // Update toolbar accessory views.
 | 
|      BOOL isCompactTabletView = IsCompactTablet(self.view);
 | 
| @@ -889,7 +893,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|      // Update keyboard accessory views.
 | 
|      BOOL hidden = [_keyboardVoiceSearchButton isHidden];
 | 
| -    _keyBoardAccessoryView.reset();
 | 
| +    _keyBoardAccessoryView = nil;
 | 
|      [_omniBox setInputAccessoryView:[self keyboardAccessoryView]];
 | 
|      [_keyboardVoiceSearchButton setHidden:hidden];
 | 
|      if ([_omniBox isFirstResponder]) {
 | 
| @@ -910,7 +914,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      // Dismiss the tab history popup without animation.
 | 
|      [self setImagesForNavButton:_backButton withTabHistoryVisible:NO];
 | 
|      [self setImagesForNavButton:_forwardButton withTabHistoryVisible:NO];
 | 
| -    _tabHistoryPopupController.reset(nil);
 | 
| +    _tabHistoryPopupController = nil;
 | 
|      [[NSNotificationCenter defaultCenter]
 | 
|          postNotificationName:kTabHistoryPopupWillHideNotification
 | 
|                        object:nil];
 | 
| @@ -929,7 +933,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|        hasDisabledImage:hasDisabledImage
 | 
|           synchronously:synchronously];
 | 
|  
 | 
| -  if (button != _starButton.get())
 | 
| +  if (button != _starButton)
 | 
|      return;
 | 
|    // The star button behaves slightly differently.  It uses the pressed
 | 
|    // image for its selected state as well as its pressed state.
 | 
| @@ -954,19 +958,19 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  }
 | 
|  
 | 
|  - (IBAction)recordUserMetrics:(id)sender {
 | 
| -  if (sender == _backButton.get()) {
 | 
| +  if (sender == _backButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarBack"));
 | 
| -  } else if (sender == _forwardButton.get()) {
 | 
| +  } else if (sender == _forwardButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarForward"));
 | 
| -  } else if (sender == _reloadButton.get()) {
 | 
| +  } else if (sender == _reloadButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarReload"));
 | 
| -  } else if (sender == _stopButton.get()) {
 | 
| +  } else if (sender == _stopButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarStop"));
 | 
| -  } else if (sender == _voiceSearchButton.get()) {
 | 
| +  } else if (sender == _voiceSearchButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarVoiceSearch"));
 | 
| -  } else if (sender == _keyboardVoiceSearchButton.get()) {
 | 
| +  } else if (sender == _keyboardVoiceSearchButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileCustomRowVoiceSearch"));
 | 
| -  } else if (sender == _starButton.get()) {
 | 
| +  } else if (sender == _starButton) {
 | 
|      base::RecordAction(UserMetricsAction("MobileToolbarToggleBookmark"));
 | 
|    } else {
 | 
|      [super recordUserMetrics:sender];
 | 
| @@ -991,17 +995,17 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  }
 | 
|  
 | 
|  - (int)imageEnumForButton:(UIButton*)button {
 | 
| -  if (button == _voiceSearchButton.get())
 | 
| +  if (button == _voiceSearchButton)
 | 
|      return _isTTSPlaying ? WebToolbarButtonNameTTS : WebToolbarButtonNameVoice;
 | 
| -  if (button == _starButton.get())
 | 
| +  if (button == _starButton)
 | 
|      return WebToolbarButtonNameStar;
 | 
| -  if (button == _stopButton.get())
 | 
| +  if (button == _stopButton)
 | 
|      return WebToolbarButtonNameStop;
 | 
| -  if (button == _reloadButton.get())
 | 
| +  if (button == _reloadButton)
 | 
|      return WebToolbarButtonNameReload;
 | 
| -  if (button == _backButton.get())
 | 
| +  if (button == _backButton)
 | 
|      return WebToolbarButtonNameBack;
 | 
| -  if (button == _forwardButton.get())
 | 
| +  if (button == _forwardButton)
 | 
|      return WebToolbarButtonNameForward;
 | 
|    return [super imageEnumForButton:button];
 | 
|  }
 | 
| @@ -1310,7 +1314,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    // Hide the voice search button once the user starts editing the omnibox but
 | 
|    // show it if the omnibox is empty.
 | 
|    bool isEditingOrEmpty = _locationBar->GetLocationEntry()->IsEditingOrEmpty();
 | 
| -  BOOL editingAndNotEmpty = isEditingOrEmpty && _omniBox.get().text.length != 0;
 | 
| +  BOOL editingAndNotEmpty = isEditingOrEmpty && _omniBox.text.length != 0;
 | 
|    // If the voice search button is visible but about to be hidden (i.e.
 | 
|    // the omnibox is no longer empty) then this is the first omnibox text so
 | 
|    // record a user action.
 | 
| @@ -1474,7 +1478,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  - (UIButton*)cancelButton {
 | 
|    if (_cancelButton)
 | 
|      return _cancelButton;
 | 
| -  _cancelButton.reset([[UIButton buttonWithType:UIButtonTypeCustom] retain]);
 | 
| +  _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
 | 
|    NSString* collapseName = _incognito ? @"collapse_incognito" : @"collapse";
 | 
|    [_cancelButton setImage:[UIImage imageNamed:collapseName]
 | 
|                   forState:UIControlStateNormal];
 | 
| @@ -1630,15 +1634,17 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      // disappeared.
 | 
|  
 | 
|      if (!_prerenderAnimating) {
 | 
| +      __weak MDCProgressView* weakDeterminateProgressView =
 | 
| +          _determinateProgressView;
 | 
|        // Calling -completeAndHide while a prerender animation is in progress
 | 
|        // will result in hiding the progress bar before the animation is
 | 
|        // complete.
 | 
|        [_determinateProgressView setProgress:1
 | 
|                                     animated:YES
 | 
|                                   completion:^(BOOL finished) {
 | 
| -                                   [_determinateProgressView setHidden:YES
 | 
| -                                                              animated:YES
 | 
| -                                                            completion:nil];
 | 
| +                                   [weakDeterminateProgressView setHidden:YES
 | 
| +                                                                 animated:YES
 | 
| +                                                               completion:nil];
 | 
|                                   }];
 | 
|      }
 | 
|      CGFloat delay = _unitTesting ? 0 : kLoadCompleteHideProgressBarDelay;
 | 
| @@ -1703,13 +1709,13 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    if (gesture.state != UIGestureRecognizerStateBegan)
 | 
|      return;
 | 
|  
 | 
| -  if (gesture.view == _backButton.get()) {
 | 
| -    base::scoped_nsobject<GenericChromeCommand> command(
 | 
| -        [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_BACK_HISTORY]);
 | 
| +  if (gesture.view == _backButton) {
 | 
| +    GenericChromeCommand* command =
 | 
| +        [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_BACK_HISTORY];
 | 
|      [_backButton chromeExecuteCommand:command];
 | 
| -  } else if (gesture.view == _forwardButton.get()) {
 | 
| -    base::scoped_nsobject<GenericChromeCommand> command(
 | 
| -        [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_FORWARD_HISTORY]);
 | 
| +  } else if (gesture.view == _forwardButton) {
 | 
| +    GenericChromeCommand* command =
 | 
| +        [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_FORWARD_HISTORY];
 | 
|      [_forwardButton chromeExecuteCommand:command];
 | 
|    }
 | 
|  }
 | 
| @@ -1724,10 +1730,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    if (!isBackButton && newMode == _forwardButtonMode)
 | 
|      return;
 | 
|  
 | 
| -  base::scoped_nsobject<UIImage> normalImage(
 | 
| -      [[button imageForState:UIControlStateNormal] retain]);
 | 
| -  base::scoped_nsobject<UIImage> highlightedImage(
 | 
| -      [[button imageForState:UIControlStateHighlighted] retain]);
 | 
| +  UIImage* normalImage = [button imageForState:UIControlStateNormal];
 | 
| +  UIImage* highlightedImage = [button imageForState:UIControlStateHighlighted];
 | 
|    [button setImage:highlightedImage forState:UIControlStateNormal];
 | 
|    [button setImage:normalImage forState:UIControlStateHighlighted];
 | 
|    if (isBackButton)
 | 
| @@ -1870,9 +1874,9 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    CGFloat height = isTablet ? kViewHeightTablet : kViewHeightPhone;
 | 
|    CGRect frame = CGRectMake(0.0, 0.0, width, height);
 | 
|  
 | 
| -  _keyBoardAccessoryView.reset([[KeyboardAccessoryView alloc]
 | 
| -       initWithFrame:frame
 | 
| -      inputViewStyle:UIInputViewStyleKeyboard]);
 | 
| +  _keyBoardAccessoryView =
 | 
| +      [[KeyboardAccessoryView alloc] initWithFrame:frame
 | 
| +                                    inputViewStyle:UIInputViewStyleKeyboard];
 | 
|    [_keyBoardAccessoryView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
 | 
|  
 | 
|    NSArray* buttonTitles =
 | 
| @@ -1890,8 +1894,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    if (indent < kButtonInset)
 | 
|      indent = kButtonInset;
 | 
|    CGRect parentViewRect = CGRectMake(indent, 0.0, totalWidth, height);
 | 
| -  base::scoped_nsobject<UIView> parentView(
 | 
| -      [[UIView alloc] initWithFrame:parentViewRect]);
 | 
| +  UIView* parentView = [[UIView alloc] initWithFrame:parentViewRect];
 | 
|    [parentView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin |
 | 
|                                    UIViewAutoresizingFlexibleRightMargin];
 | 
|    [_keyBoardAccessoryView addSubview:parentView];
 | 
| @@ -1909,8 +1912,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|    // Create the voice search button and add it to _keyBoardAccessoryView over
 | 
|    // the text buttons.
 | 
| -  _keyboardVoiceSearchButton.reset(
 | 
| -      [[UIButton buttonWithType:UIButtonTypeCustom] retain]);
 | 
| +  _keyboardVoiceSearchButton = [UIButton buttonWithType:UIButtonTypeCustom];
 | 
|    [_keyboardVoiceSearchButton
 | 
|        setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
 | 
|    [_keyboardVoiceSearchButton setTag:IDC_VOICE_SEARCH];
 | 
| @@ -1952,8 +1954,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|    [_keyBoardAccessoryView addSubview:_keyboardVoiceSearchButton];
 | 
|  
 | 
|    // Reset the external keyboard watcher.
 | 
| -  _hardwareKeyboardWatcher.reset([[HardwareKeyboardWatcher alloc]
 | 
| -      initWithAccessoryView:_keyBoardAccessoryView]);
 | 
| +  _hardwareKeyboardWatcher = [[HardwareKeyboardWatcher alloc]
 | 
| +      initWithAccessoryView:_keyBoardAccessoryView];
 | 
|  
 | 
|    return _keyBoardAccessoryView;
 | 
|  }
 | 
| @@ -1968,8 +1970,8 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|    // Use a GenericChromeCommand because |sender| already has a tag set for a
 | 
|    // different command.
 | 
| -  base::scoped_nsobject<GenericChromeCommand> command(
 | 
| -      [[GenericChromeCommand alloc] initWithTag:IDC_PRELOAD_VOICE_SEARCH]);
 | 
| +  GenericChromeCommand* command =
 | 
| +      [[GenericChromeCommand alloc] initWithTag:IDC_PRELOAD_VOICE_SEARCH];
 | 
|    [sender chromeExecuteCommand:command];
 | 
|  }
 | 
|  
 | 
| @@ -2472,7 +2474,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|      return;
 | 
|    }
 | 
|    // If the snapshot is valid, don't redraw.
 | 
| -  if (_snapshot.get() && _snapshotHash == [self snapshotHashWithWidth:width])
 | 
| +  if (_snapshot && _snapshotHash == [self snapshotHashWithWidth:width])
 | 
|      return;
 | 
|  
 | 
|    // Don't update the snapshot while the progress bar is moving, or while the
 | 
| @@ -2497,7 +2499,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  
 | 
|    UIGraphicsBeginImageContextWithOptions(frame.size, NO, 0.0);
 | 
|    [[self view].layer renderInContext:UIGraphicsGetCurrentContext()];
 | 
| -  _snapshot.reset([UIGraphicsGetImageFromCurrentImageContext() retain]);
 | 
| +  _snapshot = UIGraphicsGetImageFromCurrentImageContext();
 | 
|    UIGraphicsEndImageContext();
 | 
|  
 | 
|    // In the past, when the current tab was prerendered, taking a snapshot
 | 
| @@ -2572,7 +2574,7 @@ CGRect RectShiftedDownAndResizedForStatusBar(CGRect rect) {
 | 
|  }
 | 
|  
 | 
|  - (OmniboxTextFieldIOS*)omnibox {
 | 
| -  return _omniBox.get();
 | 
| +  return _omniBox;
 | 
|  }
 | 
|  
 | 
|  @end
 | 
| 
 |