// 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);
};
};