chromium/components/cast/message_port/BUILD.gn

# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/buildflag_header.gni")
import("//build/config/features.gni")
import("//testing/test.gni")

declare_args() {
  # If true, forces cast_api_bindings::CreatePlatformMessagePortPair to use
  # cast_message_port::CreateMessagePortPair as its implementation. Otherwise,
  # uses one of the other types based on platform.
  use_message_port_core = false
}

buildflag_header("message_port_buildflags") {
  header = "message_port_buildflags.h"
  flags = [ "USE_MESSAGE_PORT_CORE=$use_message_port_core" ]
}

source_set("message_port") {
  public = [ "platform_message_port.h" ]
  sources = [ "platform_message_port.cc" ]

  public_deps = [ ":public" ]
  deps = [
    ":message_port_buildflags",
    "//base",
  ]

  if (use_message_port_core) {
    public_deps += [ ":message_port_core" ]
  } else if (is_fuchsia) {
    public_deps += [ ":message_port_fuchsia" ]
  } else {
    public_deps += [ ":message_port_cast" ]
  }
}

source_set("blink_message_port_adapter") {
  public = [ "blink_message_port_adapter.h" ]
  sources = [ "blink_message_port_adapter.cc" ]

  public_deps = [
    ":message_port",
    "//third_party/blink/public/common",
  ]
  deps = [
    ":message_port_cast",
    "//base",
  ]
}

source_set("public") {
  sources = [
    "message_port.cc",
    "message_port.h",
  ]

  deps = [
    "//base",
    "//components/cast:export",
  ]

  defines = [ "CAST_COMPONENT_IMPLEMENTATION" ]
}

if (is_fuchsia) {
  source_set("message_port_fuchsia") {
    public = [
      "fuchsia/create_web_message.h",
      "fuchsia/message_port_fuchsia.h",
    ]

    sources = [
      "fuchsia/create_web_message.cc",
      "fuchsia/message_port_fuchsia.cc",
    ]

    public_deps = [
      ":public",
      "//base",
      "//third_party/abseil-cpp:absl",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web:fuchsia.web_hlcpp",
    ]

    deps = [ "//third_party/fuchsia-sdk/sdk/pkg/fit-promise" ]
  }
}

source_set("message_port_cast") {
  public = [ "cast/message_port_cast.h" ]

  sources = [ "cast/message_port_cast.cc" ]

  public_deps = [
    ":public",
    "//third_party/blink/public/common",
  ]

  deps = [
    ":public",
    "//base",
    "//third_party/blink/public/common",
  ]
}

source_set("message_port_core") {
  public = [
    "cast_core/create_message_port_core.h",
    "cast_core/message_connector.h",
    "cast_core/message_port_core.h",
    "cast_core/message_port_core_with_task_runner.h",
  ]

  sources = [
    "cast_core/create_message_port_core.cc",
    "cast_core/message_connector.cc",
    "cast_core/message_port_core.cc",
    "cast_core/message_port_core_with_task_runner.cc",
  ]

  public_deps = [ ":public" ]

  deps = [
    ":public",
    "//base",
  ]
}

source_set("message_port_unittest") {
  testonly = true
  sources = [ "message_port_unittest.cc" ]
  deps = [
    ":blink_message_port_adapter",
    ":message_port",
    ":message_port_buildflags",
    ":message_port_cast",
    ":message_port_core",
    ":test_message_port_receiver",
    "//base/test:test_support",
    "//testing/gtest",
  ]

  if (is_fuchsia) {
    deps += [ ":message_port_fuchsia" ]
  }
}

source_set("test_message_port_receiver") {
  testonly = true
  sources = [
    "test_message_port_receiver.cc",
    "test_message_port_receiver.h",
  ]
  deps = [
    ":public",
    "//base",
  ]
}