Home | History | Annotate | Download | only in common
      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