Contact emails
dan...@microsoft.com<mailto:dan...@microsoft.com>, 
sa...@microsoft.com<mailto:sa...@microsoft.com>, 
ffi...@microsoft.com<mailto:ffi...@microsoft.com>, 
lusan...@microsoft.com<mailto:lusan...@microsoft.com>, 
pc...@microsoft.com<mailto:pc...@microsoft.com>,

Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/highlight/explainer.md


Specification
https://drafts.csswg.org/css-highlight-api-1/


Design docs

https://docs.google.com/document/d/1vaWiPLA9opz0AObbObuRj3P5zqzoM2ldy0pHkZkJyxo


Summary

The custom highlight API provides a way for web developers to style the text of 
arbitrary ranges. This is useful in a variety of scenarios, including editing 
frameworks that wish to implement their own selection, find-on-page over 
virtualized documents, multiple selections to represent online collaboration, 
or spellchecking frameworks.



Blink component
Blink>Editing<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EEditing>


Search tags
Custom Highlight 
API<https://chromestatus.com/features#tags:Custom%20Highlight%20API>, Highlight 
API<https://chromestatus.com/features#tags:Highlight%20API>


TAG review
https://github.com/w3ctag/design-reviews/issues/584


TAG review status
Issues addressed


Risks


Interoperability and Compatibility

Low risk: This feature received positive support from Safari and Firefox at 
TPAC 2019. Safari is implementing it, Firefox has not yet made any clear 
indication on implementation.


Gecko: No clear signal 
(https://github.com/mozilla/standards-positions/issues/482)

WebKit: Positive. WebKit implemented the feature behind an experimental flag in 
99: 
https://developer.apple.com/safari/technology-preview/release-notes/#:~:text=Added%20support%20for%20rendering%20highlights%20specified%20in%20CSS%20Highlight%20API.

Web developers: Strongly positive 
(https://github.com/w3c/csswg-drafts/issues/4307). Multiple use cases have been 
pointed out in this issue. CKEditor has also shown support from the first 
highlight API explainer.

Other signals:


Ergonomics

Highlight API will be the first use case for constructible StaticRanges, which 
the API permits as an alternative to Iive Ranges because they do not incur cost 
during DOM mutations.



Activation

No. Web developers should be able to use the feature as-is. It is also easy to 
feature detect (checking for the existence of CSS.highlights).



WebView application risks
None.


Debuggability

DevTools shows ::highlight pseudo elements in the style pane. This includes 
inherited pseudos per the highlight inheritance 
model<https://drafts.csswg.org/css-pseudo-4/#highlight-cascade> used by custom 
highlights.



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, 
Chrome OS, Android, and Android WebView)?
Yes


Is this feature fully tested by 
web-platform-tests<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
https://github.com/web-platform-tests/wpt/tree/master/css/css-highlight-api

Flag name
HighlightAPI


Requires code in //chrome?
False


Tracking bug
https://crbug.com/1164461


Estimated milestones

No milestones specified


Anticipated spec changes

Future work will likely add support for setting pointer event listeners on 
highlights so that highlights can react to user input. For some early thoughts 
on this see 
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/highlight/events-explainer.md.
 That work will not be a compat risk; it would be only additive.



Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5436441440026624


Links to previous Intent discussions
Intent to prototype: 
https://groups.google.com/a/chromium.org/g/blink-dev/c/Ix2u8NHG5Po/m/jjMjWIHXAQAJ
Earlier Intent to ship: 
https://groups.google.com/a/chromium.org/g/blink-dev/c/Q21B          
Qb-zV0w/m/2ik0_aKyCAAJ<https://groups.google.com/a/chromium.org/g/blink-dev/c/Q21B%09Qb-zV0w/m/2ik0_aKyCAAJ>

Additional Comments:
We sent an earlier Intent to 
Ship<https://groups.google.com/a/chromium.org/g/blink-dev/c/Q21BQb-zV0w/m/2ik0_aKyCAAJ>
 for this feature last year where we received feedback about several spec and 
implementation issues that needed to be resolved prior to shipping. We have now 
addressed these issues. Things that have changed since the initial I2S include:
- Custom highlights have been switched to use highlight pseudo 
inheritance<https://drafts.csswg.org/css-pseudo-4/#highlight-cascade>, 
resolving longstanding disagreements between how highlight pseudos work in 
Chromium versus what is said in the spec.
- Many highlight painting bugs have been fixed by Igalia's work in this space. 
Note: Some of these fixes came from the HighlightOverlayPainting work that was 
landed in https://chromium-review.googlesource.com/c/chromium/src/+/3640642. 
That change was reverted due to a perf issue, so we'll wait for it to reland 
prior to landing the shipping CL for Custom Highlight API.
- Custom highlights are now exposed to a11y tech though an approach developed 
in discussions with CSSWG and APAWG: 
https://github.com/w3c/csswg-drafts/issues/6498
- Miscellaneous other CSSWG resolutions and bugfixes.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/DM5PR00MB0437B1B4E35C4373FF37E4C4C5A49%40DM5PR00MB0437.namprd00.prod.outlook.com.

Reply via email to