// Copyright 2017 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. module device.mojom; // A Geoposition represents a position fix. It was originally derived from: // http://gears.googlecode.com/svn/trunk/gears/geolocation/geolocation.h // TODO(blundell): Investigate killing content::Geoposition in favor of using // this struct everywhere. struct Geoposition { // These values follow the W3C geolocation specification and can be returned // to JavaScript without the need for a conversion. enum ErrorCode { NONE = 0, // Chrome addition. PERMISSION_DENIED = 1, POSITION_UNAVAILABLE = 2, TIMEOUT = 3, LAST = TIMEOUT }; // Whether this geoposition is valid. bool valid; // These properties correspond to those of the JavaScript Position object // although their types may differ. // Latitude in decimal degrees north (WGS84 coordinate frame). double latitude; // Longitude in decimal degrees west (WGS84 coordinate frame). double longitude; // Altitude in meters (above WGS84 datum). double altitude; // Accuracy of horizontal position in meters. double accuracy; // Accuracy of altitude in meters. double altitude_accuracy; // Heading in decimal degrees clockwise from true north. double heading; // Horizontal component of device velocity in meters per second. double speed; // TODO(blundell): If I need to represent this differently to use this // struct to replace content::Geolocation, I'll need to convert // correctly into seconds-since-epoch when using this in // GeolocationDispatcher::OnLocationUpdate(). // Time of position measurement in seconds since Epoch in UTC time. This is // taken from the host computer's system clock (i.e. from Time::Now(), not the // source device's clock). double timestamp; // Error code, see enum above. ErrorCode error_code; // Human-readable error message. string error_message; };