From 6dc4c994b8f848ae2ad128fc0e516cc6e4c1cda1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 8 Sep 2022 11:51:17 +0200 Subject: [PATCH 1/2] Remove the abstract `BaseViewer`-class After the changes in PR 14112 the `PDFViewer`-class is now "identical" to the `BaseViewer`-class and the `PDFSinglePageViewer`-class is just a very thin wrapper around the `BaseViewer`-class. Hence we can rename these files, and also remove the abstract `BaseViewer`-class, which helps reduce some unnecessary "closures" in the *built* viewer. *Please note:* These changes are made in two separate commits, to allow GitHub to preserve `blame` for the affected files. --- test/unit/base_viewer_spec.js | 2 +- web/app.js | 2 +- web/base_viewer.js | 9 +++------ web/{pdf_viewer.js => pdf_single_page_viewer.js} | 8 +++----- web/pdf_viewer.component.js | 3 ++- 5 files changed, 10 insertions(+), 14 deletions(-) rename web/{pdf_viewer.js => pdf_single_page_viewer.js} (84%) diff --git a/test/unit/base_viewer_spec.js b/test/unit/base_viewer_spec.js index f59ef75cd..2333f3e0e 100644 --- a/test/unit/base_viewer_spec.js +++ b/test/unit/base_viewer_spec.js @@ -15,7 +15,7 @@ import { PDFPageViewBuffer } from "../../web/base_viewer.js"; -describe("BaseViewer", function () { +describe("PDFViewer", function () { describe("PDFPageViewBuffer", function () { function createViewsMap(startId, endId) { const map = new Map(); diff --git a/web/app.js b/web/app.js index 63eb8a9ce..5955fb353 100644 --- a/web/app.js +++ b/web/app.js @@ -73,7 +73,7 @@ import { PDFScriptingManager } from "./pdf_scripting_manager.js"; import { PDFSidebar } from "./pdf_sidebar.js"; import { PDFSidebarResizer } from "./pdf_sidebar_resizer.js"; import { PDFThumbnailViewer } from "./pdf_thumbnail_viewer.js"; -import { PDFViewer } from "./pdf_viewer.js"; +import { PDFViewer } from "./base_viewer.js"; import { SecondaryToolbar } from "./secondary_toolbar.js"; import { Toolbar } from "./toolbar.js"; import { ViewHistory } from "./view_history.js"; diff --git a/web/base_viewer.js b/web/base_viewer.js index f27bc20d7..bbc40b51e 100644 --- a/web/base_viewer.js +++ b/web/base_viewer.js @@ -216,7 +216,7 @@ class PDFPageViewBuffer { * @implements {IPDFTextLayerFactory} * @implements {IPDFXfaLayerFactory} */ -class BaseViewer { +class PDFViewer { #buffer = null; #annotationEditorMode = AnnotationEditorType.DISABLE; @@ -237,9 +237,6 @@ class BaseViewer { * @param {PDFViewerOptions} options */ constructor(options) { - if (this.constructor === BaseViewer) { - throw new Error("Cannot initialize BaseViewer."); - } const viewerVersion = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_VERSION") : null; if (version !== viewerVersion) { @@ -305,7 +302,7 @@ class BaseViewer { ) { if (this.pageColors.background || this.pageColors.foreground) { console.warn( - "BaseViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used." + "PDFViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used." ); } this.pageColors = null; @@ -2249,4 +2246,4 @@ class BaseViewer { } } -export { BaseViewer, PagesCountLimit, PDFPageViewBuffer }; +export { PagesCountLimit, PDFPageViewBuffer, PDFViewer }; diff --git a/web/pdf_viewer.js b/web/pdf_single_page_viewer.js similarity index 84% rename from web/pdf_viewer.js rename to web/pdf_single_page_viewer.js index 7ca01ec04..0ca0e6c05 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_single_page_viewer.js @@ -14,11 +14,9 @@ */ import { ScrollMode, SpreadMode } from "./ui_utils.js"; -import { BaseViewer } from "./base_viewer.js"; +import { PDFViewer } from "./base_viewer.js"; -class PDFViewer extends BaseViewer {} - -class PDFSinglePageViewer extends BaseViewer { +class PDFSinglePageViewer extends PDFViewer { _resetView() { super._resetView(); this._scrollMode = ScrollMode.PAGE; @@ -36,4 +34,4 @@ class PDFSinglePageViewer extends BaseViewer { _updateSpreadMode() {} } -export { PDFSinglePageViewer, PDFViewer }; +export { PDFSinglePageViewer }; diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index e4ca1417e..1a6d29375 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -31,7 +31,6 @@ import { ScrollMode, SpreadMode, } from "./ui_utils.js"; -import { PDFSinglePageViewer, PDFViewer } from "./pdf_viewer.js"; import { AnnotationLayerBuilder } from "./annotation_layer_builder.js"; import { DownloadManager } from "./download_manager.js"; import { EventBus } from "./event_utils.js"; @@ -41,6 +40,8 @@ import { PDFFindController } from "./pdf_find_controller.js"; import { PDFHistory } from "./pdf_history.js"; import { PDFPageView } from "./pdf_page_view.js"; import { PDFScriptingManager } from "./pdf_scripting_manager.js"; +import { PDFSinglePageViewer } from "./pdf_single_page_viewer.js"; +import { PDFViewer } from "./base_viewer.js"; import { StructTreeLayerBuilder } from "./struct_tree_layer_builder.js"; import { TextLayerBuilder } from "./text_layer_builder.js"; import { XfaLayerBuilder } from "./xfa_layer_builder.js"; From 21fe5017bb6f6fc470f6d0a34bab02efa0900cd9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 8 Sep 2022 11:53:56 +0200 Subject: [PATCH 2/2] Remove the abstract `BaseViewer`-class After the changes in PR 14112 the `PDFViewer`-class is now "identical" to the `BaseViewer`-class and the `PDFSinglePageViewer`-class is just a very thin wrapper around the `BaseViewer`-class. Hence we can rename these files, and also remove the abstract `BaseViewer`-class, which helps reduce some unnecessary "closures" in the *built* viewer. *Please note:* These changes are made in two separate commits, to allow GitHub to preserve `blame` for the affected files. --- test/unit/clitests.json | 2 +- test/unit/jasmine-boot.js | 2 +- test/unit/{base_viewer_spec.js => pdf_viewer_spec.js} | 2 +- web/app.js | 2 +- web/pdf_single_page_viewer.js | 2 +- web/pdf_viewer.component.js | 2 +- web/{base_viewer.js => pdf_viewer.js} | 0 web/secondary_toolbar.js | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) rename test/unit/{base_viewer_spec.js => pdf_viewer_spec.js} (98%) rename web/{base_viewer.js => pdf_viewer.js} (100%) diff --git a/test/unit/clitests.json b/test/unit/clitests.json index 1755c691d..99cca1b41 100644 --- a/test/unit/clitests.json +++ b/test/unit/clitests.json @@ -9,7 +9,6 @@ "annotation_spec.js", "annotation_storage_spec.js", "api_spec.js", - "base_viewer_spec.js", "bidi_spec.js", "cff_parser_spec.js", "cmap_spec.js", @@ -35,6 +34,7 @@ "pdf_find_controller_spec.js", "pdf_find_utils_spec.js", "pdf_history_spec.js", + "pdf_viewer_spec.js", "primitives_spec.js", "stream_spec.js", "struct_tree_spec.js", diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 89d8d474a..0997edf51 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -54,7 +54,6 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/annotation_spec.js", "pdfjs-test/unit/annotation_storage_spec.js", "pdfjs-test/unit/api_spec.js", - "pdfjs-test/unit/base_viewer_spec.js", "pdfjs-test/unit/bidi_spec.js", "pdfjs-test/unit/cff_parser_spec.js", "pdfjs-test/unit/cmap_spec.js", @@ -81,6 +80,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/pdf_find_controller_spec.js", "pdfjs-test/unit/pdf_find_utils_spec.js", "pdfjs-test/unit/pdf_history_spec.js", + "pdfjs-test/unit/pdf_viewer_spec.js", "pdfjs-test/unit/primitives_spec.js", "pdfjs-test/unit/scripting_spec.js", "pdfjs-test/unit/stream_spec.js", diff --git a/test/unit/base_viewer_spec.js b/test/unit/pdf_viewer_spec.js similarity index 98% rename from test/unit/base_viewer_spec.js rename to test/unit/pdf_viewer_spec.js index 2333f3e0e..b8890c109 100644 --- a/test/unit/base_viewer_spec.js +++ b/test/unit/pdf_viewer_spec.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { PDFPageViewBuffer } from "../../web/base_viewer.js"; +import { PDFPageViewBuffer } from "../../web/pdf_viewer.js"; describe("PDFViewer", function () { describe("PDFPageViewBuffer", function () { diff --git a/web/app.js b/web/app.js index 5955fb353..63eb8a9ce 100644 --- a/web/app.js +++ b/web/app.js @@ -73,7 +73,7 @@ import { PDFScriptingManager } from "./pdf_scripting_manager.js"; import { PDFSidebar } from "./pdf_sidebar.js"; import { PDFSidebarResizer } from "./pdf_sidebar_resizer.js"; import { PDFThumbnailViewer } from "./pdf_thumbnail_viewer.js"; -import { PDFViewer } from "./base_viewer.js"; +import { PDFViewer } from "./pdf_viewer.js"; import { SecondaryToolbar } from "./secondary_toolbar.js"; import { Toolbar } from "./toolbar.js"; import { ViewHistory } from "./view_history.js"; diff --git a/web/pdf_single_page_viewer.js b/web/pdf_single_page_viewer.js index 0ca0e6c05..84473a96f 100644 --- a/web/pdf_single_page_viewer.js +++ b/web/pdf_single_page_viewer.js @@ -14,7 +14,7 @@ */ import { ScrollMode, SpreadMode } from "./ui_utils.js"; -import { PDFViewer } from "./base_viewer.js"; +import { PDFViewer } from "./pdf_viewer.js"; class PDFSinglePageViewer extends PDFViewer { _resetView() { diff --git a/web/pdf_viewer.component.js b/web/pdf_viewer.component.js index 1a6d29375..bf25bcbb8 100644 --- a/web/pdf_viewer.component.js +++ b/web/pdf_viewer.component.js @@ -41,7 +41,7 @@ import { PDFHistory } from "./pdf_history.js"; import { PDFPageView } from "./pdf_page_view.js"; import { PDFScriptingManager } from "./pdf_scripting_manager.js"; import { PDFSinglePageViewer } from "./pdf_single_page_viewer.js"; -import { PDFViewer } from "./base_viewer.js"; +import { PDFViewer } from "./pdf_viewer.js"; import { StructTreeLayerBuilder } from "./struct_tree_layer_builder.js"; import { TextLayerBuilder } from "./text_layer_builder.js"; import { XfaLayerBuilder } from "./xfa_layer_builder.js"; diff --git a/web/base_viewer.js b/web/pdf_viewer.js similarity index 100% rename from web/base_viewer.js rename to web/pdf_viewer.js diff --git a/web/secondary_toolbar.js b/web/secondary_toolbar.js index 10383830c..a561ff170 100644 --- a/web/secondary_toolbar.js +++ b/web/secondary_toolbar.js @@ -15,7 +15,7 @@ import { ScrollMode, SpreadMode } from "./ui_utils.js"; import { CursorTool } from "./pdf_cursor_tools.js"; -import { PagesCountLimit } from "./base_viewer.js"; +import { PagesCountLimit } from "./pdf_viewer.js"; /** * @typedef {Object} SecondaryToolbarOptions