From 73f8bc754e200c041e17e613a61dfc35db414b66 Mon Sep 17 00:00:00 2001
From: Omar Rizwan <omar.rizwan@gmail.com>
Date: Wed, 27 Feb 2019 22:06:37 -0800
Subject: base64 hack to handle binary files.

add memory fences because why not.
---
 extension/background.js | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

(limited to 'extension/background.js')

diff --git a/extension/background.js b/extension/background.js
index e75618d..6653edd 100644
--- a/extension/background.js
+++ b/extension/background.js
@@ -126,13 +126,18 @@ const router = {
               for (let resource of frameTree.resources) {
                 const resourceSuffix = sanitize(String(resource.url).slice(0, 200));
                 if (resourceSuffix === suffix) {
-                  const {content} = await sendDebuggerCommand(tabId, "Page.getResourceContent", {
+                  let {base64Encoded, content} = await sendDebuggerCommand(tabId, "Page.getResourceContent", {
                     frameId: frameTree.frame.id,
                     url: resource.url
                   });
+                  if (base64Encoded) {
+                    const buf = btoa(atob(content).substr(offset, size));
+                    return { buf, base64Encoded: true };
+                  }
                   return content.substr(offset, size);
                 }
               }
+              throw new UnixError(unix.ENOENT);
             }
           }
         }
@@ -226,11 +231,13 @@ async function onmessage(event) {
       };
 
     } else if (req.op === 'read') {
-      const buf = await read(req.path, req.fh, req.size, req.offset)
+      const ret = await read(req.path, req.fh, req.size, req.offset)
+      const buf = typeof ret === 'string' ? ret : ret.buf;
       response = {
         op: 'read',
         buf
       };
+      if (ret.base64Encoded) response.base64Encoded = ret.base64Encoded;
 
     } else if (req.op === 'release') {
       await release(req.path, req.fh);
@@ -263,7 +270,6 @@ async function onmessage(event) {
   }
   /* console.timeEnd(req.op + ':' + req.path);*/
 
-  response.id = req.id;
   console.log('resp', response);
   ws.send(JSON.stringify(response));
 };
-- 
cgit v1.2.3