}
LocationProviderEfl::LocationProviderEfl()
- : location_manager_(nullptr)
-#if !defined(EWK_BRINGUP)
- ,
- task_runner_(base::SingleThreadTaskRunner::GetCurrentDefault())
-#endif
-{
-}
+ : location_manager_(nullptr),
+ task_runner_(base::SingleThreadTaskRunner::GetCurrentDefault()) {}
LocationProviderEfl::~LocationProviderEfl() {
StopProvider();
direction, horizontal_accuracy,
timestamp);
}
-void LocationProviderEfl::NotifyCallback(const mojom::Geoposition& position) {
-#if !defined(EWK_BRINGUP)
+
+void LocationProviderEfl::NotifyCallback(mojom::GeopositionResultPtr position) {
+ last_position_ = std::move(position);
if (!callback_.is_null())
- callback_.Run(this, position);
-#endif
+ callback_.Run(this, last_position_.Clone());
}
void LocationProviderEfl::SetUpdateCallback(
double direction,
double horizontal_accuracy,
time_t timestamp) {
-#if !defined(EWK_BRINGUP)
+
DCHECK(location_manager_);
DCHECK(task_runner_);
- last_position_.latitude = latitude;
- last_position_.longitude = longitude;
- last_position_.altitude = altitude;
- last_position_.timestamp = base::Time::FromTimeT(timestamp);
- last_position_.speed = KilometerPerHourToMeterPerSecond(speed);
- last_position_.heading = direction;
+ auto position = mojom::Geoposition::New();
+ position->latitude = latitude;
+ position->longitude = longitude;
+ position->altitude = altitude;
+ position->timestamp = base::Time::FromTimeT(timestamp);
+ position->speed = KilometerPerHourToMeterPerSecond(speed);
+ position->heading = direction;
+
location_accuracy_level_e level;
- location_manager_get_last_accuracy(location_manager_,
- &level, &last_position_.accuracy, &last_position_.altitude_accuracy);
+ location_manager_get_last_accuracy(location_manager_, &level,
+ &position->accuracy,
+ &position->altitude_accuracy);
+
+ auto position_ptr =
+ mojom::GeopositionResult::NewPosition(std::move(position));
base::OnceClosure task =
base::BindOnce(&LocationProviderEfl::NotifyCallback,
- base::Unretained(this), last_position_);
+ base::Unretained(this), std::move(position_ptr));
task_runner_->PostTask(FROM_HERE, std::move(task));
-#endif
}
void LocationProviderEfl::StartProvider(bool high_accuracy) {
}
const mojom::GeopositionResult* LocationProviderEfl::GetPosition() {
- return last_position_;
+ return last_position_.get();
}
void LocationProviderEfl::OnPermissionGranted() {
void*);
void
NotifyPositionChanged(double, double, double, double, double, double, time_t);
- void NotifyCallback(const mojom::Geoposition&);
+ void NotifyCallback(mojom::GeopositionResultPtr);
- mojom::GeopositionResult* last_position_;
+ mojom::GeopositionResultPtr last_position_;
location_manager_h location_manager_;
-#if !defined(EWK_BRINGUP)
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-#endif
LocationProviderUpdateCallback callback_;
};