# 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.

# 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",
    "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",
  ]

  defines = [ "MOJO_COMMON_IMPLEMENTATION" ]

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

# GYP version: mojo/mojo_base.gyp:mojo_common_unittests
test("mojo_common_unittests") {
  deps = [
    ":common",
    "//base",
    "//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/test_support:test_utils",
    "//testing/gtest",
    "//url",
  ]

  sources = [
    "common_type_converters_unittest.cc",
    "handle_watcher_unittest.cc",
    "message_pump_mojo_unittest.cc",
  ]
}
