# 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("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")

static_library("service") {
  sources = [
    "pdf_compositor_impl.cc",
    "pdf_compositor_impl.h",
    "pdf_compositor_service.cc",
    "pdf_compositor_service.h",
  ]

  deps = [
    "//base",
    "//components/discardable_memory/client",
    "//components/discardable_memory/public/interfaces",
    "//content/public/common:service_names",
    "//content/public/utility",
    "//printing/common",
    "//skia",
  ]

  public_deps = [
    "//components/printing/service/public/interfaces",
    "//services/service_manager/public/cpp",
  ]
}

service_manifest("pdf_compositor_manifest") {
  name = "pdf_compositor"
  source = "pdf_compositor_manifest.json"
}
