# Copyright 2016 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.

import("//build/config/features.gni")

if (is_android) {
  import("//build/config/android/rules.gni")  # For generate_jni().
}

source_set("generic_sensor") {
  sources = [
    "platform_sensor.cc",
    "platform_sensor.h",
    "platform_sensor_android.cc",
    "platform_sensor_android.h",
    "platform_sensor_provider.h",
    "platform_sensor_provider_android.cc",
    "platform_sensor_provider_base.cc",
    "platform_sensor_provider_base.h",
    "platform_sensor_provider_default.cc",
    "sensor_impl.cc",
    "sensor_impl.h",
    "sensor_provider_impl.cc",
    "sensor_provider_impl.h",
  ]

  deps = [
    "//base",
    "//device/generic_sensor/public/interfaces",
  ]

  if (is_android) {
    sources += [
      "android/sensors_jni_registrar.cc",
      "android/sensors_jni_registrar.h",
    ]
    sources -= [ "platform_sensor_provider_default.cc" ]

    deps += [ ":jni_headers" ]
  }
}

if (is_android) {
  device_sensors_jni_sources = [
    "android/java/src/org/chromium/device/sensors/PlatformSensor.java",
    "android/java/src/org/chromium/device/sensors/PlatformSensorProvider.java",
  ]

  generate_jni("jni_headers") {
    sources = device_sensors_jni_sources
    jni_package = "device"
  }

  android_library("java") {
    java_files = device_sensors_jni_sources

    deps = [
      "//base:base_java",
      "//device/generic_sensor/public/interfaces:interfaces_java",
    ]
  }
}
