From 573f83b65a8a0f87def6f4200ce503d957464f0d Mon Sep 17 00:00:00 2001
From: toasted-nutbread <toasted-nutbread@users.noreply.github.com>
Date: Wed, 11 Dec 2019 21:59:38 -0500
Subject: Update frontend API receiver handlers

---
 ext/fg/js/frontend-api-receiver.js | 17 +++++++----------
 ext/fg/js/popup-proxy-host.js      | 22 +++++++++++-----------
 2 files changed, 18 insertions(+), 21 deletions(-)

(limited to 'ext/fg/js')

diff --git a/ext/fg/js/frontend-api-receiver.js b/ext/fg/js/frontend-api-receiver.js
index 7d38ddd5..8d5e52ee 100644
--- a/ext/fg/js/frontend-api-receiver.js
+++ b/ext/fg/js/frontend-api-receiver.js
@@ -18,9 +18,9 @@
 
 
 class FrontendApiReceiver {
-    constructor(source='', handlers={}) {
-        this.source = source;
-        this.handlers = handlers;
+    constructor(source='', handlers=new Map()) {
+        this._source = source;
+        this._handlers = handlers;
 
         chrome.runtime.onConnect.addListener(this.onConnect.bind(this));
     }
@@ -32,16 +32,13 @@ class FrontendApiReceiver {
     }
 
     onMessage(port, {id, action, params, target, senderId}) {
-        if (
-            target !== this.source ||
-            !hasOwn(this.handlers, action)
-        ) {
-            return;
-        }
+        if (target !== this._source) { return; }
+
+        const handler = this._handlers.get(action);
+        if (typeof handler !== 'function') { return; }
 
         this.sendAck(port, id, senderId);
 
-        const handler = this.handlers[action];
         handler(params).then(
             (result) => {
                 this.sendResult(port, id, senderId, {result});
diff --git a/ext/fg/js/popup-proxy-host.js b/ext/fg/js/popup-proxy-host.js
index b2f18b97..de182afe 100644
--- a/ext/fg/js/popup-proxy-host.js
+++ b/ext/fg/js/popup-proxy-host.js
@@ -36,17 +36,17 @@ class PopupProxyHost {
         const {frameId} = await this.frameIdPromise;
         if (typeof frameId !== 'number') { return; }
 
-        this.apiReceiver = new FrontendApiReceiver(`popup-proxy-host#${frameId}`, {
-            createNestedPopup: ({parentId}) => this.createNestedPopup(parentId),
-            setOptions: ({id, options}) => this.setOptions(id, options),
-            hide: ({id, changeFocus}) => this.hide(id, changeFocus),
-            isVisibleAsync: ({id}) => this.isVisibleAsync(id),
-            setVisibleOverride: ({id, visible}) => this.setVisibleOverride(id, visible),
-            containsPoint: ({id, x, y}) => this.containsPoint(id, x, y),
-            showContent: ({id, elementRect, writingMode, type, details}) => this.showContent(id, elementRect, writingMode, type, details),
-            setCustomCss: ({id, css}) => this.setCustomCss(id, css),
-            clearAutoPlayTimer: ({id}) => this.clearAutoPlayTimer(id)
-        });
+        this.apiReceiver = new FrontendApiReceiver(`popup-proxy-host#${frameId}`, new Map([
+            ['createNestedPopup', ({parentId}) => this.createNestedPopup(parentId)],
+            ['setOptions', ({id, options}) => this.setOptions(id, options)],
+            ['hide', ({id, changeFocus}) => this.hide(id, changeFocus)],
+            ['isVisibleAsync', ({id}) => this.isVisibleAsync(id)],
+            ['setVisibleOverride', ({id, visible}) => this.setVisibleOverride(id, visible)],
+            ['containsPoint', ({id, x, y}) => this.containsPoint(id, x, y)],
+            ['showContent', ({id, elementRect, writingMode, type, details}) => this.showContent(id, elementRect, writingMode, type, details)],
+            ['setCustomCss', ({id, css}) => this.setCustomCss(id, css)],
+            ['clearAutoPlayTimer', ({id}) => this.clearAutoPlayTimer(id)]
+        ]));
     }
 
     createPopup(parentId, depth) {
-- 
cgit v1.2.3