- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / common / geoposition.h
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   };
29
30   // All fields are initialized to sentinel values marking them as invalid. The
31   // error code is set to ERROR_CODE_NONE.
32   Geoposition();
33
34   // A valid fix has a valid latitude, longitude, accuracy and timestamp.
35   bool Validate() const;
36
37   // These properties correspond to those of the JavaScript Position object
38   // although their types may differ.
39   // Latitude in decimal degrees north (WGS84 coordinate frame).
40   double latitude;
41   // Longitude in decimal degrees west (WGS84 coordinate frame).
42   double longitude;
43   // Altitude in meters (above WGS84 datum).
44   double altitude;
45   // Accuracy of horizontal position in meters.
46   double accuracy;
47   // Accuracy of altitude in meters.
48   double altitude_accuracy;
49   // Heading in decimal degrees clockwise from true north.
50   double heading;
51   // Horizontal component of device velocity in meters per second.
52   double speed;
53   // Time of position measurement in milisecons since Epoch in UTC time. This is
54   // taken from the host computer's system clock (i.e. from Time::Now(), not the
55   // source device's clock).
56   base::Time timestamp;
57
58   // Error code, see enum above.
59   ErrorCode error_code;
60   // Human-readable error message.
61   std::string error_message;
62 };
63
64 }  // namespace content
65
66 #endif  // CONTENT_COMMON_GEOPOSITION_H_