# Copyright 2017 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("//build/config/features.gni")

source_set("lib") {
  sources = [
    "file_util_service.cc",
    "file_util_service.h",
  ]

  deps = [
    "//base",
    "//mojo/public/cpp/bindings",
  ]

  public_deps = [
    "//chrome/services/file_util/public/mojom",
    "//mojo/public/mojom/base",
    "//services/service_manager/public/cpp",
  ]

  if (is_chromeos) {
    sources += [
      "zip_file_creator.cc",
      "zip_file_creator.h",
    ]

    deps += [ "//components/services/filesystem/public/interfaces" ]
  }

  if (safe_browsing_mode == 1) {
    sources += [
      "safe_archive_analyzer.cc",
      "safe_archive_analyzer.h",
    ]
  }
}
