| Index: content/renderer/geolocation_dispatcher.cc
|
| diff --git a/content/renderer/geolocation_dispatcher.cc b/content/renderer/geolocation_dispatcher.cc
|
| index b59cb61f70469ffdc7d073e742ae2282f4600845..ce56f8eaa78e079d9210b7df67c76ccc7a0e45d1 100644
|
| --- a/content/renderer/geolocation_dispatcher.cc
|
| +++ b/content/renderer/geolocation_dispatcher.cc
|
| @@ -32,13 +32,13 @@ GeolocationDispatcher::GeolocationDispatcher(RenderFrame* render_frame)
|
| GeolocationDispatcher::~GeolocationDispatcher() {}
|
|
|
| void GeolocationDispatcher::startUpdating() {
|
| - if (!geolocation_service_.get()) {
|
| + if (!geolocation_service_) {
|
| render_frame()->GetServiceRegistry()->ConnectToRemoteService(
|
| &geolocation_service_);
|
| - geolocation_service_.set_client(this);
|
| }
|
| if (enable_high_accuracy_)
|
| geolocation_service_->SetHighAccuracy(true);
|
| + QueryNextPosition();
|
| }
|
|
|
| void GeolocationDispatcher::stopUpdating() {
|
| @@ -53,7 +53,7 @@ void GeolocationDispatcher::setEnableHighAccuracy(bool enable_high_accuracy) {
|
| bool has_changed = enable_high_accuracy_ != enable_high_accuracy;
|
| enable_high_accuracy_ = enable_high_accuracy;
|
| // We have a different accuracy requirement. Request browser to update.
|
| - if (geolocation_service_.get() && has_changed)
|
| + if (geolocation_service_ && has_changed)
|
| geolocation_service_->SetHighAccuracy(enable_high_accuracy_);
|
| }
|
|
|
| @@ -107,8 +107,15 @@ void GeolocationDispatcher::OnPermissionSet(
|
| permissionRequest.setIsAllowed(status == PERMISSION_STATUS_GRANTED);
|
| }
|
|
|
| -void GeolocationDispatcher::OnLocationUpdate(MojoGeopositionPtr geoposition) {
|
| - DCHECK(geolocation_service_.get());
|
| +void GeolocationDispatcher::QueryNextPosition() {
|
| + DCHECK(geolocation_service_);
|
| + geolocation_service_->QueryNextPosition(
|
| + base::Bind(&GeolocationDispatcher::OnPositionUpdate,
|
| + base::Unretained(this)));
|
| +}
|
| +
|
| +void GeolocationDispatcher::OnPositionUpdate(MojoGeopositionPtr geoposition) {
|
| + QueryNextPosition();
|
|
|
| if (geoposition->valid) {
|
| controller_->positionChanged(WebGeolocationPosition(
|
|
|