| Index: ios/chrome/browser/installation_notifier.mm
 | 
| diff --git a/ios/chrome/browser/installation_notifier.mm b/ios/chrome/browser/installation_notifier.mm
 | 
| index 1ea3e3eefcdaad24bd8fbb20ab0e7ddf7c7aaf8f..9a1f3b7e46d63343db316193f985ddf893a45a08 100644
 | 
| --- a/ios/chrome/browser/installation_notifier.mm
 | 
| +++ b/ios/chrome/browser/installation_notifier.mm
 | 
| @@ -9,14 +9,16 @@
 | 
|  
 | 
|  #include <memory>
 | 
|  
 | 
| -#include "base/ios/weak_nsobject.h"
 | 
|  #include "base/logging.h"
 | 
| -#include "base/mac/scoped_nsobject.h"
 | 
|  #include "base/metrics/histogram.h"
 | 
|  #include "ios/web/public/web_thread.h"
 | 
|  #include "net/base/backoff_entry.h"
 | 
|  #include "url/gurl.h"
 | 
|  
 | 
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
 | 
| +#error "This file requires ARC support."
 | 
| +#endif
 | 
| +
 | 
|  namespace {
 | 
|  const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|      0,          // Number of errors to ignore.
 | 
| @@ -64,13 +66,13 @@ const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|  
 | 
|  @implementation InstallationNotifier {
 | 
|    std::unique_ptr<net::BackoffEntry> _backoffEntry;
 | 
| -  base::scoped_nsprotocol<id<DispatcherProtocol>> _dispatcher;
 | 
| +  id<DispatcherProtocol> _dispatcher;
 | 
|    // Dictionary mapping URL schemes to mutable sets of observers.
 | 
| -  base::scoped_nsobject<NSMutableDictionary> _installedAppObservers;
 | 
| -  NSNotificationCenter* _notificationCenter;  // Weak.
 | 
| +  NSMutableDictionary* _installedAppObservers;
 | 
| +  __weak NSNotificationCenter* _notificationCenter;
 | 
|  
 | 
|    // This object can be a fake application in unittests.
 | 
| -  UIApplication* sharedApplication_;  // Weak.
 | 
| +  __weak UIApplication* sharedApplication_;
 | 
|  }
 | 
|  
 | 
|  @synthesize lastCreatedBlockId = lastCreatedBlockId_;
 | 
| @@ -84,8 +86,8 @@ const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|    self = [super init];
 | 
|    if (self) {
 | 
|      lastCreatedBlockId_ = 0;
 | 
| -    _dispatcher.reset([[DefaultDispatcher alloc] init]);
 | 
| -    _installedAppObservers.reset([[NSMutableDictionary alloc] init]);
 | 
| +    _dispatcher = [[DefaultDispatcher alloc] init];
 | 
| +    _installedAppObservers = [[NSMutableDictionary alloc] init];
 | 
|      _notificationCenter = [NSNotificationCenter defaultCenter];
 | 
|      sharedApplication_ = [UIApplication sharedApplication];
 | 
|      _backoffEntry.reset(new net::BackoffEntry([self backOffPolicy]));
 | 
| @@ -117,7 +119,7 @@ const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|        [NSValue valueWithNonretainedObject:observer];
 | 
|    NSMutableSet* observers = [_installedAppObservers objectForKey:scheme];
 | 
|    if (!observers)
 | 
| -    observers = [[[NSMutableSet alloc] init] autorelease];
 | 
| +    observers = [[NSMutableSet alloc] init];
 | 
|    if ([observers containsObject:weakReferenceToObserver])
 | 
|      return;
 | 
|    [observers addObject:weakReferenceToObserver];
 | 
| @@ -161,12 +163,11 @@ const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|    _backoffEntry->InformOfRequest(false);
 | 
|    int64_t delayInNSec =
 | 
|        _backoffEntry->GetTimeUntilRelease().InMicroseconds() * NSEC_PER_USEC;
 | 
| -  base::WeakNSObject<InstallationNotifier> weakSelf(self);
 | 
| +  __weak InstallationNotifier* weakSelf = self;
 | 
|    [_dispatcher dispatchAfter:delayInNSec
 | 
|                     withBlock:^{
 | 
|                       DCHECK_CURRENTLY_ON(web::WebThread::UI);
 | 
| -                     base::scoped_nsobject<InstallationNotifier> strongSelf(
 | 
| -                         [weakSelf retain]);
 | 
| +                     InstallationNotifier* strongSelf = weakSelf;
 | 
|                       if (blockId == [strongSelf lastCreatedBlockId]) {
 | 
|                         [strongSelf pollForTheInstallationOfApps];
 | 
|                       }
 | 
| @@ -212,7 +213,7 @@ const net::BackoffEntry::Policy kPollingBackoffPolicy = {
 | 
|  #pragma mark Testing setters
 | 
|  
 | 
|  - (void)setDispatcher:(id<DispatcherProtocol>)dispatcher {
 | 
| -  _dispatcher.reset(dispatcher);
 | 
| +  _dispatcher = dispatcher;
 | 
|  }
 | 
|  
 | 
|  - (void)setSharedApplication:(id)sharedApplication {
 | 
| 
 |