diff options
Diffstat (limited to 'content/common/geoposition.h')
-rw-r--r-- | content/common/geoposition.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/content/common/geoposition.h b/content/common/geoposition.h new file mode 100644 index 0000000..9f8f14e --- /dev/null +++ b/content/common/geoposition.h @@ -0,0 +1,65 @@ +// Copyright (c) 2010 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. + +// This file declares the Position structure, which is used to represent a +// position fix. Originally derived from +// http://gears.googlecode.com/svn/trunk/gears/geolocation/geolocation.h + +#ifndef CONTENT_COMMON_GEOPOSITION_H_ +#define CONTENT_COMMON_GEOPOSITION_H_ +#pragma once + +#include <string> +#include "base/time.h" + +// The internal representation of a geo position. Some properties use different +// types when passed to JavaScript. +struct Geoposition { + public: + // Error codes for returning to JavaScript. These values are defined by the + // W3C spec. Note that Gears does not use all of these codes, but we need + // values for all of them to allow us to provide the constants on the error + // object. + enum ErrorCode { + ERROR_CODE_NONE = 0, // Chrome addition + ERROR_CODE_PERMISSION_DENIED = 1, + ERROR_CODE_POSITION_UNAVAILABLE = 2, + ERROR_CODE_TIMEOUT = 3, + }; + + Geoposition(); + + bool is_valid_latlong() const; + bool is_valid_altitude() const; + bool is_valid_accuracy() const; + bool is_valid_altitude_accuracy() const; + bool is_valid_heading() const; + bool is_valid_speed() const; + bool is_valid_timestamp() const; + + // A valid fix has a valid latitude, longitude, accuracy and timestamp. + bool IsValidFix() const; + + // A position is considered initialized if it has either a valid fix or + // an error code other than NONE. + bool IsInitialized() const; + + // These properties correspond to the JavaScript Position object. + double latitude; // In degrees + double longitude; // In degrees + double altitude; // In metres + double accuracy; // In metres + double altitude_accuracy; // In metres + double heading; // In degrees clockwise relative to the true north + double speed; // In meters per second + // Timestamp for this position fix object taken from the host computer's + // system clock (i.e. from Time::Now(), not the source device's clock). + base::Time timestamp; + + // These properties are returned to JavaScript as a PositionError object. + ErrorCode error_code; + std::string error_message; // Human-readable error message +}; + +#endif // CONTENT_COMMON_GEOPOSITION_H_ |