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

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

source_set("tests") {
  testonly = true

  sources = [
    "data_pipe_utils_unittest.cc",
  ]

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