blob: 6e5b4066f5a3784c03a257331a0ccd7f747ed8fb [file] [log] [blame]
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//pdf/features.gni")
import("//ui/webui/resources/tools/build_webui.gni")
import("//ui/webui/resources/tools/generate_grd.gni")
import("//ui/webui/resources/tools/optimize_webui.gni")
assert(enable_pdf, "enable_pdf check failed")
build_webui("build") {
static_files = [
"index.css",
"index.html",
"index_print.html",
]
if (enable_ink) {
static_files += [ "ink/index.html" ]
}
web_component_files = [
"elements/viewer-attachment.ts",
"elements/viewer-attachment-bar.ts",
"elements/viewer-bookmark.ts",
"elements/viewer-document-outline.ts",
"elements/viewer-download-controls.ts",
"elements/viewer-error-dialog.ts",
"elements/viewer-page-selector.ts",
"elements/viewer-password-dialog.ts",
"elements/viewer-pdf-sidenav.ts",
"elements/viewer-properties-dialog.ts",
"elements/viewer-thumbnail-bar.ts",
"elements/viewer-thumbnail.ts",
"elements/viewer-toolbar.ts",
"pdf_viewer.ts",
# Files only used in Print Preview's PDF Viewer UI.
"elements/viewer-page-indicator.ts",
"elements/viewer-zoom-button.ts",
"elements/viewer-zoom-toolbar.ts",
"pdf_viewer_print.ts",
]
if (enable_ink) {
web_component_files += [
"elements/viewer-annotations-bar.ts",
"elements/viewer-annotations-mode-dialog.ts",
"elements/viewer-ink-host.ts",
"elements/viewer-pen-options.ts",
"elements/viewer-toolbar-dropdown.ts",
]
}
non_web_component_files = [
"bookmark_type.ts",
"browser_api.ts",
"constants.ts",
"controller.ts",
"gesture_detector.ts",
"internal_plugin.ts",
"local_storage_proxy.ts",
"main.ts",
"metrics.ts",
"navigator.ts",
"open_pdf_params_parser.ts",
"pdf_print_wrapper.ts",
"pdf_scripting_api.ts",
"pdf_viewer_base.ts",
"pdf_viewer_private_proxy.ts",
"pdf_viewer_utils.ts",
"pdf_viewer_wrapper.ts",
"pdf_internal_plugin_wrapper.ts",
"swipe_detector.ts",
"viewport.ts",
"zoom_manager.ts",
# Files only used in Print Preview's PDF viewer UI.
"main_print.ts",
"toolbar_manager.ts",
]
if (enable_ink) {
non_web_component_files += [
"annotation_tool.ts",
"ink/ink_api.ts",
"ink_controller.ts",
]
}
css_files = [
"elements/pdf-shared.css",
"elements/shared-vars.css",
"pdf_viewer_shared_style.css",
]
icons_html_files = [ "elements/icons.html" ]
html_to_wrapper_scheme = "chrome"
# TypeScript Compiler parameters
ts_composite = true
ts_definitions = [
"//tools/typescript/definitions/chrome_event.d.ts",
"//tools/typescript/definitions/content_settings.d.ts",
"//tools/typescript/definitions/file_system.d.ts",
"//tools/typescript/definitions/metrics_private.d.ts",
"//tools/typescript/definitions/mime_handler_private.d.ts",
"//tools/typescript/definitions/pdf_viewer_private.d.ts",
"//tools/typescript/definitions/pending.d.ts",
"//tools/typescript/definitions/resources_private.d.ts",
"//tools/typescript/definitions/runtime.d.ts",
"//tools/typescript/definitions/tabs.d.ts",
"//tools/typescript/definitions/windows.d.ts",
]
if (enable_ink) {
ts_definitions +=
[ "//chrome/browser/resources/pdf/ink/drawing_canvas.d.ts" ]
}
ts_deps = [
"//third_party/polymer/v3_0:library",
"//ui/webui/resources/cr_elements:build_ts",
"//ui/webui/resources/js:build_ts",
]
# grd file generation parameters
grd_prefix = "pdf"
extra_grdp_deps = [ ":build_internal_plugin_grdp" ]
extra_grdp_files = [ "$target_gen_dir/internal_plugin_resources.grdp" ]
grd_resource_path_prefix = "pdf"
# Optimization parameters
webui_context_type = "trusted_only"
optimize = optimize_webui
if (optimize) {
optimize_webui_host = "chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai"
optimize_webui_in_files = [
"pdf_viewer_wrapper.js",
"pdf_print_wrapper.js",
]
optimize_webui_excludes = [
"browser_api.js",
# Exclude pdf_scripting_api so that Print Preview can import
# pdfCreateOutOfProcessPlugin without importing the entire PDF bundle.
"pdf_scripting_api.js",
]
if (enable_ink) {
optimize_webui_excludes += [
"ink/drawing_canvas_externs.js",
"ink/ink_api.js",
]
}
extra_grdp_deps += [ ":build_excluded_grdp" ]
extra_grdp_files += [ "$target_gen_dir/excluded_resources.grdp" ]
}
}
# Extra grdp build targets
tsc_folder = "tsc"
# This script is injected by `pdf::PluginResponseWriter`, and must stand alone.
# Consequently, it must always be rolled up by `optimize_webui()`.
build_internal_plugin_manifest = "build_internal_plugin_manifest.json"
optimize_webui("build_internal_plugin") {
host = "about:blank"
input = rebase_path("$target_gen_dir/$tsc_folder", root_build_dir)
js_module_in_files = [ "pdf_internal_plugin_wrapper.js" ]
out_manifest = "$target_gen_dir/$build_internal_plugin_manifest"
deps = [ ":build_ts" ]
excludes = [ "browser_api.js" ]
}
generate_grd("build_internal_plugin_grdp") {
manifest_files = [ "$target_gen_dir/$build_internal_plugin_manifest" ]
deps = [ ":build_internal_plugin" ]
grd_prefix = "pdf"
resource_path_prefix = "pdf"
out_grd = "$target_gen_dir/internal_plugin_resources.grdp"
}
if (optimize_webui) {
# Need to manually register files that are excluded from the optimized bundle.
generate_grd("build_excluded_grdp") {
input_files = [
"browser_api.js",
"main.js",
"main_print.js",
"pdf_scripting_api.js",
]
if (enable_ink) {
input_files += [ "ink/ink_api.js" ]
}
input_files_base_dir =
rebase_path("$target_gen_dir/$tsc_folder", root_build_dir)
deps = [ ":build_ts" ]
grd_prefix = "pdf"
out_grd = "$target_gen_dir/excluded_resources.grdp"
resource_path_prefix = "pdf"
}
}