Skip to content

Prepare for OpaqueRange#1470

Open
annevk wants to merge 2 commits into
mainfrom
annevk/opaquerange-preparations
Open

Prepare for OpaqueRange#1470
annevk wants to merge 2 commits into
mainfrom
annevk/opaquerange-preparations

Conversation

@annevk

@annevk annevk commented Jun 7, 2026

Copy link
Copy Markdown
Member

Introduce NodeRange between AbstractRange and StaticRange/Range and move *Container members there.

Also make it possible for NodeRange and a future OpaqueRange to return different values for *Offset and collapsed members by making them return the result of an internal algorithm.

We keep start/end/start node/etc. on AbstractRange as OpaqueRange will need those to be the same (it will be manipulated just like live ranges are). Technically OpaqueRange is a node range as well, this is just not exposed to the outside world.


Preview | Diff

Introduce NodeRange between AbstractRange and StaticRange/Range and move *Container members there.

Also make it possible for NodeRange and a future OpaqueRange to return different values for *Offset and collapsed members by making them return the result of an internal algorithm.

We keep start/end/start node/etc. on AbstractRange as OpaqueRange will need those to be the same (it will be manipulated just like live ranges are). Technically OpaqueRange is a node range as well, this is just not exposed to the outside world.
@annevk
annevk requested a review from smaug---- June 8, 2026 21:31
beckysiegel pushed a commit to chromium/chromium that referenced this pull request Jul 16, 2026
Add NodeRange between AbstractRange and Range/StaticRange. Under the
OpaqueRange flag, startContainer/endContainer move from AbstractRange to
NodeRange, allowing OpaqueRange to inherit from AbstractRange without
exposing internal DOM containers.

Keep startContainer/endContainer on AbstractRange behind the inverse
LegacyAbstractRange flag until OpaqueRange ships. Add the C++ NodeRange
parent unconditionally so the inheritance chain stays stable.

Relevant discussions: whatwg/dom#1470
whatwg/html#11478 (comment)

Signoff from Blink API Owners on change:
https://groups.google.com/a/chromium.org/g/blink-dev/c/otEJ9AacRg4

Low-Coverage-Reason: COVERAGE_UNDERREPORTED
Bug: 421421332
Change-Id: Ica8f37cc536044269f1e252b63c38e7c8b55e758
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7904930
Reviewed-by: Mason Freed <masonf@chromium.org>
Reviewed-by: Dan Clark <daniec@microsoft.com>
Commit-Queue: Stephanie Zhang <stephanie.zhang@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1663534}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Jul 17, 2026
Add NodeRange between AbstractRange and Range/StaticRange. Under the
OpaqueRange flag, startContainer/endContainer move from AbstractRange to
NodeRange, allowing OpaqueRange to inherit from AbstractRange without
exposing internal DOM containers.

Keep startContainer/endContainer on AbstractRange behind the inverse
LegacyAbstractRange flag until OpaqueRange ships. Add the C++ NodeRange
parent unconditionally so the inheritance chain stays stable.

Relevant discussions: whatwg/dom#1470
whatwg/html#11478 (comment)

Signoff from Blink API Owners on change:
https://groups.google.com/a/chromium.org/g/blink-dev/c/otEJ9AacRg4

Low-Coverage-Reason: COVERAGE_UNDERREPORTED
Bug: 421421332
Change-Id: Ica8f37cc536044269f1e252b63c38e7c8b55e758
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7904930
Reviewed-by: Mason Freed <masonf@chromium.org>
Reviewed-by: Dan Clark <daniec@microsoft.com>
Commit-Queue: Stephanie Zhang <stephanie.zhang@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1663534}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Jul 17, 2026
Add NodeRange between AbstractRange and Range/StaticRange. Under the
OpaqueRange flag, startContainer/endContainer move from AbstractRange to
NodeRange, allowing OpaqueRange to inherit from AbstractRange without
exposing internal DOM containers.

Keep startContainer/endContainer on AbstractRange behind the inverse
LegacyAbstractRange flag until OpaqueRange ships. Add the C++ NodeRange
parent unconditionally so the inheritance chain stays stable.

Relevant discussions: whatwg/dom#1470
whatwg/html#11478 (comment)

Signoff from Blink API Owners on change:
https://groups.google.com/a/chromium.org/g/blink-dev/c/otEJ9AacRg4

Low-Coverage-Reason: COVERAGE_UNDERREPORTED
Bug: 421421332
Change-Id: Ica8f37cc536044269f1e252b63c38e7c8b55e758
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7904930
Reviewed-by: Mason Freed <masonf@chromium.org>
Reviewed-by: Dan Clark <daniec@microsoft.com>
Commit-Queue: Stephanie Zhang <stephanie.zhang@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1663534}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant