# Copyright 2018 The PDFium 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("../../../pdfium.gni")
import("../../../testing/test.gni")

source_set("edit") {
  sources = [
    "cpdf_contentstream_write_utils.cpp",
    "cpdf_contentstream_write_utils.h",
    "cpdf_creator.cpp",
    "cpdf_creator.h",
    "cpdf_pagecontentgenerator.cpp",
    "cpdf_pagecontentgenerator.h",
    "cpdf_pagecontentmanager.cpp",
    "cpdf_pagecontentmanager.h",
    "cpdf_stringarchivestream.cpp",
    "cpdf_stringarchivestream.h",
  ]
  configs += [
    "../../../:pdfium_strict_config",
    "../../../:pdfium_noshorten_config",
  ]
  deps = [
    "../../../constants",
    "../../../third_party:skia_shared",
    "../../fxcrt",
    "../font",
    "../page",
    "../parser",
  ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [ "cpdf_pagecontentgenerator_unittest.cpp" ]
  deps = [
    ":edit",
    "../../fxge",
    "../font",
    "../page",
    "../page:unit_test_support",
    "../parser",
    "../parser:unit_test_support",
    "../render",
  ]
  pdfium_root_dir = "../../../"
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [ "cpdf_creator_embeddertest.cpp" ]
  pdfium_root_dir = "../../../"
}
