# Copyright 2013 The Flutter 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("//flutter/testing/testing.gni")
import("core_wrapper_files.gni")

# Client library build for internal use by the shell implementation.
source_set("client_wrapper") {
  sources = core_cpp_client_wrapper_sources
  public = core_cpp_client_wrapper_includes

  deps = [
    "//flutter/shell/platform/common/cpp:common_cpp_library_headers",
  ]

  configs +=
      [ "//flutter/shell/platform/common/cpp:desktop_library_implementation" ]

  public_configs =
      [ "//flutter/shell/platform/common/cpp:relative_flutter_library_headers" ]
}

source_set("client_wrapper_library_stubs") {
  sources = [
    "testing/stub_flutter_api.cc",
    "testing/stub_flutter_api.h",
  ]

  defines = [ "FLUTTER_DESKTOP_LIBRARY" ]

  public_deps = [
    "//flutter/shell/platform/common/cpp:common_cpp_library_headers",
  ]
}

test_fixtures("client_wrapper_fixtures") {
  fixtures = []
}

executable("client_wrapper_unittests") {
  testonly = true

  sources = [
    "basic_message_channel_unittests.cc",
    "encodable_value_unittests.cc",
    "event_channel_unittests.cc",
    "method_call_unittests.cc",
    "method_channel_unittests.cc",
    "method_result_functions_unittests.cc",
    "plugin_registrar_unittests.cc",
    "standard_message_codec_unittests.cc",
    "standard_method_codec_unittests.cc",
    "testing/encodable_value_utils.cc",
    "testing/encodable_value_utils.h",
  ]

  deps = [
    ":client_wrapper",
    ":client_wrapper_fixtures",
    ":client_wrapper_library_stubs",
    "//flutter/testing",

    # TODO(chunhtai): Consider refactoring flutter_root/testing so that there's a testing
    # target that doesn't require a Dart runtime to be linked in.
    # https://github.com/flutter/flutter/issues/41414.
    "//third_party/dart/runtime:libdart_jit",
  ]

  defines = [ "FLUTTER_DESKTOP_LIBRARY" ]
}
