# Copyright 2020 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/components.gni")
import("//build/config.gni")
import("//build/flutter/config.gni")
import("//build/test.gni")

group("tests") {
  testonly = true
  deps = [
    ":flutter-embedder-test",
    ":flutter-embedder-test-ip",

    # The deps below are necessary on minimal product configs.
    "//src/graphics/bin/vulkan_loader",

    # TODO(fxbug.dev/24643): remove
    "//src/ui/bin/text:text_manager",
    "//src/ui/tests/integration_flutter_tests/embedder/child-view",
    "//src/ui/tests/integration_flutter_tests/embedder/parent-view",
  ]
}

fuchsia_unittest_package("flutter-embedder-test") {
  manifest = "meta/flutter-embedder-test.cml"
  deps = [
    ":flutter-embedder-test-bin",
    "//src/connectivity/network/netstack:component-legacy",
    "//src/lib/fuchsia-component-test/realm_builder_server:fuchsia-component-test",
    "//src/ui/bin/root_presenter:component_v2_for_test",
    "//src/ui/testing/ui_test_manager:scenic_only",
    "//src/ui/tests/integration_flutter_tests/embedder/child-view",
    "//src/ui/tests/integration_flutter_tests/embedder/parent-view",
  ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
    environments = [ aemu_env ]
  }
}

test("flutter-embedder-test-bin") {
  sources = [
    "embedder_view.h",
    "flutter-embedder-test.cc",
    "flutter-embedder-test.h",
  ]
  output_name = "flutter-embedder-test"
  deps = [
    "//sdk/fidl/fuchsia.accessibility.semantics",
    "//sdk/fidl/fuchsia.hardware.display",
    "//sdk/fidl/fuchsia.logger",
    "//sdk/fidl/fuchsia.scheduler",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.tracing.provider",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.pointerinjector",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//sdk/fidl/fuchsia.vulkan.loader",
    "//sdk/lib/fit",
    "//sdk/lib/sys/component/cpp/testing:cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:integration_fixture",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//src/ui/testing/views",
    "//zircon/system/ulib/zx",
  ]
}

fuchsia_unittest_package("flutter-embedder-test-ip") {
  manifest = "meta/flutter-embedder-test-ip.cml"
  deps = [
    ":flutter-embedder-test-ip-bin",
    "//src/connectivity/network/netstack:component-legacy",
    "//src/lib/fuchsia-component-test/realm_builder_server:fuchsia-component-test",
    "//src/ui/testing/ui_test_manager:test_realms",
    "//src/ui/tests/integration_flutter_tests/embedder/child-view",
    "//src/ui/tests/integration_flutter_tests/embedder/parent-view",
  ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
    environments = [ aemu_env ]
  }
}

test("flutter-embedder-test-ip-bin") {
  sources = [
    "embedder_view.h",
    "flutter-embedder-test-ip.cc",
    "flutter-embedder-test-ip.h",
  ]
  output_name = "flutter-embedder-test-ip"
  deps = [
    "//sdk/fidl/fuchsia.hardware.display",
    "//sdk/fidl/fuchsia.input.injection",
    "//sdk/fidl/fuchsia.logger",
    "//sdk/fidl/fuchsia.scheduler",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.tracing.provider",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.pointerinjector.configuration",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/fidl/fuchsia.ui.scenic",
    "//sdk/fidl/fuchsia.vulkan.loader",
    "//sdk/lib/fit",
    "//sdk/lib/sys/component/cpp/testing:cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:integration_fixture",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//src/ui/input/testing/fake_input_report_device",
    "//src/ui/testing/views",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/zx",
  ]
}
