# Copyright 2018 The PDFium Authors
# 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("fxfa") {
  sources = [
    "cxfa_eventparam.cpp",
    "cxfa_eventparam.h",
    "cxfa_ffapp.cpp",
    "cxfa_ffapp.h",
    "cxfa_ffarc.cpp",
    "cxfa_ffarc.h",
    "cxfa_ffbarcode.cpp",
    "cxfa_ffbarcode.h",
    "cxfa_ffcheckbutton.cpp",
    "cxfa_ffcheckbutton.h",
    "cxfa_ffcombobox.cpp",
    "cxfa_ffcombobox.h",
    "cxfa_ffdatetimeedit.cpp",
    "cxfa_ffdatetimeedit.h",
    "cxfa_ffdoc.cpp",
    "cxfa_ffdoc.h",
    "cxfa_ffdocview.cpp",
    "cxfa_ffdocview.h",
    "cxfa_ffdropdown.cpp",
    "cxfa_ffdropdown.h",
    "cxfa_ffexclgroup.cpp",
    "cxfa_ffexclgroup.h",
    "cxfa_fffield.cpp",
    "cxfa_fffield.h",
    "cxfa_ffimage.cpp",
    "cxfa_ffimage.h",
    "cxfa_ffimageedit.cpp",
    "cxfa_ffimageedit.h",
    "cxfa_ffline.cpp",
    "cxfa_ffline.h",
    "cxfa_fflistbox.cpp",
    "cxfa_fflistbox.h",
    "cxfa_ffnotify.cpp",
    "cxfa_ffnotify.h",
    "cxfa_ffnumericedit.cpp",
    "cxfa_ffnumericedit.h",
    "cxfa_ffpageview.cpp",
    "cxfa_ffpageview.h",
    "cxfa_ffpasswordedit.cpp",
    "cxfa_ffpasswordedit.h",
    "cxfa_ffpushbutton.cpp",
    "cxfa_ffpushbutton.h",
    "cxfa_ffrectangle.cpp",
    "cxfa_ffrectangle.h",
    "cxfa_ffsignature.cpp",
    "cxfa_ffsignature.h",
    "cxfa_fftext.cpp",
    "cxfa_fftext.h",
    "cxfa_fftextedit.cpp",
    "cxfa_fftextedit.h",
    "cxfa_ffwidget.cpp",
    "cxfa_ffwidget.h",
    "cxfa_ffwidgethandler.cpp",
    "cxfa_ffwidgethandler.h",
    "cxfa_fontmgr.cpp",
    "cxfa_fontmgr.h",
    "cxfa_fwladapterwidgetmgr.cpp",
    "cxfa_fwladapterwidgetmgr.h",
    "cxfa_fwltheme.cpp",
    "cxfa_fwltheme.h",
    "cxfa_imagerenderer.cpp",
    "cxfa_imagerenderer.h",
    "cxfa_readynodeiterator.cpp",
    "cxfa_readynodeiterator.h",
    "cxfa_textlayout.cpp",
    "cxfa_textlayout.h",
    "cxfa_textparser.cpp",
    "cxfa_textparser.h",
    "cxfa_textprovider.cpp",
    "cxfa_textprovider.h",
    "cxfa_texttabstopscontext.cpp",
    "cxfa_texttabstopscontext.h",
    "fxfa.h",
    "fxfa_basic.h",
  ]
  deps = [
    "../../constants",
    "../../core/fpdfapi/parser",
    "../../core/fpdfdoc",
    "../../core/fxcodec",
    "../../core/fxcrt",
    "../../core/fxcrt/css",
    "../../core/fxge",
    "../../fxbarcode",
    "../../fxjs",
    "../../fxjs:gc",
    "../fde",
    "../fgas/font",
    "../fgas/graphics",
    "../fgas/layout",
    "../fwl",
    "layout",
    "parser",
  ]
  allow_circular_includes_from = [
    "../../fxjs",
    "layout",
    "parser",
  ]
  configs += [
    "../../:pdfium_strict_config",
    "../../:pdfium_noshorten_config",
    "../:xfa_warnings",
  ]
  visibility = [ "../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cxfa_ffbarcode_unittest.cpp",
    "cxfa_textparser_unittest.cpp",
    "fxfa_basic_unittest.cpp",
  ]
  deps = [
    ":fxfa",
    "../../fxjs:gc",
  ]
  pdfium_root_dir = "../../"
}
