# Copyright 2014 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("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")

# GYP version: mojo/mojo_base.gyp:mojo_common_lib
component("common") {
  output_name = "mojo_common_lib"

  sources = [
    "common_type_converters.cc",
    "common_type_converters.h",
    "data_pipe_utils.cc",
    "data_pipe_utils.h",
    "data_pipe_drainer.h",
    "data_pipe_drainer.cc",
    "handle_watcher.cc",
    "handle_watcher.h",
    "message_pump_mojo.cc",
    "message_pump_mojo.h",
    "message_pump_mojo_handler.h",
    "time_helper.cc",
    "time_helper.h",
    "weak_binding_set.h",
  ]

  defines = [ "MOJO_COMMON_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//mojo/public/c/system",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//url",
  ]
}

# GYP version: mojo/mojo_base.gyp:mojo_common_unittests
test("mojo_common_unittests") {
  sources = [
    "common_type_converters_unittest.cc",
    "data_pipe_utils_unittest.cc",
    "handle_watcher_unittest.cc",
    "message_pump_mojo_unittest.cc",
  ]

  deps = [
    ":common",
    "//base",
    "//base/test:test_support",
    "//base:message_loop_tests",
    "//mojo/edk/test:run_all_unittests",
    "//mojo/edk/test:test_support",
    "//mojo/environment:chromium",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/test_support:test_utils",
    "//testing/gtest",
    "//url",
  ]
}

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

  deps = [
    "//base",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings",
    "//services/tracing:bindings",
  ]
}
