Merge pull request #16587 from Snuffleupagus/test-pdfjs-API
Add a unit-test to check that the *official* PDF.js API exposes the expected functionality
This commit is contained in:
		
						commit
						e9ccbd2856
					
				@ -697,6 +697,9 @@ class StatTimer {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function isValidFetchUrl(url, baseUrl) {
 | 
					function isValidFetchUrl(url, baseUrl) {
 | 
				
			||||||
 | 
					  if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
 | 
				
			||||||
 | 
					    throw new Error("Not implemented: isValidFetchUrl");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);
 | 
					    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);
 | 
				
			||||||
    // The Fetch API only supports the http/https protocols, and not file/ftp.
 | 
					    // The Fetch API only supports the http/https protocols, and not file/ftp.
 | 
				
			||||||
 | 
				
			|||||||
@ -35,6 +35,7 @@
 | 
				
			|||||||
    "pdf_find_controller_spec.js",
 | 
					    "pdf_find_controller_spec.js",
 | 
				
			||||||
    "pdf_find_utils_spec.js",
 | 
					    "pdf_find_utils_spec.js",
 | 
				
			||||||
    "pdf_history_spec.js",
 | 
					    "pdf_history_spec.js",
 | 
				
			||||||
 | 
					    "pdf_spec.js",
 | 
				
			||||||
    "pdf_viewer_spec.js",
 | 
					    "pdf_viewer_spec.js",
 | 
				
			||||||
    "primitives_spec.js",
 | 
					    "primitives_spec.js",
 | 
				
			||||||
    "stream_spec.js",
 | 
					    "stream_spec.js",
 | 
				
			||||||
 | 
				
			|||||||
@ -65,9 +65,9 @@ async function initializePDFJS(callback) {
 | 
				
			|||||||
      "pdfjs-test/unit/encodings_spec.js",
 | 
					      "pdfjs-test/unit/encodings_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/evaluator_spec.js",
 | 
					      "pdfjs-test/unit/evaluator_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/event_utils_spec.js",
 | 
					      "pdfjs-test/unit/event_utils_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/function_spec.js",
 | 
					 | 
				
			||||||
      "pdfjs-test/unit/fetch_stream_spec.js",
 | 
					      "pdfjs-test/unit/fetch_stream_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/font_substitutions_spec.js",
 | 
					      "pdfjs-test/unit/font_substitutions_spec.js",
 | 
				
			||||||
 | 
					      "pdfjs-test/unit/function_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/message_handler_spec.js",
 | 
					      "pdfjs-test/unit/message_handler_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/metadata_spec.js",
 | 
					      "pdfjs-test/unit/metadata_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/murmurhash3_spec.js",
 | 
					      "pdfjs-test/unit/murmurhash3_spec.js",
 | 
				
			||||||
@ -77,6 +77,7 @@ async function initializePDFJS(callback) {
 | 
				
			|||||||
      "pdfjs-test/unit/pdf_find_controller_spec.js",
 | 
					      "pdfjs-test/unit/pdf_find_controller_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/pdf_find_utils_spec.js",
 | 
					      "pdfjs-test/unit/pdf_find_utils_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/pdf_history_spec.js",
 | 
					      "pdfjs-test/unit/pdf_history_spec.js",
 | 
				
			||||||
 | 
					      "pdfjs-test/unit/pdf_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/pdf_viewer_spec.js",
 | 
					      "pdfjs-test/unit/pdf_viewer_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/primitives_spec.js",
 | 
					      "pdfjs-test/unit/primitives_spec.js",
 | 
				
			||||||
      "pdfjs-test/unit/scripting_spec.js",
 | 
					      "pdfjs-test/unit/scripting_spec.js",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										125
									
								
								test/unit/pdf_spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								test/unit/pdf_spec.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,125 @@
 | 
				
			|||||||
 | 
					/* Copyright 2023 Mozilla Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  AbortException,
 | 
				
			||||||
 | 
					  AnnotationEditorParamsType,
 | 
				
			||||||
 | 
					  AnnotationEditorType,
 | 
				
			||||||
 | 
					  AnnotationMode,
 | 
				
			||||||
 | 
					  CMapCompressionType,
 | 
				
			||||||
 | 
					  createValidAbsoluteUrl,
 | 
				
			||||||
 | 
					  FeatureTest,
 | 
				
			||||||
 | 
					  ImageKind,
 | 
				
			||||||
 | 
					  InvalidPDFException,
 | 
				
			||||||
 | 
					  MissingPDFException,
 | 
				
			||||||
 | 
					  normalizeUnicode,
 | 
				
			||||||
 | 
					  OPS,
 | 
				
			||||||
 | 
					  PasswordResponses,
 | 
				
			||||||
 | 
					  PermissionFlag,
 | 
				
			||||||
 | 
					  PromiseCapability,
 | 
				
			||||||
 | 
					  shadow,
 | 
				
			||||||
 | 
					  UnexpectedResponseException,
 | 
				
			||||||
 | 
					  Util,
 | 
				
			||||||
 | 
					  VerbosityLevel,
 | 
				
			||||||
 | 
					} from "../../src/shared/util.js";
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  build,
 | 
				
			||||||
 | 
					  getDocument,
 | 
				
			||||||
 | 
					  PDFDataRangeTransport,
 | 
				
			||||||
 | 
					  PDFWorker,
 | 
				
			||||||
 | 
					  version,
 | 
				
			||||||
 | 
					} from "../../src/display/api.js";
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  getFilenameFromUrl,
 | 
				
			||||||
 | 
					  getPdfFilenameFromUrl,
 | 
				
			||||||
 | 
					  getXfaPageViewport,
 | 
				
			||||||
 | 
					  isDataScheme,
 | 
				
			||||||
 | 
					  isPdfFile,
 | 
				
			||||||
 | 
					  loadScript,
 | 
				
			||||||
 | 
					  PDFDateString,
 | 
				
			||||||
 | 
					  PixelsPerInch,
 | 
				
			||||||
 | 
					  RenderingCancelledException,
 | 
				
			||||||
 | 
					  setLayerDimensions,
 | 
				
			||||||
 | 
					} from "../../src/display/display_utils.js";
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  renderTextLayer,
 | 
				
			||||||
 | 
					  updateTextLayer,
 | 
				
			||||||
 | 
					} from "../../src/display/text_layer.js";
 | 
				
			||||||
 | 
					import { AnnotationEditorLayer } from "../../src/display/editor/annotation_editor_layer.js";
 | 
				
			||||||
 | 
					import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js";
 | 
				
			||||||
 | 
					import { AnnotationLayer } from "../../src/display/annotation_layer.js";
 | 
				
			||||||
 | 
					import { GlobalWorkerOptions } from "../../src/display/worker_options.js";
 | 
				
			||||||
 | 
					import { XfaLayer } from "../../src/display/xfa_layer.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe("pdfjs_api", function () {
 | 
				
			||||||
 | 
					  it("checks that the *official* PDF.js API exposes the expected functionality", async function () {
 | 
				
			||||||
 | 
					    // eslint-disable-next-line no-unsanitized/method
 | 
				
			||||||
 | 
					    const pdfjsAPI = await import(
 | 
				
			||||||
 | 
					      typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB")
 | 
				
			||||||
 | 
					        ? "../../pdf.js"
 | 
				
			||||||
 | 
					        : "../../src/pdf.js"
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // The imported Object contains an (automatically) inserted Symbol,
 | 
				
			||||||
 | 
					    // hence we copy the data to allow using a simple comparison below.
 | 
				
			||||||
 | 
					    expect({ ...pdfjsAPI }).toEqual({
 | 
				
			||||||
 | 
					      AbortException,
 | 
				
			||||||
 | 
					      AnnotationEditorLayer,
 | 
				
			||||||
 | 
					      AnnotationEditorParamsType,
 | 
				
			||||||
 | 
					      AnnotationEditorType,
 | 
				
			||||||
 | 
					      AnnotationEditorUIManager,
 | 
				
			||||||
 | 
					      AnnotationLayer,
 | 
				
			||||||
 | 
					      AnnotationMode,
 | 
				
			||||||
 | 
					      build,
 | 
				
			||||||
 | 
					      CMapCompressionType,
 | 
				
			||||||
 | 
					      createValidAbsoluteUrl,
 | 
				
			||||||
 | 
					      FeatureTest,
 | 
				
			||||||
 | 
					      getDocument,
 | 
				
			||||||
 | 
					      getFilenameFromUrl,
 | 
				
			||||||
 | 
					      getPdfFilenameFromUrl,
 | 
				
			||||||
 | 
					      getXfaPageViewport,
 | 
				
			||||||
 | 
					      GlobalWorkerOptions,
 | 
				
			||||||
 | 
					      ImageKind,
 | 
				
			||||||
 | 
					      InvalidPDFException,
 | 
				
			||||||
 | 
					      isDataScheme,
 | 
				
			||||||
 | 
					      isPdfFile,
 | 
				
			||||||
 | 
					      loadScript,
 | 
				
			||||||
 | 
					      MissingPDFException,
 | 
				
			||||||
 | 
					      normalizeUnicode,
 | 
				
			||||||
 | 
					      OPS,
 | 
				
			||||||
 | 
					      PasswordResponses,
 | 
				
			||||||
 | 
					      PDFDataRangeTransport,
 | 
				
			||||||
 | 
					      PDFDateString,
 | 
				
			||||||
 | 
					      PDFWorker,
 | 
				
			||||||
 | 
					      PermissionFlag,
 | 
				
			||||||
 | 
					      PixelsPerInch,
 | 
				
			||||||
 | 
					      PromiseCapability,
 | 
				
			||||||
 | 
					      RenderingCancelledException,
 | 
				
			||||||
 | 
					      renderTextLayer,
 | 
				
			||||||
 | 
					      setLayerDimensions,
 | 
				
			||||||
 | 
					      shadow,
 | 
				
			||||||
 | 
					      SVGGraphics:
 | 
				
			||||||
 | 
					        typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB")
 | 
				
			||||||
 | 
					          ? require("../../display/svg.js").SVGGraphics
 | 
				
			||||||
 | 
					          : null,
 | 
				
			||||||
 | 
					      UnexpectedResponseException,
 | 
				
			||||||
 | 
					      updateTextLayer,
 | 
				
			||||||
 | 
					      Util,
 | 
				
			||||||
 | 
					      VerbosityLevel,
 | 
				
			||||||
 | 
					      version,
 | 
				
			||||||
 | 
					      XfaLayer,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user