From 32baa6af7a00b20172200ed0fd0757d3a0cc40ae Mon Sep 17 00:00:00 2001
From: Jonas Jenwald <jonas.jenwald@gmail.com>
Date: Fri, 5 May 2017 17:55:02 +0200
Subject: [PATCH] Convert the `DOMCMapReaderFactory` to an ES6 class

Given that we only create *one* instance of this class per `getDocument` call, this shouldn't matter performance wise.
---
 src/display/dom_utils.js | 85 +++++++++++++++++++---------------------
 test/unit/test_utils.js  | 13 +++---
 2 files changed, 46 insertions(+), 52 deletions(-)

diff --git a/src/display/dom_utils.js b/src/display/dom_utils.js
index e89123dba..cd359ee9a 100644
--- a/src/display/dom_utils.js
+++ b/src/display/dom_utils.js
@@ -52,59 +52,54 @@ DOMCanvasFactory.prototype = {
   }
 };
 
-var DOMCMapReaderFactory = (function DOMCMapReaderFactoryClosure() {
-  function DOMCMapReaderFactory(params) {
-    this.baseUrl = params.baseUrl || null;
-    this.isCompressed = params.isCompressed || false;
+class DOMCMapReaderFactory {
+  constructor({ baseUrl = null, isCompressed = false, }) {
+    this.baseUrl = baseUrl;
+    this.isCompressed = isCompressed;
   }
 
-  DOMCMapReaderFactory.prototype = {
-    fetch(params) {
-      var name = params.name;
-      if (!name) {
-        return Promise.reject(new Error('CMap name must be specified.'));
-      }
-      return new Promise((resolve, reject) => {
-        var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
+  fetch({ name, }) {
+    if (!name) {
+      return Promise.reject(new Error('CMap name must be specified.'));
+    }
+    return new Promise((resolve, reject) => {
+      let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
 
-        var request = new XMLHttpRequest();
-        request.open('GET', url, true);
+      let request = new XMLHttpRequest();
+      request.open('GET', url, true);
 
-        if (this.isCompressed) {
-          request.responseType = 'arraybuffer';
+      if (this.isCompressed) {
+        request.responseType = 'arraybuffer';
+      }
+      request.onreadystatechange = () => {
+        if (request.readyState !== XMLHttpRequest.DONE) {
+          return;
         }
-        request.onreadystatechange = () => {
-          if (request.readyState !== XMLHttpRequest.DONE) {
-            return;
+        if (request.status === 200 || request.status === 0) {
+          let data;
+          if (this.isCompressed && request.response) {
+            data = new Uint8Array(request.response);
+          } else if (!this.isCompressed && request.responseText) {
+            data = stringToBytes(request.responseText);
           }
-          if (request.status === 200 || request.status === 0) {
-            var data;
-            if (this.isCompressed && request.response) {
-              data = new Uint8Array(request.response);
-            } else if (!this.isCompressed && request.responseText) {
-              data = stringToBytes(request.responseText);
-            }
-            if (data) {
-              resolve({
-                cMapData: data,
-                compressionType: this.isCompressed ?
-                  CMapCompressionType.BINARY : CMapCompressionType.NONE,
-              });
-              return;
-            }
+          if (data) {
+            resolve({
+              cMapData: data,
+              compressionType: this.isCompressed ?
+                CMapCompressionType.BINARY : CMapCompressionType.NONE,
+            });
+            return;
           }
-          reject(new Error('Unable to load ' +
-                           (this.isCompressed ? 'binary ' : '') +
-                           'CMap at: ' + url));
-        };
-
-        request.send(null);
-      });
-    },
-  };
+        }
+        reject(new Error('Unable to load ' +
+                         (this.isCompressed ? 'binary ' : '') +
+                         'CMap at: ' + url));
+      };
 
-  return DOMCMapReaderFactory;
-})();
+      request.send(null);
+    });
+  }
+}
 
 /**
  * Optimised CSS custom property getter/setter.
diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js
index 64280cac1..7dab9f1e4 100644
--- a/test/unit/test_utils.js
+++ b/test/unit/test_utils.js
@@ -16,20 +16,19 @@
 import { CMapCompressionType } from '../../src/shared/util';
 
 class NodeCMapReaderFactory {
-  constructor(params) {
-    this.baseUrl = params.baseUrl || null;
-    this.isCompressed = params.isCompressed || false;
+  constructor({ baseUrl = null, isCompressed = false, }) {
+    this.baseUrl = baseUrl;
+    this.isCompressed = isCompressed;
   }
 
-  fetch(params) {
-    var name = params.name;
+  fetch({ name, }) {
     if (!name) {
       return Promise.reject(new Error('CMap name must be specified.'));
     }
     return new Promise((resolve, reject) => {
-      var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
+      let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
 
-      var fs = require('fs');
+      let fs = require('fs');
       fs.readFile(url, (error, data) => {
         if (error || !data) {
           reject(new Error('Unable to load ' +