# Copyright 2019 The Fuchsia 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.gni")
import("//build/testing/environments.gni")
import("//src/sys/build/components.gni")

source_set("lib") {
  sources = [
    "activity_app.cc",
    "activity_app.h",
    "activity_control_connection.cc",
    "activity_control_connection.h",
    "activity_provider_connection.cc",
    "activity_provider_connection.h",
    "activity_state_machine.cc",
    "activity_state_machine.h",
    "activity_tracker_connection.cc",
    "activity_tracker_connection.h",
    "state_machine_driver.cc",
    "state_machine_driver.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.ui.activity",
    "//sdk/fidl/fuchsia.ui.activity.control",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":activity-test" ]
}

executable("activity_bin") {
  output_name = "activity"

  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//sdk/lib/sys/cpp",
  ]
}

fuchsia_component("activity-component") {
  component_name = "activity"
  manifest = "meta/activity.cml"
  deps = [ ":activity_bin" ]
}

fuchsia_package("activity") {
  deps = [ ":activity-component" ]
}

executable("activity_test_bin") {
  testonly = true
  output_name = "activity_test"

  sources = [
    "activity_app_test.cc",
    "activity_provider_connection_test.cc",
    "activity_state_machine_test.cc",
    "activity_tracker_connection_test.cc",
    "fake_listener.h",
    "state_machine_driver_test.cc",
  ]
  deps = [
    ":lib",
    "//garnet/public/lib/gtest",
    "//src/lib/fxl/test:gtest_main",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuchsia_component("activity-test-component") {
  testonly = true
  component_name = "activity-test"
  manifest = "meta/activity-test.cmx"
  deps = [ ":activity_test_bin" ]
}

fuchsia_test_package("activity-test") {
  test_components = [ ":activity-test-component" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}
