# 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/config/features.gni")
import("//third_party/pdfium/pdfium.gni")

assert(enable_pdf)

pdf_engine = 0  # 0 PDFium

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

  sources = [
    "chunk_stream.cc",
    "chunk_stream.h",
    "document_loader.cc",
    "document_loader.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.h",
    "preview_mode_client.cc",
    "preview_mode_client.h",
  ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  if (pdf_engine == 0) {
    deps += [
      "//pdf/pdfium/fuzzers",
      "//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_engine.cc",
      "pdfium/pdfium_engine.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_range.cc",
      "pdfium/pdfium_range.h",
    ]
  }

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