blob: a8a12adb2336f53192401c020219461c91c10ccd [file] [log] [blame]
// 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_