Every control the port can actually lay out and draw, in the states that matter. Unsupported <input> types fall back to a text field — they are listed here too so the fallback is visible, not guessed at.
<input>
Drawn by html_redraw_checkbox() — a filled rect, two dark edges, two light edges, and either a tick (≥12px) or a solid blob (<12px).
html_redraw_checkbox()
The two disabled ones must be grey, not blue, and clicking them must do nothing at all — no toggle, no focus, and the pointer stays an arrow.
Script-only; there is no attribute for it. It outranks checked visually (a bar, not a tick), a click leaves it, and :indeterminate matches while it is set.
checked
:indeterminate
Baseline check: text before a checked box and an empty one, then text after. The boxes should sit on the text baseline, not float above or below it.
Drawn by html_redraw_radio() — a filled disc, a ring, and a smaller filled disc when selected.
html_redraw_radio()
Move the pointer over any of these: it should lighten slightly. Hold the mouse down: it should darken clearly, and come back on release — including the ones styled by the author. Dragging off before releasing must clear both. The disabled ones must not react at all.
There is an <input type=hidden name=h value=secret> right here. It must produce no box at all — nothing should shift.
<input type=hidden name=h value=secret>
Everything on this line must be greyed, must ignore clicks, and must match :disabled. The checkbox in the legend must not.
:disabled
:disabled matching, straight from matches() — a CSS-only probe is no good here because this port never paints outline:
matches()
outline
progress and meter are replaced elements here: redraw.c paints the bar straight from the attributes, and the UA sheet gives them their size. Both must be drawn.
progress
meter
Reads back from the DOM on every change — proves clicks reach the gadget and the DOM property follows.