| <!DOCTYPE html> |
| <!-- |
| Copyright 2023 The Chromium Authors |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| |
| This is the demo page for the DevToolsPlugin, which serves as an |
| interactive playground during development of the extension itself, |
| and is not shipped as part of the final product. |
| --> |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>DevToolsPlugin demo</title> |
| <script type="module"> |
| import {createPlugin} from './DWARFSymbols.js'; |
| import {ResourceLoader} from './MEMFSResourceLoader.js'; |
| (async () => { |
| globalThis.createPlugin = createPlugin; |
| console.log('Loading plugin...'); |
| globalThis.plugin = await createPlugin(new ResourceLoader()); |
| console.log('Plugin loaded'); |
| })(); |
| </script> |
| </head> |
| <body> |
| <input type="file" id="file" accept=".wasm,application/wasm,.dwp" multiple> |
| </body> |
| <script> |
| document.querySelector("input").addEventListener('change', fileChanged); |
| async function fetchFile(file) { |
| const url = URL.createObjectURL(file); |
| const fileResponse = await fetch(url); |
| const code = await fileResponse.arrayBuffer(); |
| return code; |
| } |
| |
| async function fileChanged(event) { |
| const files = event.target.files; |
| if (files.length === 0) return; |
| if (files.length > 2) { |
| alert("Too many files selected"); |
| return; |
| } |
| let code, dwp = undefined; |
| if (files.length === 1) { |
| code = await fetchFile(files[0]); |
| } else { |
| let codeFile, dwpFile; |
| if (files[0].name.endsWith('.dwp')) { |
| [dwpFile, codeFile] = files; |
| } else if (files[1].name.endsWith('.dwp')) { |
| [codeFile, dwpFile] = files; |
| } else { |
| alert("Select a wasm file and a dwp file, or only a wasm file"); |
| return; |
| } |
| [code, dwp] = await Promise.all([fetchFile(codeFile), fetchFile(dwpFile)]); |
| } |
| if (globalThis.rawModuleId) { |
| await plugin.removeRawModule(globalThis.rawModuleId); |
| globalThis.rawModuleId = undefined; |
| } |
| const sources = await plugin.addRawModule(file.name, '', {url: 'file:///something.wasm', code, dwp}); |
| globalThis.rawModuleId = file.name; |
| console.log(`Successfully loaded ${file.name}`, sources); |
| } |
| </script> |
| </html> |