# 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_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_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_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",
    "../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 = "../../"
}
