Index: content/public/common/geoposition.cc |
diff --git a/content/public/common/geoposition.cc b/content/public/common/geoposition.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d885d4e539c4891e9b4f16925d59a77c27598939 |
--- /dev/null |
+++ b/content/public/common/geoposition.cc |
@@ -0,0 +1,41 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "content/public/common/geoposition.h" |
+ |
+namespace { |
+// Sentinel values to mark invalid data. (WebKit carries companion is_valid |
+// bools for this purpose; we may eventually follow that approach, but |
+// sentinels worked OK in the Gears code this is based on.) |
+const double kBadLatitudeLongitude = 200; |
+// Lowest point on land is at approximately -400 meters. |
+const int kBadAltitude = -10000; |
+const int kBadAccuracy = -1; // Accuracy must be non-negative. |
+const int kBadHeading = -1; // Heading must be non-negative. |
+const int kBadSpeed = -1; |
+} |
+ |
+namespace content { |
+ |
+Geoposition::Geoposition() |
+ : latitude(kBadLatitudeLongitude), |
+ longitude(kBadLatitudeLongitude), |
+ altitude(kBadAltitude), |
+ accuracy(kBadAccuracy), |
+ altitude_accuracy(kBadAccuracy), |
+ heading(kBadHeading), |
+ speed(kBadSpeed), |
+ error_code(ERROR_CODE_NONE) { |
+} |
+ |
+Geoposition::Geoposition(const Geoposition& other) = default; |
+ |
+bool Geoposition::Validate() const { |
+ return latitude >= -90. && latitude <= 90. && |
+ longitude >= -180. && longitude <= 180. && |
+ accuracy >= 0. && |
+ !timestamp.is_null(); |
+} |
+ |
+} // namespace content |