[Components Server] Add support for gzip files

R=jacktfranklin@chromium.org

Bug: None
Change-Id: I312dc4740fab41e207d2326113db247a19da3e5b
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2799757
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
Auto-Submit: Paul Lewis <aerotwist@chromium.org>
diff --git a/scripts/component_server/server.js b/scripts/component_server/server.js
index f9ad231..6a83e68 100644
--- a/scripts/component_server/server.js
+++ b/scripts/component_server/server.js
@@ -273,14 +273,6 @@
     }
 
     let encoding = 'utf8';
-    if (fullPath.endsWith('.wasm') || fullPath.endsWith('.png') || fullPath.endsWith('.jpg') ||
-        fullPath.endsWith('.avif')) {
-      encoding = 'binary';
-    }
-
-    const fileContents = await fs.promises.readFile(fullPath, encoding);
-
-    encoding = 'utf8';
     if (fullPath.endsWith('.js')) {
       response.setHeader('Content-Type', 'text/javascript; charset=utf-8');
     } else if (fullPath.endsWith('.css')) {
@@ -299,8 +291,12 @@
     } else if (fullPath.endsWith('.avif')) {
       response.setHeader('Content-Type', 'image/avif');
       encoding = 'binary';
+    } else if (fullPath.endsWith('.gz')) {
+      response.setHeader('Content-Type', 'application/gzip');
+      encoding = 'binary';
     }
 
+    const fileContents = await fs.promises.readFile(fullPath, encoding);
     response.writeHead(200);
     response.write(fileContents, encoding);
     response.end();