Bug 230119

Summary: FontFaceSet's iterators skip items when previous items are removed
Product: WebKit Reporter: Myles C. Maxfield <mmaxfield>
Component: TextAssignee: 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:
Description Flags
Test
none
Highlight API test none

Myles C. Maxfield
Reported 2021-09-09 12:49:45 PDT
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.
Attachments
Test (529 bytes, text/html)
2021-09-09 12:51 PDT, Myles C. Maxfield
no flags
Highlight API test (708 bytes, text/html)
2021-09-09 12:52 PDT, Myles C. Maxfield
no flags
Myles C. Maxfield
Comment 1 2021-09-09 12:50:13 PDT
I opened the same bug on Gecko here: https://bugzilla.mozilla.org/show_bug.cgi?id=1729997
Myles C. Maxfield
Comment 2 2021-09-09 12:50:43 PDT
WebKit doesn't actually use setlike<FontFace> inside the IDL for FontFaceSet. Migrating to that might fix this.
Myles C. Maxfield
Comment 3 2021-09-09 12:51:37 PDT
Myles C. Maxfield
Comment 4 2021-09-09 12:52:28 PDT
Created attachment 437770 [details] Highlight API test I also tested the Highlight API (which also uses setlike) and it behaves correctly here.
Radar WebKit Bug Importer
Comment 5 2021-09-09 12:53:15 PDT
Ahmad Saleem
Comment 6 2022-09-12 15:09:10 PDT
*** 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!
Note You need to log in before you can comment on or make changes to this bug.