From 33dc0628a01dc2f81a7c41140569c77d94c0d220 Mon Sep 17 00:00:00 2001
From: Tim van der Meij <timvandermeij@gmail.com>
Date: Sun, 5 Dec 2021 14:18:06 +0100
Subject: [PATCH] Enable the `no-var` linting rule in `test/driver.js`

This is done automatically with the `gulp lint --fix` command with the
only exception of the `annotationLayerContext` variable.
---
 test/driver.js | 80 ++++++++++++++++++++++++++------------------------
 1 file changed, 42 insertions(+), 38 deletions(-)

diff --git a/test/driver.js b/test/driver.js
index d14994973..d929f4f8d 100644
--- a/test/driver.js
+++ b/test/driver.js
@@ -12,7 +12,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* eslint-disable no-var */
 /* globals pdfjsLib, pdfjsViewer */
 
 "use strict";
@@ -148,7 +147,7 @@ async function resolveImages(node, silentErrors = false) {
 /**
  * @class
  */
-var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
+const rasterizeTextLayer = (function rasterizeTextLayerClosure() {
   const styles = {
     common: {
       file: "./text_layer_test.css",
@@ -165,22 +164,25 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
   ) {
     try {
       // Building SVG with size of the viewport.
-      var svg = document.createElementNS(SVG_NS, "svg:svg");
+      const svg = document.createElementNS(SVG_NS, "svg:svg");
       svg.setAttribute("width", viewport.width + "px");
       svg.setAttribute("height", viewport.height + "px");
       // items are transformed to have 1px font size
       svg.setAttribute("font-size", 1);
 
       // Adding element to host our HTML (style + text layer div).
-      var foreignObject = document.createElementNS(SVG_NS, "svg:foreignObject");
+      const foreignObject = document.createElementNS(
+        SVG_NS,
+        "svg:foreignObject"
+      );
       foreignObject.setAttribute("x", "0");
       foreignObject.setAttribute("y", "0");
       foreignObject.setAttribute("width", viewport.width + "px");
       foreignObject.setAttribute("height", viewport.height + "px");
-      var style = document.createElement("style");
-      var stylePromise = loadStyles(styles);
+      const style = document.createElement("style");
+      const stylePromise = loadStyles(styles);
       foreignObject.appendChild(style);
-      var div = document.createElement("div");
+      const div = document.createElement("div");
       div.className = "textLayer";
       foreignObject.appendChild(div);
 
@@ -188,7 +190,7 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
       style.textContent = cssRules;
 
       // Rendering text layer as HTML.
-      var task = renderTextLayer({
+      const task = renderTextLayer({
         textContent,
         container: div,
         viewport,
@@ -211,7 +213,7 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
 /**
  * @class
  */
-var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
+const rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
   /**
    * For the reference tests, the entire annotation layer must be visible. To
    * achieve this, we load the common styles as used by the viewer and extend
@@ -244,32 +246,35 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
   ) {
     try {
       // Building SVG with size of the viewport.
-      var svg = document.createElementNS(SVG_NS, "svg:svg");
+      const svg = document.createElementNS(SVG_NS, "svg:svg");
       svg.setAttribute("width", viewport.width + "px");
       svg.setAttribute("height", viewport.height + "px");
 
       // Adding element to host our HTML (style + annotation layer div).
-      var foreignObject = document.createElementNS(SVG_NS, "svg:foreignObject");
+      const foreignObject = document.createElementNS(
+        SVG_NS,
+        "svg:foreignObject"
+      );
       foreignObject.setAttribute("x", "0");
       foreignObject.setAttribute("y", "0");
       foreignObject.setAttribute("width", viewport.width + "px");
       foreignObject.setAttribute("height", viewport.height + "px");
-      var style = document.createElement("style");
-      var stylePromise = loadStyles(styles);
+      const style = document.createElement("style");
+      const stylePromise = loadStyles(styles);
       foreignObject.appendChild(style);
-      var div = document.createElement("div");
+      const div = document.createElement("div");
       div.className = "annotationLayer";
 
       // Rendering annotation layer as HTML.
       const [common, overrides] = await stylePromise;
       style.textContent = common + "\n" + overrides;
 
-      var annotation_viewport = viewport.clone({ dontFlip: true });
+      const annotation_viewport = viewport.clone({ dontFlip: true });
       const annotationImageMap = await convertCanvasesToImages(
         annotationCanvasMap
       );
 
-      var parameters = {
+      const parameters = {
         viewport: annotation_viewport,
         div,
         annotations,
@@ -298,7 +303,7 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
 /**
  * @class
  */
-var rasterizeXfaLayer = (function rasterizeXfaLayerClosure() {
+const rasterizeXfaLayer = (function rasterizeXfaLayerClosure() {
   const styles = {
     common: {
       file: "../web/xfa_layer_builder.css",
@@ -390,7 +395,7 @@ class Driver {
     this.end = options.end;
 
     // Set parameters from the query string
-    var parameters = this._getQueryStringParameters();
+    const parameters = this._getQueryStringParameters();
     this.browser = parameters.browser;
     this.manifestFile = parameters.manifestFile;
     this.delay = parameters.delay | 0 || 0;
@@ -428,7 +433,7 @@ class Driver {
     this._log(`Harness thinks this browser is ${this.browser}\n`);
     this._log('Fetching manifest "' + this.manifestFile + '"... ');
 
-    var r = new XMLHttpRequest();
+    const r = new XMLHttpRequest();
     r.open("GET", this.manifestFile, false);
     r.onreadystatechange = () => {
       if (r.readyState === 4) {
@@ -608,7 +613,7 @@ class Driver {
     if (!task.pdfDoc) {
       return task.firstPage || 1;
     }
-    var lastPageNumber = task.lastPage || 0;
+    let lastPageNumber = task.lastPage || 0;
     if (!lastPageNumber || lastPageNumber > task.pdfDoc.numPages) {
       lastPageNumber = task.pdfDoc.numPages;
     }
@@ -616,11 +621,11 @@ class Driver {
   }
 
   _nextPage(task, loadError) {
-    var failure = loadError || "";
-    var ctx;
+    let failure = loadError || "";
+    let ctx;
 
     if (!task.pdfDoc) {
-      var dataUrl = this.canvas.toDataURL("image/png");
+      const dataUrl = this.canvas.toDataURL("image/png");
       this._sendResult(dataUrl, task, failure, () => {
         this._log(
           "done" + (failure ? " (failed !: " + failure + ")" : "") + "\n"
@@ -660,7 +665,7 @@ class Driver {
         ctx = this.canvas.getContext("2d", { alpha: false });
         task.pdfDoc.getPage(task.pageNum).then(
           page => {
-            var viewport = page.getViewport({
+            const viewport = page.getViewport({
               scale: PixelsPerInch.PDF_TO_CSS_UNITS,
             });
             this.canvas.width = viewport.width;
@@ -668,7 +673,7 @@ class Driver {
             this._clearCanvas();
 
             // Initialize various `eq` test subtypes, see comment below.
-            var renderAnnotations = false,
+            let renderAnnotations = false,
               renderForms = false,
               renderPrint = false,
               renderXfa = false,
@@ -682,8 +687,8 @@ class Driver {
               }
             }
 
-            var textLayerCanvas, annotationLayerCanvas;
-            var initPromise;
+            let textLayerCanvas, annotationLayerCanvas, annotationLayerContext;
+            let initPromise;
             if (task.type === "text") {
               // Using a dummy canvas for PDF context drawing operations
               textLayerCanvas = this.textLayerCanvas;
@@ -693,14 +698,14 @@ class Driver {
               }
               textLayerCanvas.width = viewport.width;
               textLayerCanvas.height = viewport.height;
-              var textLayerContext = textLayerCanvas.getContext("2d");
+              const textLayerContext = textLayerCanvas.getContext("2d");
               textLayerContext.clearRect(
                 0,
                 0,
                 textLayerCanvas.width,
                 textLayerCanvas.height
               );
-              var enhanceText = !!task.enhance;
+              const enhanceText = !!task.enhance;
               // The text builder will draw its content on the test canvas
               initPromise = page
                 .getTextContent({
@@ -734,8 +739,7 @@ class Driver {
                 }
                 annotationLayerCanvas.width = viewport.width;
                 annotationLayerCanvas.height = viewport.height;
-                var annotationLayerContext =
-                  annotationLayerCanvas.getContext("2d");
+                annotationLayerContext = annotationLayerCanvas.getContext("2d");
                 annotationLayerContext.clearRect(
                   0,
                   0,
@@ -765,7 +769,7 @@ class Driver {
                 initPromise = Promise.resolve();
               }
             }
-            var renderContext = {
+            const renderContext = {
               canvasContext: ctx,
               viewport,
               optionalContentConfigPromise: task.optionalContentConfigPromise,
@@ -780,7 +784,7 @@ class Driver {
               renderContext.intent = "print";
             }
 
-            var completeRender = error => {
+            const completeRender = error => {
               // if text layer is present, compose it on top of the page
               if (textLayerCanvas) {
                 ctx.save();
@@ -845,7 +849,7 @@ class Driver {
   }
 
   _clearCanvas() {
-    var ctx = this.canvas.getContext("2d", { alpha: false });
+    const ctx = this.canvas.getContext("2d", { alpha: false });
     ctx.beginPath();
     ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
   }
@@ -853,7 +857,7 @@ class Driver {
   _snapshot(task, failure) {
     this._log("Snapshotting... ");
 
-    var dataUrl = this.canvas.toDataURL("image/png");
+    const dataUrl = this.canvas.toDataURL("image/png");
     this._sendResult(dataUrl, task, failure, () => {
       this._log(
         "done" + (failure ? " (failed !: " + failure + ")" : "") + "\n"
@@ -868,7 +872,7 @@ class Driver {
     this.end.textContent = "Tests finished. Close this window!";
 
     // Send the quit request
-    var r = new XMLHttpRequest();
+    const r = new XMLHttpRequest();
     r.open("POST", `/tellMeToQuit?browser=${escape(this.browser)}`, false);
     r.onreadystatechange = function (e) {
       if (r.readyState === 4) {
@@ -914,7 +918,7 @@ class Driver {
   }
 
   _sendResult(snapshot, task, failure, callback) {
-    var result = JSON.stringify({
+    const result = JSON.stringify({
       browser: this.browser,
       id: task.id,
       numPages: task.pdfDoc ? task.lastPage || task.pdfDoc.numPages : 0,
@@ -930,7 +934,7 @@ class Driver {
   }
 
   _send(url, message, callback) {
-    var r = new XMLHttpRequest();
+    const r = new XMLHttpRequest();
     r.open("POST", url, true);
     r.setRequestHeader("Content-Type", "application/json");
     r.onreadystatechange = e => {