|  | // 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_GEOLOCATION_LOCATION_MANAGER_H_ | 
|  | #define IOS_CHROME_BROWSER_GEOLOCATION_LOCATION_MANAGER_H_ | 
|  |  | 
|  | #import <CoreLocation/CoreLocation.h> | 
|  | #import <Foundation/Foundation.h> | 
|  |  | 
|  | @class LocationManager; | 
|  |  | 
|  | // Defines the methods to be implemented by a delegate of a LocationManager | 
|  | // instance. | 
|  | @protocol LocationManagerDelegate | 
|  |  | 
|  | // Notifies the delegate that the application's authorization status changed. | 
|  | - (void)locationManagerDidChangeAuthorizationStatus: | 
|  | (LocationManager*)locationManager; | 
|  |  | 
|  | @end | 
|  |  | 
|  | // Manages fetching and updating the current device location. | 
|  | @interface LocationManager : NSObject | 
|  |  | 
|  | // The application’s authorization status for using location services. This | 
|  | // proxies |[CLLocationManager authorizationStatus]|, so that we can write unit | 
|  | // tests for client classes by mocking this class. | 
|  | @property(nonatomic, readonly) CLAuthorizationStatus authorizationStatus; | 
|  |  | 
|  | // Returns the most recently fetched location. | 
|  | @property(strong, nonatomic, readonly) CLLocation* currentLocation; | 
|  |  | 
|  | // The delegate object for this instance of LocationManager. | 
|  | @property(weak, nonatomic) id<LocationManagerDelegate> delegate; | 
|  |  | 
|  | // Boolean value indicating whether location services are enabled on the | 
|  | // device. This proxies |[CLLocationManager locationServicesEnabled]|, so that | 
|  | // we can write unit tests for client classes by mocking this class. | 
|  | @property(nonatomic, readonly) BOOL locationServicesEnabled; | 
|  |  | 
|  | // Starts updating device location if needed. | 
|  | - (void)startUpdatingLocation; | 
|  |  | 
|  | // Stops updating device location. | 
|  | - (void)stopUpdatingLocation; | 
|  |  | 
|  | @end | 
|  |  | 
|  | #endif  // IOS_CHROME_BROWSER_GEOLOCATION_LOCATION_MANAGER_H_ |