Skip to content

[browser] Generate boot config with hash field instead of integrity - #122353

Merged
maraf merged 2 commits into
dotnet:mainfrom
maraf:BrowserAssetIntegrity2
Dec 10, 2025
Merged

maraf merged 2 commits into
dotnet:mainfrom
maraf:BrowserAssetIntegrity2

Conversation

@maraf

@maraf maraf commented Dec 9, 2025 •

Copy link
Copy Markdown
Member

JavaScript part of .NET expects assets to have field hash. This PR unifies it between internal structure and boot config generated during build. It is a regression from boot config structure change from #116300.

This PR will cause failure of some tests once it flows to dotnet/sdk.
This PR will be a candidate for backport to 10.0.

Fixes #121876

@maraf maraf added this to the 11.0.0 milestone Dec 9, 2025
@maraf maraf self-assigned this Dec 9, 2025
@maraf maraf added arch-wasm WebAssembly architecture area-Build-mono os-browser Browser variant of arch-wasm labels Dec 9, 2025
@maraf maraf changed the title [browser] Generate boot config with hash expected by javascript instead of integrity [browser] Generate boot config with hash field instead of integrity Dec 9, 2025
@maraf
maraf requested a review from pavelsavara December 9, 2025 18:38
@maraf
maraf marked this pull request as ready for review December 10, 2025 08:53
@maraf
maraf requested a review from ilonatommy as a code owner December 10, 2025 08:53
Copilot AI review requested due to automatic review settings December 10, 2025 08:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a regression from #116300 by renaming the integrity field to hash in the boot configuration classes and their usage. The JavaScript runtime expects assets to have a hash field, which was incorrectly changed to integrity in the previous PR.

Key Changes:

  • Renamed property from integrity to hash in three asset classes: WasmAsset, GeneralAsset, and VfsAsset
  • Updated all property assignments in BootJsonBuilderHelper.cs to use the hash field name
  • Added test case to verify that assets have integrity/hash values

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonData.cs Renamed integrity property to hash in WasmAsset, GeneralAsset, and VfsAsset classes
src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonBuilderHelper.cs Updated all property assignments from integrity to hash when creating asset instances
src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js Added new test case "AssetIntegrity" to log integrity values for all assets via resource loader
src/mono/wasm/Wasm.Build.Tests/ModuleConfigTests.cs Added test method to verify that non-JS/non-JSON assets have integrity hash values

@maraf
maraf enabled auto-merge (squash) December 10, 2025 16:01
@maraf
maraf merged commit 3bb51ca into dotnet:main Dec 10, 2025
33 checks passed
@maraf
maraf deleted the BrowserAssetIntegrity2 branch December 10, 2025 16:26
@maraf

maraf commented Dec 10, 2025

Copy link
Copy Markdown
Member Author

/backport to release/10.0

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/10.0 (link to workflow run)

@github-actions

Copy link
Copy Markdown
Contributor

@maraf backporting to release/10.0 failed, the patch most likely resulted in conflicts. Please backport manually!

git am output
$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch

Applying: Generate boot config with hash expected by javascript instead of integrity
Using index info to reconstruct a base tree...
M	src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js
M	src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonBuilderHelper.cs
Falling back to patching base and 3-way merge...
Auto-merging src/mono/wasm/testassets/WasmBasicTestApp/App/wwwroot/main.js
Auto-merging src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonBuilderHelper.cs
CONFLICT (content): Merge conflict in src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonBuilderHelper.cs
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 Generate boot config with hash expected by javascript instead of integrity
Error: The process '/usr/bin/git' failed with exit code 128

Link to workflow output

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasm WebAssembly architecture area-Build-mono os-browser Browser variant of arch-wasm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[browser] Integrity passed to withResourceLoader is always empty

3 participants