# 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("//build/config/jumbo.gni")
import("../../pdfium.gni")
import("../../testing/test.gni")

assert(pdf_enable_xfa)

jumbo_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_loadercontext.cpp",
    "cxfa_loadercontext.h",
    "cxfa_pieceline.cpp",
    "cxfa_pieceline.h",
    "cxfa_readynodeiterator.cpp",
    "cxfa_readynodeiterator.h",
    "cxfa_rendercontext.cpp",
    "cxfa_rendercontext.h",
    "cxfa_textlayout.cpp",
    "cxfa_textlayout.h",
    "cxfa_textparsecontext.cpp",
    "cxfa_textparsecontext.h",
    "cxfa_textparser.cpp",
    "cxfa_textparser.h",
    "cxfa_textpiece.cpp",
    "cxfa_textpiece.h",
    "cxfa_textprovider.cpp",
    "cxfa_textprovider.h",
    "cxfa_texttabstopscontext.cpp",
    "cxfa_texttabstopscontext.h",
    "fxfa.h",
    "fxfa_basic.h",
  ]
  deps = [
    "../../core/fpdfapi",
    "../../core/fpdfapi/font",
    "../../core/fpdfapi/parser",
    "../../core/fpdfdoc",
    "../../core/fxcodec",
    "../../core/fxcrt",
    "../../core/fxcrt:seekablemultistream",
    "../../core/fxcrt/css",
    "../../core/fxge",
    "../../fxbarcode",
    "../../fxjs",
    "../fde",
    "../fgas",
    "../fgas/layout",
    "../fwl",
    "../fxgraphics",
    "layout",
    "parser",
  ]
  allow_circular_includes_from = [
    "../../fxjs",
    "../fwl",
    "layout",
    "parser",
  ]
  configs += [
    "../../:pdfium_core_config",
    "../:xfa_warnings",
  ]
  visibility = [ "../../*" ]
}

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