| Summary: | FontFaceSet's iterators skip items when previous items are removed | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Myles C. Maxfield <mmaxfield> | ||||||
| Component: | Text | Assignee: | Myles C. Maxfield <mmaxfield> | ||||||
| Status: | NEW --- | ||||||||
| Severity: | Normal | CC: | ahmad.saleem792, mmaxfield, simon.fraser, webkit-bug-importer, zalan | ||||||
| Priority: | P2 | Keywords: | InRadar | ||||||
| Version: | WebKit Nightly Build | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Attachments: |
|
||||||||
I opened the same bug on Gecko here: https://bugzilla.mozilla.org/show_bug.cgi?id=1729997 WebKit doesn't actually use setlike<FontFace> inside the IDL for FontFaceSet. Migrating to that might fix this. Created attachment 437769 [details]
Test
Created attachment 437770 [details]
Highlight API test
I also tested the Highlight API (which also uses setlike) and it behaves correctly here.
*** Safari 16 / STP 153 on macOS 12.6 *** A , A , C - Using "Test" *** Firefox Nightly 106 *** A , A , C - Using "Test" *** Chrome Canary 107 *** A , A , B - Using "Test" _____________ *** Safari 16 / STP 153 on macOS 12.6 *** Just 'Hello' in body but no dialog box - Using "API" test *** Firefox Nightly 106 *** Just 'Hello' in body but no dialog box - Using "API" test *** Chrome Canary 107 *** Just 'Hello' in body but 1 , 1 , 2 dialog alerts - Using "API" test ____ Just wanted to share updated testing results. Thanks! |
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15 Steps to reproduce: Iterate across a FontFaceSet. When the iterator is halfway through, delete an element from the first half. Then continue iterating. FontFaceSet is Setlike, and JS's set delete functionality is specified as: > Replace the element of entries whose value is e with an element whose value is empty. The purpose of this is to make iterators not skip over items when items are deleted during iteration.