# 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",
    "//mojo/public/cpp/system",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "data_pipe_utils_unittest.cc",
  ]

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