# Copyright 2014 The Chromium Authors # 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("//pdf/features.gni") import("//ppapi/buildflags/buildflags.gni") import("//printing/buildflags/buildflags.gni") import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") import("//third_party/pdfium/pdfium.gni") import("//tools/grit/repack.gni") import("//v8/gni/v8.gni") if (is_ios) { import("//build/config/ios/bundle_data_from_filelist.gni") } # Generate a buildflag header for compile-time checking of PDF support. buildflag_header("buildflags") { header = "buildflags.h" flags = [ "ENABLE_INK=$enable_ink", "ENABLE_PDF=$enable_pdf", ] } if (enable_pdf) { config("strict") { configs = [ "//build/config/compiler:wexit_time_destructors" ] } config("pdfium_includes") { include_dirs = [ "//third_party/pdfium" ] } static_library("pdf") { sources = [ "pdf.cc" ] configs += [ ":strict" ] public = [ "pdf.h" ] deps = [ ":features", ":internal", "//base", "//build:chromeos_buildflags", "//ui/gfx/geometry", ] } source_set("features") { sources = [ "pdf_features.cc" ] configs += [ ":strict" ] public = [ "pdf_features.h" ] deps = [ "//base", "//build:chromeos_buildflags", ] } source_set("internal") { visibility = [ ":*" ] sources = [ "accessibility.cc", "accessibility.h", "document_attachment_info.cc", "document_attachment_info.h", "document_layout.cc", "document_layout.h", "document_metadata.cc", "document_metadata.h", "draw_utils/coordinates.cc", "draw_utils/coordinates.h", "draw_utils/shadow.cc", "draw_utils/shadow.h", "file_extension.cc", "file_extension.h", "metrics_handler.cc", "metrics_handler.h", "page_orientation.cc", "page_orientation.h", "paint_aggregator.cc", "paint_aggregator.h", "paint_manager.cc", "paint_manager.h", "paint_ready_rect.cc", "paint_ready_rect.h", "parsed_params.cc", "parsed_params.h", "pdf_engine.h", "pdf_init.cc", "pdf_init.h", "pdf_transform.cc", "pdf_transform.h", "pdf_utils/dates.cc", "pdf_utils/dates.h", "pdfium/pdfium_api_string_buffer_adapter.cc", "pdfium/pdfium_api_string_buffer_adapter.h", "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_write.cc", "pdfium/pdfium_mem_buffer_file_write.h", "pdfium/pdfium_page.cc", "pdfium/pdfium_page.h", "pdfium/pdfium_permissions.cc", "pdfium/pdfium_permissions.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", "preview_mode_client.cc", "preview_mode_client.h", "ui/document_properties.cc", "ui/document_properties.h", "ui/file_name.cc", "ui/file_name.h", "ui/thumbnail.cc", "ui/thumbnail.h", ] public_configs = [ ":pdfium_includes" ] configs += [ ":strict" ] public_deps = [ "//printing/mojom", "//skia", "//v8", ] deps = [ ":accessibility", ":buildflags", ":content_restriction", ":features", "//base", "//base:i18n", "//build:chromeos_buildflags", "//components/strings", "//gin", "//pdf/loader", "//third_party/blink/public:blink_headers", "//third_party/blink/public/common:headers", "//third_party/icu", "//third_party/pdfium", "//ui/base", "//ui/base/cursor/mojom:cursor_type", "//ui/events:events_base", "//ui/events/blink", "//ui/gfx/codec", "//ui/gfx/range", ] if (enable_basic_printing) { deps += [ "//printing" ] } if (is_linux || is_chromeos || is_tizen) { sources += [ "pdfium/pdfium_font_linux.cc", "pdfium/pdfium_font_linux.h", ] deps += [ ":font_table_linux", "//components/services/font/public/cpp", ] } } source_set("assert_enums") { visibility = [ ":*" ] testonly = true sources = [ "pdfium/pdfium_assert_matching_enums.cc" ] deps = [ ":accessibility", ":content_restriction", ":internal", ":pdf", "//third_party/blink/public/common:headers", "//third_party/pdfium", "//ui/base", ] } source_set("content_restriction") { # Exists separately to expose this header for testing. public = [ "content_restriction.h" ] } source_set("accessibility") { visibility = [ ":*", "//components:components_browsertests${exec_target_suffix}", "//components/pdf/renderer", "//components/pdf/renderer:unit_tests", ] sources = [ "accessibility_helper.cc", "accessibility_helper.h", "accessibility_structs.cc", "accessibility_structs.h", "pdf_accessibility_action_handler.h", "pdf_accessibility_data_handler.h", "pdf_accessibility_image_fetcher.h", ] configs += [ ":strict" ] deps = [ "//base", "//skia", "//ui/gfx/geometry", ] } static_library("pdf_view_web_plugin") { assert(enable_plugins, "The PDF viewer relies on plugin infrastructure") visibility = [ ":*", "//components/pdf/renderer", ] sources = [ "pdf_view_web_plugin.cc", "post_message_receiver.cc", "post_message_receiver.h", "v8_value_converter.h", ] configs += [ ":strict" ] public = [ "pdf_view_web_plugin.h" ] public_deps = [ "//pdf/mojom" ] deps = [ ":accessibility", ":buildflags", ":content_restriction", ":features", ":internal", "//base", "//base:i18n", "//cc/paint", "//gin", "//net", "//pdf/loader", "//services/network/public/mojom:url_loader_base", "//skia", "//third_party/blink/public:blink_headers", "//third_party/blink/public/common:headers", "//ui/base/cursor", "//ui/base/cursor/mojom:cursor_type", "//ui/events/blink", "//ui/gfx/range", "//v8", ] if (enable_basic_printing) { deps += [ "//printing" ] } } source_set("pdf_test_utils") { visibility = [ "//pdf/*" ] testonly = true sources = [ "test/mock_web_associated_url_loader.cc", "test/mock_web_associated_url_loader.h", "test/test_client.cc", "test/test_client.h", "test/test_document_loader.cc", "test/test_document_loader.h", "test/test_helpers.cc", "test/test_helpers.h", "test/test_pdfium_engine.cc", "test/test_pdfium_engine.h", ] deps = [ ":internal", "//base", "//cc:test_support", "//pdf/loader", "//testing/gmock", "//testing/gtest", "//third_party/blink/public:blink", "//ui/gfx/range", "//ui/latency:latency", ] } if (is_linux || is_chromeos || is_tizen) { # TODO(crbug.com/702990): After PPAPI deprecation, there will only be one # caller left. Move inside the file with the caller. static_library("font_table_linux") { sources = [ "font_table_linux.cc" ] configs += [ ":strict" ] public = [ "font_table_linux.h" ] deps = [ "//base" ] } } test("pdf_unittests") { testonly = true sources = [ "document_layout_unittest.cc", "draw_utils/coordinates_unittest.cc", "file_extension_unittest.cc", "page_orientation_unittest.cc", "paint_manager_unittest.cc", "parsed_params_unittest.cc", "pdf_transform_unittest.cc", "pdf_utils/dates_unittest.cc", "pdf_view_web_plugin_unittest.cc", "pdfium/accessibility_unittest.cc", "pdfium/findtext_unittest.cc", "pdfium/pdfium_engine_exports_unittest.cc", "pdfium/pdfium_engine_unittest.cc", "pdfium/pdfium_form_filler_unittest.cc", "pdfium/pdfium_page_unittest.cc", "pdfium/pdfium_permissions_unittest.cc", "pdfium/pdfium_print_unittest.cc", "pdfium/pdfium_range_unittest.cc", "pdfium/pdfium_test_base.cc", "pdfium/pdfium_test_base.h", "test/run_all_unittests.cc", "ui/document_properties_unittest.cc", "ui/file_name_unittest.cc", "ui/thumbnail_unittest.cc", ] data = [ "test/data/" ] deps = [ ":accessibility", ":assert_enums", ":buildflags", ":content_restriction", ":features", ":internal", ":pdf", ":pdf_test_utils", ":pdf_view_web_plugin", "//base", "//base:i18n", "//base/test:test_support", "//cc:test_support", "//gin", "//mojo/core/embedder", "//mojo/public/cpp/bindings", "//net", "//pdf/loader", "//pdf/loader:unit_tests", "//skia", "//testing/gmock", "//testing/gtest", "//third_party/blink/public:blink", "//third_party/blink/public:test_support", "//third_party/blink/public/common:headers", "//third_party/pdfium", "//tools/v8_context_snapshot:buildflags", "//ui/base", "//ui/base/cursor", "//ui/events/blink:blink", "//ui/gfx:test_support", "//ui/gfx/geometry", "//ui/gfx/range", "//v8", ] if (enable_basic_printing) { deps += [ "//printing" ] } if (v8_use_external_startup_data) { deps += [ "//tools/v8_context_snapshot", "//tools/v8_context_snapshot:buildflags", ] configs += [ "//v8:external_startup_data" ] } data_deps = [ ":pdf_unittests_pak", "//ui/resources:ui_test_pak_data", ] assert_no_deps = [ "//ppapi/c/*", "//ppapi/cpp/*", ] } repack("pdf_unittests_pak") { sources = [ "$root_gen_dir/components/strings/components_strings_en-US.pak" ] output = "$root_out_dir/pdf_tests_resources.pak" deps = [ "//components/strings" ] } fuzzer_test("pdf_dates_fuzzer") { sources = [ "pdf_utils/dates_fuzzer.cc" ] deps = [ ":internal", "//base", ] } } else { # Dummy groups when PDF support is disabled so targets can unconditionally # depend on it. group("features") { } group("pdf") { } } if (is_ios) { bundle_data_from_filelist("pdf_test_bundle_data") { testonly = true filelist_name = "test/pdf_test_bundle_data.filelist" } }