// 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_TEST_LOCATION_MANAGER_H_
#define IOS_CHROME_BROWSER_GEOLOCATION_TEST_LOCATION_MANAGER_H_

#import "ios/chrome/browser/geolocation/location_manager.h"

// Implements a fake LocationManager for unit tests and KIF tests.
@interface TestLocationManager : LocationManager

// Writable version of the LocationManager |authorizationStatus| property. If
// the new value is different from the previous value, then invokes the
// LocationManagerDelegate |locationManagerDidChangeAuthorizationStatus:|
// method.
@property(nonatomic, assign) CLAuthorizationStatus authorizationStatus;

// Writable version of the LocationManager |currentLocation| property.
@property(nonatomic, retain) CLLocation* currentLocation;

// Writable version of the LocationManager |locationServicesEnabled| property.
@property(nonatomic, assign) BOOL locationServicesEnabled;

// Returns YES if and only if LocationManager |startUpdatingLocation| has been
// invoked at least once since initialization or the last call to |reset|.
@property(nonatomic, readonly) BOOL started;

// Returns YES if and only if LocationManager |stopUpdatingLocation| has been
// invoked at least once since initialization or the last call to |reset|.
@property(nonatomic, readonly) BOOL stopped;

// Resets |authorizationStatus|, |currentLocation|, |locationServicesEnabled|,
// |started|, and |stopped| to the initialized state. Does not reset
// |delegate|.
- (void)reset;

@end

#endif  // IOS_CHROME_BROWSER_GEOLOCATION_TEST_LOCATION_MANAGER_H_