electron/shell/browser/fake_location_provider.cc

55 lines
1.6 KiB
C++

// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "shell/browser/fake_location_provider.h"
#include "base/functional/callback.h"
#include "base/time/time.h"
#include "services/device/public/mojom/geoposition.mojom-shared.h"
#include "services/device/public/mojom/geoposition.mojom.h"
namespace electron {
FakeLocationProvider::FakeLocationProvider() {
result_ = device::mojom::GeopositionResult::NewError(
device::mojom::GeopositionError::New(
device::mojom::GeopositionErrorCode::kPositionUnavailable,
"Position unavailable.", ""));
}
FakeLocationProvider::~FakeLocationProvider() = default;
void FakeLocationProvider::FillDiagnostics(
device::mojom::GeolocationDiagnostics& diagnostics) {
diagnostics.provider_state = state_;
}
void FakeLocationProvider::SetUpdateCallback(
const LocationProviderUpdateCallback& callback) {
callback_ = callback;
}
void FakeLocationProvider::StartProvider(bool high_accuracy) {
state_ =
high_accuracy
? device::mojom::GeolocationDiagnostics::ProviderState::kHighAccuracy
: device::mojom::GeolocationDiagnostics::ProviderState::kLowAccuracy;
}
void FakeLocationProvider::StopProvider() {
state_ = device::mojom::GeolocationDiagnostics::ProviderState::kStopped;
}
const device::mojom::GeopositionResult* FakeLocationProvider::GetPosition() {
return result_.get();
}
void FakeLocationProvider::OnPermissionGranted() {
if (!callback_.is_null()) {
callback_.Run(this, result_.Clone());
}
}
} // namespace electron