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

import("//mojo/public/mojo_application.gni")

mojo_native_application("files") {
  sources = [
    "directory_impl.cc",
    "directory_impl.h",
    "file_impl.cc",
    "file_impl.h",
    "files_impl.cc",
    "files_impl.h",
    "futimens.h",
    "futimens_android.cc",
    "main.cc",
    "shared_impl.cc",
    "shared_impl.h",
    "util.cc",
    "util.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings:callback",
    "//mojo/public/cpp/system",
    "//mojo/services/files/public/interfaces",
  ]
}

mojo_native_application("apptests") {
  output_name = "files_apptests"

  testonly = true

  sources = [
    "directory_impl_unittest.cc",
    "file_impl_unittest.cc",
    "files_test_base.cc",
    "files_test_base.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//mojo/public/cpp/bindings",
    "//mojo/services/files/public/interfaces",
  ]

  data_deps = [ ":files($default_toolchain)" ]
}
