# 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("css") {
  sources = [
    "cfx_css.h",
    "cfx_csscolorvalue.cpp",
    "cfx_csscolorvalue.h",
    "cfx_csscomputedstyle.cpp",
    "cfx_csscomputedstyle.h",
    "cfx_csscustomproperty.cpp",
    "cfx_csscustomproperty.h",
    "cfx_cssdata.cpp",
    "cfx_cssdata.h",
    "cfx_cssdeclaration.cpp",
    "cfx_cssdeclaration.h",
    "cfx_cssenumvalue.cpp",
    "cfx_cssenumvalue.h",
    "cfx_cssexttextbuf.cpp",
    "cfx_cssexttextbuf.h",
    "cfx_cssnumbervalue.cpp",
    "cfx_cssnumbervalue.h",
    "cfx_csspropertyholder.cpp",
    "cfx_csspropertyholder.h",
    "cfx_cssrulecollection.cpp",
    "cfx_cssrulecollection.h",
    "cfx_cssselector.cpp",
    "cfx_cssselector.h",
    "cfx_cssstringvalue.cpp",
    "cfx_cssstringvalue.h",
    "cfx_cssstylerule.cpp",
    "cfx_cssstylerule.h",
    "cfx_cssstyleselector.cpp",
    "cfx_cssstyleselector.h",
    "cfx_cssstylesheet.cpp",
    "cfx_cssstylesheet.h",
    "cfx_csssyntaxparser.cpp",
    "cfx_csssyntaxparser.h",
    "cfx_csstextbuf.cpp",
    "cfx_csstextbuf.h",
    "cfx_cssvalue.cpp",
    "cfx_cssvalue.h",
    "cfx_cssvaluelist.cpp",
    "cfx_cssvaluelist.h",
    "cfx_cssvaluelistparser.cpp",
    "cfx_cssvaluelistparser.h",
  ]
  deps = [
    "../",
    "../../fxge",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cfx_cssdeclaration_unittest.cpp",
    "cfx_cssstylesheet_unittest.cpp",
    "cfx_csssyntaxparser_unittest.cpp",
    "cfx_cssvaluelistparser_unittest.cpp",
  ]
  pdfium_root_dir = "../../../"
  deps = [ ":css" ]
}
