fake_location_provider.cc 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright (c) 2018 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #include "shell/browser/fake_location_provider.h"
  5. #include "services/device/public/mojom/geoposition.mojom-shared.h"
  6. #include "services/device/public/mojom/geoposition.mojom.h"
  7. namespace electron {
  8. FakeLocationProvider::FakeLocationProvider() {
  9. result_ = device::mojom::GeopositionResult::NewError(
  10. device::mojom::GeopositionError::New(
  11. device::mojom::GeopositionErrorCode::kPositionUnavailable,
  12. "Position unavailable.", ""));
  13. }
  14. FakeLocationProvider::~FakeLocationProvider() = default;
  15. void FakeLocationProvider::FillDiagnostics(
  16. device::mojom::GeolocationDiagnostics& diagnostics) {
  17. diagnostics.provider_state = state_;
  18. }
  19. void FakeLocationProvider::SetUpdateCallback(
  20. const LocationProviderUpdateCallback& callback) {
  21. callback_ = callback;
  22. }
  23. void FakeLocationProvider::StartProvider(bool high_accuracy) {
  24. state_ =
  25. high_accuracy
  26. ? device::mojom::GeolocationDiagnostics::ProviderState::kHighAccuracy
  27. : device::mojom::GeolocationDiagnostics::ProviderState::kLowAccuracy;
  28. }
  29. void FakeLocationProvider::StopProvider() {
  30. state_ = device::mojom::GeolocationDiagnostics::ProviderState::kStopped;
  31. }
  32. const device::mojom::GeopositionResult* FakeLocationProvider::GetPosition() {
  33. return result_.get();
  34. }
  35. void FakeLocationProvider::OnPermissionGranted() {
  36. if (!callback_.is_null()) {
  37. callback_.Run(this, result_.Clone());
  38. }
  39. }
  40. } // namespace electron