# 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")

# file_utils is a helper library for utility functions relating to the Mojo
# files service.
source_set("file_utils") {
  sources = [
    "file_util.cc",
    "file_util.h",
  ]

  public_deps = [
    "//mojo/services/files/interfaces",
    "//mojo/services/files/interfaces:interfaces_sync",
  ]
}

mojo_native_application("file_utils_apptests") {
  output_name = "file_utils_apptests"

  testonly = true

  sources = [
    "file_util_unittest.cc",
  ]

  deps = [
    ":file_utils",
    "//mojo/public/cpp/application:standalone",
    "//mojo/public/cpp/application:test_support_standalone",
    "//mojo/public/cpp/utility",
    "//testing/gtest",
  ]
}
