// Copyright (c) 2013 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. // TODO(vadimt): Consider reusing WebKit/Blink types, if this is possible. // Use the chrome.location API to retrieve the geographic location // of the host machine. This API is a version of the HTML Geolocation API // that is compatible with event pages. namespace location { // Coordinates part of the Location object. dictionary Coordinates { // The geographic latitude specified in degrees. double latitude; // The geographic longitude specified in degrees. double longitude; // The height of the position, specified in meters above the [WGS84] // ellipsoid, or null if Chrome cannot provide altitude information. double? altitude; // The accuracy of the latitude and longitude coordinates, in meters. This // represents the radius of a circle around the given location. double accuracy; // The accuracy in meters of the 'altitude' attribute if it's not null, // otherwise, null. double? altitudeAccuracy; // The direction of travel of the hosting device and is specified in // degrees, where 0 <= heading < 360, counting clockwise relative to the // true north. If the Chrome cannot provide heading information, the value // of this attribute is null. If the hosting device is stationary (i.e. the // value of the speed attribute is 0), then the value of the heading // attribute is NaN. double? heading; // The magnitude of the horizontal component of the hosting device's current // velocity and is specified in meters per second. If the Chrome cannot // provide speed information, the value of this attribute is null. double? speed; }; // Parameter of onLocationUpdate event's listener. dictionary Location { // Location watch request name. DOMString name; // Coordinates and their accuracy. Coordinates coords; // The time when the Location object was acquired in milliseconds since the // start of the Unix Epoch. double timestamp; }; // Parameter of watchLocation call. dictionary WatchLocationRequestInfo { // Minimum distance between location updates, in meters. Defaults to 0 - any // change in location will be reported. double? minDistanceInMeters; // Minimum time interval between location updates, in milliseconds. Defaults // to 0 - system-defined frequency of updates will be used. double? minTimeInMilliseconds; // Maximum age of a cached location, in milliseconds, that Chrome can pass // to the first onLocationUpdate event for this location watch request. // If this value <= 0, Chrome will always attempt to acquire a new location. // Defaults to 0. long? maximumAge; }; // TODO(vadimt): Consider adding getWatch() and getAllWatches(). interface Functions { // Starts a location watching request. If there is another location watching // request with the same name (or no name if none is specified), it will be // cancelled and replaced by this request. // |name| : Optional name to identify this request. Defaults to the empty // string. // |requestInfo| : Optional parameters for this request. static void watchLocation(DOMString name, WatchLocationRequestInfo requestInfo); // Ends a location watching request. // |name| : Optional name to identify the request to remove. Defaults to the // empty string. static void clearWatch(DOMString name); }; interface Events { // Fired when a location change is detected. // |location| : An object containing matching events and new location. static void onLocationUpdate(Location location); // Fired when detecting location in not possible. // |error| : Human-readable error description. static void onLocationError(DOMString error); }; };