1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // This file declares the Geoposition structure, used to represent a position 6 // fix. It was originally derived from: 7 // http://gears.googlecode.com/svn/trunk/gears/geolocation/geolocation.h 8 9 #ifndef CONTENT_PUBLIC_COMMON_GEOPOSITION_H_ 10 #define CONTENT_PUBLIC_COMMON_GEOPOSITION_H_ 11 12 #include <string> 13 14 #include "base/time/time.h" 15 #include "content/common/content_export.h" 16 17 namespace content { 18 19 struct CONTENT_EXPORT Geoposition { 20 public: 21 // These values follow the W3C geolocation specification and can be returned 22 // to JavaScript without the need for a conversion. 23 enum ErrorCode { 24 ERROR_CODE_NONE = 0, // Chrome addition. 25 ERROR_CODE_PERMISSION_DENIED = 1, 26 ERROR_CODE_POSITION_UNAVAILABLE = 2, 27 ERROR_CODE_TIMEOUT = 3, 28 ERROR_CODE_LAST = ERROR_CODE_TIMEOUT 29 }; 30 31 // All fields are initialized to sentinel values marking them as invalid. The 32 // error code is set to ERROR_CODE_NONE. 33 Geoposition(); 34 35 // A valid fix has a valid latitude, longitude, accuracy and timestamp. 36 bool Validate() const; 37 38 // These properties correspond to those of the JavaScript Position object 39 // although their types may differ. 40 // Latitude in decimal degrees north (WGS84 coordinate frame). 41 double latitude; 42 // Longitude in decimal degrees west (WGS84 coordinate frame). 43 double longitude; 44 // Altitude in meters (above WGS84 datum). 45 double altitude; 46 // Accuracy of horizontal position in meters. 47 double accuracy; 48 // Accuracy of altitude in meters. 49 double altitude_accuracy; 50 // Heading in decimal degrees clockwise from true north. 51 double heading; 52 // Horizontal component of device velocity in meters per second. 53 double speed; 54 // Time of position measurement in milisecons since Epoch in UTC time. This is 55 // taken from the host computer's system clock (i.e. from Time::Now(), not the 56 // source device's clock). 57 base::Time timestamp; 58 59 // Error code, see enum above. 60 ErrorCode error_code; 61 // Human-readable error message. 62 std::string error_message; 63 }; 64 65 } // namespace content 66 67 #endif // CONTENT_COMMON_GEOPOSITION_H_ 68