← Back to release summary

Remove [LegacyNoInterfaceObject] from FontFaceSet IDL

Category
Miscellaneous
Type
No developer-visible change
Status
Proposed (Chrome Proposed)
Intent stage
None

Summary

Chromium's FontFaceSet IDL previously used [LegacyNoInterfaceObject], which hid FontFaceSet as a global property and deleted the constructor property from its prototype. This deviated from the CSS Font Loading spec and differed from Safari and Firefox behavior. This change removes [LegacyNoInterfaceObject] from the FontFaceSet IDL, so FontFaceSet is properly exposed as a global property. Since no constructor() is defined in the IDL, calling new FontFaceSet() from JavaScript now throws TypeError: Illegal constructor, matching the spec. This also fixes the historical.html WPT, which was previously failing in Chromium.

Motivation

Chromium applied [LegacyNoInterfaceObject] to FontFaceSet, hiding it as a global property and breaking "FontFaceSet" in self. This caused 18 WPT idlharness failures and one historical.html failure. Safari and Firefox already expose FontFaceSet globally. This brings Chromium into spec compliance with no new constructor exposed.

Standards & signals

View on chromestatus.com