| // Copyright 2015 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. |
| |
| [DartPackage="mojo_services"] |
| module mojo; |
| |
| import "location/interfaces/location.mojom"; |
| |
| // LocationService provides updates on the device's location. |
| // NOTE: This is specifically targetted towards use on Android by |
| // implementations which are thin wrappers over the Android Location API or the |
| // Google Play Services Location API. If we ever want to expand this to multiple |
| // platforms or if it starts growing in complexity, we should strongly consider |
| // use of Chromium's geolocation code. |
| [ServiceName="mojo::LocationService"] |
| interface LocationService { |
| enum UpdatePriority { |
| // Use this setting to request location precision to within a city block. |
| PRIORITY_BALANCED_POWER_ACCURACY, |
| // Use this setting to request the most precise location possible. |
| PRIORITY_HIGH_ACCURACY, |
| // Use this setting to request city-level precision. |
| PRIORITY_LOW_POWER, |
| // Use this setting if you need negligible impact on power consumption, |
| // but want to receive location updates when available. |
| PRIORITY_NO_POWER, |
| }; |
| |
| // Returns a location when it changes, based on |priority|. If this is the |
| // initial call, the last known location is returned immediately, if |
| // available. |
| // Returns NULL if the client requests a new location while a request is |
| // already in flight. |
| GetNextLocation(UpdatePriority priority) => (Location? location); |
| }; |