# 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("fwl") {
  sources = [
    "cfwl_app.cpp",
    "cfwl_app.h",
    "cfwl_barcode.cpp",
    "cfwl_barcode.h",
    "cfwl_caret.cpp",
    "cfwl_caret.h",
    "cfwl_checkbox.cpp",
    "cfwl_checkbox.h",
    "cfwl_combobox.cpp",
    "cfwl_combobox.h",
    "cfwl_comboedit.cpp",
    "cfwl_comboedit.h",
    "cfwl_combolist.cpp",
    "cfwl_combolist.h",
    "cfwl_datetimeedit.cpp",
    "cfwl_datetimeedit.h",
    "cfwl_datetimepicker.cpp",
    "cfwl_datetimepicker.h",
    "cfwl_edit.cpp",
    "cfwl_edit.h",
    "cfwl_event.cpp",
    "cfwl_event.h",
    "cfwl_eventmouse.cpp",
    "cfwl_eventmouse.h",
    "cfwl_eventscroll.cpp",
    "cfwl_eventscroll.h",
    "cfwl_eventselectchanged.cpp",
    "cfwl_eventselectchanged.h",
    "cfwl_eventtarget.cpp",
    "cfwl_eventtarget.h",
    "cfwl_eventtextwillchange.cpp",
    "cfwl_eventtextwillchange.h",
    "cfwl_eventvalidate.cpp",
    "cfwl_eventvalidate.h",
    "cfwl_listbox.cpp",
    "cfwl_listbox.h",
    "cfwl_listitem.cpp",
    "cfwl_listitem.h",
    "cfwl_message.cpp",
    "cfwl_message.h",
    "cfwl_messagekey.cpp",
    "cfwl_messagekey.h",
    "cfwl_messagekillfocus.cpp",
    "cfwl_messagekillfocus.h",
    "cfwl_messagemouse.cpp",
    "cfwl_messagemouse.h",
    "cfwl_messagemousewheel.cpp",
    "cfwl_messagemousewheel.h",
    "cfwl_messagesetfocus.cpp",
    "cfwl_messagesetfocus.h",
    "cfwl_monthcalendar.cpp",
    "cfwl_monthcalendar.h",
    "cfwl_notedriver.cpp",
    "cfwl_notedriver.h",
    "cfwl_noteloop.cpp",
    "cfwl_noteloop.h",
    "cfwl_picturebox.cpp",
    "cfwl_picturebox.h",
    "cfwl_pushbutton.cpp",
    "cfwl_pushbutton.h",
    "cfwl_scrollbar.cpp",
    "cfwl_scrollbar.h",
    "cfwl_themebackground.h",
    "cfwl_themepart.cpp",
    "cfwl_themepart.h",
    "cfwl_themetext.h",
    "cfwl_timer.cpp",
    "cfwl_timer.h",
    "cfwl_timerinfo.cpp",
    "cfwl_timerinfo.h",
    "cfwl_widget.cpp",
    "cfwl_widget.h",
    "cfwl_widgetmgr.cpp",
    "cfwl_widgetmgr.h",
    "cfwl_widgetproperties.cpp",
    "cfwl_widgetproperties.h",
    "cfx_barcode.cpp",
    "cfx_barcode.h",
    "fwl_widgetdef.h",
    "fwl_widgethit.h",
    "ifwl_adaptertimermgr.h",
    "ifwl_themeprovider.h",
    "ifwl_widgetdelegate.h",
    "theme/cfwl_barcodetp.cpp",
    "theme/cfwl_barcodetp.h",
    "theme/cfwl_carettp.cpp",
    "theme/cfwl_carettp.h",
    "theme/cfwl_checkboxtp.cpp",
    "theme/cfwl_checkboxtp.h",
    "theme/cfwl_comboboxtp.cpp",
    "theme/cfwl_comboboxtp.h",
    "theme/cfwl_datetimepickertp.cpp",
    "theme/cfwl_datetimepickertp.h",
    "theme/cfwl_edittp.cpp",
    "theme/cfwl_edittp.h",
    "theme/cfwl_listboxtp.cpp",
    "theme/cfwl_listboxtp.h",
    "theme/cfwl_monthcalendartp.cpp",
    "theme/cfwl_monthcalendartp.h",
    "theme/cfwl_pictureboxtp.cpp",
    "theme/cfwl_pictureboxtp.h",
    "theme/cfwl_pushbuttontp.cpp",
    "theme/cfwl_pushbuttontp.h",
    "theme/cfwl_scrollbartp.cpp",
    "theme/cfwl_scrollbartp.h",
    "theme/cfwl_utils.h",
    "theme/cfwl_widgettp.cpp",
    "theme/cfwl_widgettp.h",
  ]
  deps = [
    "../../core/fxcrt",
    "../../core/fxge",
    "../../fxbarcode",
    "../fde",
    "../fgas",
    "../fxfa/parser",
    "../fxgraphics",
  ]
  configs += [
    "../../:pdfium_core_config",
    "../:xfa_warnings",
  ]
  visibility = [ "../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cfx_barcode_unittest.cpp",
  ]
  deps = [
    ":fwl",
    "../../core/fxge",
  ]
  pdfium_root_dir = "../../"
}

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