RFR: 8297609: Add application/wasm MIME type for wasm file extension

Michal Karm Babacek duke at openjdk.org
Fri Nov 25 13:20:52 UTC 2022


This PR adds a missing MIME: application/wasm and unifies the file format on tabs, as that seemed to be the winning side of the tabs/spaces war in this file.

# How to reproduce

You will need to compile a `.c` file to a `.wasm` binary. Use [Emscripten SDK](https://emscripten.org/docs/getting_started/downloads.html) for that or download the prebuilt files from this post, [out.zip](https://github.com/openjdk/jdk/files/10066496/out.zip),  if you choose to trust me with your browser...

## Sources

`main.c`:

#include <stdio.h>

int main() {
  printf("Hello browser debug console...\n");
}


`Server.java`:

import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.SimpleFileServer;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.file.Path;

import static java.lang.System.exit;
import static java.lang.System.out;

public class Server {
    public static void main(String... args) {
        if (args.length != 2) {
            out.println("Usage: java Server <port> <web dir path>");
            exit(1);
        }
        final int port = Integer.parseInt(args[0]);
        final InetSocketAddress ADDR = new InetSocketAddress(InetAddress.getLoopbackAddress(), port);
        final Path root = Path.of(args[1]).toAbsolutePath();
        final HttpServer server = SimpleFileServer.createFileServer(ADDR, root, SimpleFileServer.OutputLevel.VERBOSE);
        out.printf("Starting serving files from %s dir: http://%s:%d\n", root, ADDR.getAddress().getHostAddress(), port);
        server.start();
    }
}

## Build

$ mkdir out
$ emcc main.c -s WASM=1 -o out/main.html
$ ls out/
main.html  main.js  main.wasm

You can have these files here, built by me:  [out.zip](https://github.com/openjdk/jdk/files/10066496/out.zip)

## Execution

$ java --version
openjdk 19.0.1 2022-10-18
$ javac Server.java
$ java Server 8888 ./out/
Starting serving files from /tmp/hello_wasm/./out dir: http://127.0.0.1:8888


When I open my Firefox 106.0.5 (64-bit), I can see that the Java server offers the `.wasm` file with a suboptimal `application/octet-stream` MIME:

![bad](https://user-images.githubusercontent.com/691097/203292673-dff79256-7286-42b1-9b72-60ff6e9aadd3.png)

When I switch to the JDK patched with this patch and run the server again:

$ java Server 8888 ./out/
Starting serving files from /tmp/hello_wasm/./out dir: http://127.0.0.1:8888

I can see that the `.wasm` file is properly served to Firefox as `application/wasm`:

![good](https://user-images.githubusercontent.com/691097/203293296-77ff4913-b86d-45fe-976e-8cbcde79da36.png)

Thank you for your time.

Cheers
K.

-------------

Commit messages:
 - Adds missing MIME application/wasm

Changes: https://git.openjdk.org/jdk/pull/11284/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11284&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8297609
  Stats: 20 lines in 2 files changed: 8 ins; 0 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/11284.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11284/head:pull/11284

PR: https://git.openjdk.org/jdk/pull/11284


More information about the net-dev mailing list