Skip to content

fix(core/webidl): give unique IDs to partial namespace blocks#5181

Merged
marcoscaceres merged 9 commits intomainfrom
fix/partial-namespace-id
Apr 16, 2026
Merged

fix(core/webidl): give unique IDs to partial namespace blocks#5181
marcoscaceres merged 9 commits intomainfrom
fix/partial-namespace-id

Conversation

@marcoscaceres
Copy link
Copy Markdown
Contributor

The resolveNameAndId switch handled partial resolution for callback interface, dictionary, interface, and interface mixin, but not namespace. Multiple partial namespace blocks got the same ID. Adds case namespace to the switch and a regression test.

Closes #4447

The resolveNameAndId switch handled partial resolution for callback
interface, dictionary, interface, and interface mixin, but not
namespace. Multiple partial namespace blocks got the same ID.

Closes #4447
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Fixes a WebIDL rendering bug where multiple partial namespace blocks could be assigned the same generated HTML id, causing duplicate-ID errors in exported HTML.

Changes:

  • Extend resolveNameAndId() to apply partial-ID suffixing to namespace definitions (consistent with interface/dictionary/mixin handling).
  • Add a regression test to ensure partial namespaces receive distinct idl-def-*-partial-N IDs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/core/webidl.js Adds namespace to the set of top-level definition types that get -partial-N ID suffixes when partial.
tests/spec/core/webidl-spec.js Adds a regression test covering unique ID generation for multiple partial namespace blocks.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/spec/core/webidl-spec.js Outdated
…ssertions, rebuild all profiles

Agent-Logs-Url: https://github.com/speced/respec/sessions/1df25aea-6a45-4a46-8dee-96011a47c3f2

Co-authored-by: marcoscaceres <870154+marcoscaceres@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 13, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • android.clients.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • api.specref.org
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • clientservices.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • respec.org
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)
  • www.w3.org
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4257 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-50504891 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,7015536338227678776,11219952462999147698,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,14781722468447680588,15217491467561085281,4 --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-50504891 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=50504891 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4590 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-75292440 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2767847869578359405,5384051918574469045,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,2591580657991529984,16061627139040807387,4 --trace-process-track-uuid=3190708989122997041 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@marcoscaceres
Copy link
Copy Markdown
Contributor Author

@copilot this PR accidentally included the build/ files. Can you remove them?

Agent-Logs-Url: https://github.com/speced/respec/sessions/78c2a582-3b85-4991-a60d-75fe6242a826

Co-authored-by: marcoscaceres <870154+marcoscaceres@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 13, 2026

@copilot this PR accidentally included the build/ files. Can you remove them?

Removed in ef72433. The builds/ files are now restored to their pre-PR state.

@sidvishnoi sidvishnoi changed the title fix(webidl): give unique IDs to partial namespace blocks fix(core/webidl): give unique IDs to partial namespace blocks Apr 15, 2026
@marcoscaceres marcoscaceres enabled auto-merge (squash) April 15, 2026 11:52
@marcoscaceres
Copy link
Copy Markdown
Contributor Author

@copilot can you rebase this and help me with the merge conflicts?

Co-authored-by: marcoscaceres <870154+marcoscaceres@users.noreply.github.com>
auto-merge was automatically disabled April 16, 2026 11:32

Head branch was pushed to by a user without write access

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 16, 2026

@copilot can you rebase this and help me with the merge conflicts?

Done in 0659751. Merged origin/main and resolved the conflict in webidl-spec.js by keeping both the new partial namespace test and the "does not set data-dfn-for" tests added in main (#5178).

@marcoscaceres marcoscaceres enabled auto-merge (squash) April 16, 2026 11:35
@marcoscaceres marcoscaceres merged commit a015f32 into main Apr 16, 2026
9 checks passed
@marcoscaceres marcoscaceres deleted the fix/partial-namespace-id branch April 16, 2026 11:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Duplicate id errors in generated HTML for WebIDL using partial namespace

4 participants