| # 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" |
| } |
| } |