# Copyright 2014 The Chromium 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/buildflag_header.gni")
import("//build/config/features.gni")
import("//build/config/jumbo.gni")
import("//pdf/features.gni")
import("//testing/test.gni")
import("//third_party/pdfium/pdfium.gni")
import("//v8/gni/v8.gni")

# Generate a buildflag header for compile-time checking of PDF support.
buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [ "ENABLE_PDF=$enable_pdf" ]
}

if (enable_pdf) {
  pdf_engine = 0  # 0 PDFium

  jumbo_static_library("pdf") {
    deps = [
      "//base",
      "//gin",
      "//net",
      "//ppapi/cpp:objects",
      "//ppapi/cpp/private:internal_module",
      "//ui/base",
      "//ui/gfx/range",
    ]

    public = [
      "pdf.h",
      "pdf_ppapi.h",
    ]

    sources = [
      "chunk_stream.h",
      "document_loader.h",
      "document_loader_impl.cc",
      "document_loader_impl.h",
      "draw_utils.cc",
      "draw_utils.h",
      "out_of_process_instance.cc",
      "out_of_process_instance.h",
      "paint_aggregator.cc",
      "paint_aggregator.h",
      "paint_manager.cc",
      "paint_manager.h",
      "pdf.cc",
      "pdf.h",
      "pdf_engine.cc",
      "pdf_engine.h",
      "pdf_ppapi.cc",
      "pdf_ppapi.h",
      "pdf_transform.cc",
      "pdf_transform.h",
      "preview_mode_client.cc",
      "preview_mode_client.h",
      "range_set.cc",
      "range_set.h",
      "url_loader_wrapper.h",
      "url_loader_wrapper_impl.cc",
      "url_loader_wrapper_impl.h",
    ]

    include_dirs = []
    defines = []

    if (pdf_engine == 0) {
      deps += [
        "//pdf/pdfium/fuzzers",
        "//printing",
        "//third_party/pdfium",
      ]

      sources += [
        "pdfium/pdfium_api_string_buffer_adapter.cc",
        "pdfium/pdfium_api_string_buffer_adapter.h",
        "pdfium/pdfium_assert_matching_enums.cc",
        "pdfium/pdfium_document.cc",
        "pdfium/pdfium_document.h",
        "pdfium/pdfium_engine.cc",
        "pdfium/pdfium_engine.h",
        "pdfium/pdfium_engine_exports.cc",
        "pdfium/pdfium_engine_exports.h",
        "pdfium/pdfium_form_filler.cc",
        "pdfium/pdfium_form_filler.h",
        "pdfium/pdfium_mem_buffer_file_read.cc",
        "pdfium/pdfium_mem_buffer_file_read.h",
        "pdfium/pdfium_mem_buffer_file_write.cc",
        "pdfium/pdfium_mem_buffer_file_write.h",
        "pdfium/pdfium_page.cc",
        "pdfium/pdfium_page.h",
        "pdfium/pdfium_print.cc",
        "pdfium/pdfium_print.h",
        "pdfium/pdfium_range.cc",
        "pdfium/pdfium_range.h",
        "pdfium/pdfium_unsupported_features.cc",
        "pdfium/pdfium_unsupported_features.h",
      ]

      include_dirs += [ "//third_party/pdfium" ]

      defines += [ "PDFIUM_PRINT_TEXT_WITH_GDI" ]
      if (pdf_enable_xfa) {
        defines += [ "PDF_ENABLE_XFA" ]
      }
    }
  }

  test("pdf_unittests") {
    sources = [
      "chunk_stream_unittest.cc",
      "document_loader_impl_unittest.cc",
      "pdf_transform_unittest.cc",
      "range_set_unittest.cc",
      "run_all_unittests.cc",
    ]

    deps = [
      ":pdf",
      "//base",
      "//base/test:test_support",
      "//ppapi/c",
      "//ppapi/cpp",
      "//testing/gmock",
      "//testing/gtest",
      "//ui/gfx/range",
    ]

    data = [
      "test/data/",
    ]

    if (pdf_engine == 0) {
      configs += [ "//v8:external_startup_data" ]
      sources += [
        "pdfium/findtext_unittest.cc",
        "pdfium/pdfium_engine_exports_unittest.cc",
      ]
      include_dirs = [ "//third_party/pdfium" ]

      if (v8_use_external_startup_data) {
        data += [
          "$root_out_dir/natives_blob.bin",
          "$root_out_dir/snapshot_blob.bin",
        ]
      }
    }
  }
} else {
  # Dummy group when PDF support is disabled so targets can unconditionally
  # depend on it.
  group("pdf") {
  }
}