|  | // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef IOS_CHROME_BROWSER_INSTALLATION_NOTIFIER_H_ | 
|  | #define IOS_CHROME_BROWSER_INSTALLATION_NOTIFIER_H_ | 
|  |  | 
|  | #import <Foundation/Foundation.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | // Protocol used to mock the delayed dispatching for the unit tests. | 
|  | // Calls |block| after |delayInNSec|. | 
|  | @protocol DispatcherProtocol<NSObject> | 
|  | - (void)dispatchAfter:(int64_t)delayInNSec withBlock:(dispatch_block_t)block; | 
|  | @end | 
|  |  | 
|  | @interface InstallationNotifier : NSObject | 
|  | // Returns singleton instance. | 
|  | + (InstallationNotifier*)sharedInstance; | 
|  |  | 
|  | // Registers |observer| to be sent a notification named |scheme| when a URL | 
|  | // with |scheme| can be opened. |observer| must not be nil. If |scheme| is nil | 
|  | // or an empty string, |observer| is not registered for anything. | 
|  | - (void)registerForInstallationNotifications:(id)observer | 
|  | withSelector:(SEL)notificationSelector | 
|  | forScheme:(NSString*)scheme; | 
|  |  | 
|  | // Unregisters all the NSNotifications ever asked by |observer|. | 
|  | - (void)unregisterForNotifications:(id)observer; | 
|  |  | 
|  | // Performs a check for installed apps right away and restarts the polling. | 
|  | // There is usually no need for registered observers to call this method, unless | 
|  | // registered observers need to know the accurate state of installed native | 
|  | // apps. | 
|  | - (void)checkNow; | 
|  | @end | 
|  |  | 
|  | #endif  // IOS_CHROME_BROWSER_INSTALLATION_NOTIFIER_H_ |