# Copyright 2015 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/mojo_application.gni")

source_set("data_pipe_utils") {
  sources = [
    "data_pipe_drainer.cc",
    "data_pipe_drainer.h",
    "data_pipe_file_utils.cc",
    "data_pipe_utils.cc",
    "data_pipe_utils.h",
    "data_pipe_utils_internal.h",
  ]

  if (is_nacl) {
    sources -= [ "data_pipe_file_utils.cc" ]
  }

  deps = [
    "//base",
    "//mojo/message_pump",
    "//mojo/public/cpp/environment:environment",
  ]

  public_deps = [
    "//mojo/public/cpp/system",
  ]
}

mojo_native_application("mojo_data_pipe_utils_apptests") {
  testonly = true

  sources = [
    "data_pipe_utils_unittest.cc",
  ]

  deps = [
    ":data_pipe_utils",
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//testing/gtest",
  ]
}
