On Tue, 29 Nov 2022 19:23:21 GMT, Michal Karm Babacek <[email protected]> wrote:

>> 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.
>
> Michal Karm Babacek has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Adds test for MIME application/wasm

Seems like a reasonable change. I added a comment to the bug report to the 
effect that there's an existing system property that might be useful here as 
well. "content.types.user.table"  overrides the location of the file being 
updated here. We're also going to look into updating that mechanism to load a 
separate file with additional entries to add to the default file.

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

Marked as reviewed by michaelm (Reviewer).

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

Reply via email to