fake_location_provider.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef SERVICES_DEVICE_GEOLOCATION_FAKE_LOCATION_PROVIDER_H_
  5. #define SERVICES_DEVICE_GEOLOCATION_FAKE_LOCATION_PROVIDER_H_
  6. #include "base/compiler_specific.h"
  7. #include "base/memory/ref_counted.h"
  8. #include "base/task/single_thread_task_runner.h"
  9. #include "base/threading/thread.h"
  10. #include "services/device/public/cpp/geolocation/location_provider.h"
  11. #include "services/device/public/mojom/geoposition.mojom.h"
  12. namespace device {
  13. // Fake implementation of a location provider for testing.
  14. class FakeLocationProvider : public LocationProvider {
  15. public:
  16. enum State { STOPPED, LOW_ACCURACY, HIGH_ACCURACY } state_ = STOPPED;
  17. FakeLocationProvider();
  18. FakeLocationProvider(const FakeLocationProvider&) = delete;
  19. FakeLocationProvider& operator=(const FakeLocationProvider&) = delete;
  20. ~FakeLocationProvider() override;
  21. // Updates listeners with the new position.
  22. void HandlePositionChanged(const mojom::Geoposition& position);
  23. State state() const { return state_; }
  24. bool is_permission_granted() const { return is_permission_granted_; }
  25. // LocationProvider implementation.
  26. void SetUpdateCallback(
  27. const LocationProviderUpdateCallback& callback) override;
  28. void StartProvider(bool high_accuracy) override;
  29. void StopProvider() override;
  30. const mojom::Geoposition& GetPosition() override;
  31. void OnPermissionGranted() override;
  32. scoped_refptr<base::SingleThreadTaskRunner> provider_task_runner_;
  33. private:
  34. bool is_permission_granted_ = false;
  35. mojom::Geoposition position_;
  36. LocationProviderUpdateCallback callback_;
  37. };
  38. } // namespace device
  39. #endif // SERVICES_DEVICE_GEOLOCATION_FAKE_LOCATION_PROVIDER_H_