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