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

assert(pdf_enable_xfa)

source_set("fpdfxfa") {
  sources = [
    "cpdfxfa_context.cpp",
    "cpdfxfa_context.h",
    "cpdfxfa_docenvironment.cpp",
    "cpdfxfa_docenvironment.h",
    "cpdfxfa_page.cpp",
    "cpdfxfa_page.h",
    "cpdfxfa_widget.cpp",
    "cpdfxfa_widget.h",
    "cpdfxfa_widgethandler.cpp",
    "cpdfxfa_widgethandler.h",
  ]
  deps = [
    "../../:pdfium_public_headers",
    "../../core/fpdfapi/page",
    "../../core/fpdfapi/parser",
    "../../core/fpdfapi/render",
    "../../core/fxcrt",
    "../../fxbarcode",
    "../../fxjs",
    "../../fxjs:gc",
    "../../xfa/fgas/font",
    "../../xfa/fgas/graphics",
    "../../xfa/fwl",
    "../../xfa/fxfa",
    "../../xfa/fxfa/parser",
  ]
  configs += [ "../../:pdfium_core_config" ]
  visibility = [ "../../*" ]
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "cpdfxfa_context_embeddertest.cpp",
    "cpdfxfa_docenvironment_embeddertest.cpp",
  ]
  configs = [ "//v8:external_startup_data" ]
  deps = [
    ":fpdfxfa",
    "../:fpdfsdk",
    "../../fxjs",
  ]
  pdfium_root_dir = "../../"
}
