Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions wasm_demo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@
oninput="show_threads.value=threads.value">
</div>

<!-- Workaround for cross-origin isolation, see
https://developer.chrome.com/blog/enabling-shared-array-buffer/
https://dev.to/stefnotch/enabling-coop-coep-without-touching-the-server-2d3n
-->
<script type='module' src="./main.js">
</script>

<!-- Allow the C++ to access the canvas element -->
<script type='text/javascript'>
var Module = {
Expand Down
2 changes: 1 addition & 1 deletion wasm_demo/js/index.js

Large diffs are not rendered by default.

Binary file modified wasm_demo/js/index.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion wasm_demo/js/index_simd.js

Large diffs are not rendered by default.

Binary file modified wasm_demo/js/index_simd.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion wasm_demo/js/index_simd_threads.js

Large diffs are not rendered by default.

Binary file modified wasm_demo/js/index_simd_threads.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion wasm_demo/js/index_simd_threads.worker.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion wasm_demo/js/index_threads.js

Large diffs are not rendered by default.

Binary file modified wasm_demo/js/index_threads.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion wasm_demo/js/index_threads.worker.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions wasm_demo/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// from https://dev.to/stefnotch/enabling-coop-coep-without-touching-the-server-2d3n
// main.js
if ("serviceWorker" in navigator) {
// Register service worker
navigator.serviceWorker.register(new URL("./sw.js", import.meta.url)).then(
function (registration) {
console.log("COOP/COEP Service Worker registered", registration.scope);
// If the registration is active, but it's not controlling the page
if (registration.active && !navigator.serviceWorker.controller) {
window.location.reload();
}
},
function (err) {
console.log("COOP/COEP Service Worker failed to register", err);
}
);
} else {
console.warn("Cannot register a service worker");
}
39 changes: 39 additions & 0 deletions wasm_demo/sw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// from https://dev.to/stefnotch/enabling-coop-coep-without-touching-the-server-2d3n
// sw.js
self.addEventListener("install", function () {
self.skipWaiting();
});

self.addEventListener("activate", (event) => {
event.waitUntil(self.clients.claim());
});

self.addEventListener("fetch", function (event) {
if (event.request.cache === "only-if-cached" && event.request.mode !== "same-origin") {
return;
}

event.respondWith(
fetch(event.request)
.then(function (response) {
// It seems like we only need to set the headers for index.html
// If you want to be on the safe side, comment this out
// if (!response.url.includes("index.html")) return response;

const newHeaders = new Headers(response.headers);
newHeaders.set("Cross-Origin-Embedder-Policy", "require-corp");
newHeaders.set("Cross-Origin-Opener-Policy", "same-origin");

const moddedResponse = new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: newHeaders,
});

return moddedResponse;
})
.catch(function (e) {
console.error(e);
})
);
});