Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(566)

Unified Diff: content/browser/geolocation/gps_location_provider_linux.cc

Issue 8463022: Make chrome communicate with gpsd through libgps/shared memory (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: putting libgps version string into anon namespace Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/geolocation/gps_location_provider_linux.cc
diff --git a/content/browser/geolocation/gps_location_provider_linux.cc b/content/browser/geolocation/gps_location_provider_linux.cc
index 52c8050fe07fcc5d303adca1da3a63f10730ae88..9b53999ec65b9a2cba44307023f0bbcfb8c9f9e7 100644
--- a/content/browser/geolocation/gps_location_provider_linux.cc
+++ b/content/browser/geolocation/gps_location_provider_linux.cc
@@ -46,7 +46,10 @@ bool PositionsDifferSiginificantly(const Geoposition& position_1,
} // namespace
GpsLocationProviderLinux::GpsLocationProviderLinux(LibGpsFactory libgps_factory)
- : libgps_factory_(libgps_factory),
+ : gpsd_reconnect_interval_millis_(kGpsdReconnectRetryIntervalMillis),
+ poll_period_moving_millis_(kPollPeriodMovingMillis),
+ poll_period_stationary_millis_(kPollPeriodStationaryMillis),
+ libgps_factory_(libgps_factory),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
DCHECK(libgps_factory_);
}
@@ -66,7 +69,7 @@ bool GpsLocationProviderLinux::StartProvider(bool high_accuracy) {
position_.error_code = Geoposition::ERROR_CODE_POSITION_UNAVAILABLE;
gps_.reset(libgps_factory_());
if (gps_ == NULL) {
- DLOG(WARNING) << "libgps.so could not be loaded";
+ DLOG(WARNING) << "libgps could not be loaded";
return false;
}
ScheduleNextGpsPoll(0);
@@ -95,19 +98,20 @@ void GpsLocationProviderLinux::OnPermissionGranted(
void GpsLocationProviderLinux::DoGpsPollTask() {
if (!gps_->Start()) {
DLOG(WARNING) << "Couldn't start GPS provider.";
- ScheduleNextGpsPoll(kGpsdReconnectRetryIntervalMillis);
+ ScheduleNextGpsPoll(gpsd_reconnect_interval_millis_);
return;
}
- if (!gps_->Poll()) {
- ScheduleNextGpsPoll(kPollPeriodStationaryMillis);
+
+ Geoposition new_position;
+ if (!gps_->Read(&new_position)) {
+ ScheduleNextGpsPoll(poll_period_stationary_millis_);
return;
}
- Geoposition new_position;
- gps_->GetPosition(&new_position);
+
DCHECK(new_position.IsInitialized());
const bool differ = PositionsDifferSiginificantly(position_, new_position);
- ScheduleNextGpsPoll(differ ? kPollPeriodMovingMillis :
- kPollPeriodStationaryMillis);
+ ScheduleNextGpsPoll(differ ? poll_period_moving_millis_ :
+ poll_period_stationary_millis_);
if (differ || new_position.error_code != Geoposition::ERROR_CODE_NONE) {
// Update if the new location is interesting or we have an error to report.
position_ = new_position;

Powered by Google App Engine
This is Rietveld 408576698