Bug 264770

Summary: Replaced elements avoid floats, including check boxes and radio boxes
Product: WebKit Reporter: Ahmad Saleem <ahmad.saleem792>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: akeerthi, bfulgham, divya, karlcow, ntim, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Ahmad Saleem 2023-11-13 13:03:42 PST
HI Team,

While going through Blink's commit, I came across another failing test:

Blink Commit: https://chromium.googlesource.com/chromium/blink/+/141235180acceb7bbdd50a315c31171dfcf55a07

Test Case: https://jsfiddle.net/baLmywgu/show

^ Fails in Firefox Nightly 121 as well.

Another Test Case (from Chrome Monorail bug): https://codepen.io/chrisbank/pen/DzmVXY

^ The checkbox & radio are not same place as 'Chrome Canary 121' and Firefox Nightly 121.

Just wanted to raise, so we can fix it.

Thanks!
Comment 1 Ahmad Saleem 2023-11-13 13:07:25 PST
static bool isReplacedElement(Element* element)
{
    // Checkboxes and radioboxes are not isReplaced() nor do they have their own renderer in which to override avoidFloats().
    return element && element->isElementNode() && element->isFormControlElement();
}
bool RenderBox::avoidsFloats() const
{
    return isReplacedOrInlineBlock() || isReplacedElement(element()) || isLegend() || isFieldset() || createsNewFormattingContext();
}

^ This compiles and fix the bug.
Comment 2 Radar WebKit Bug Importer 2023-11-20 13:04:14 PST
<rdar://problem/118660695>
Comment 3 EWS 2024-01-15 11:12:56 PST
Committed 273047@main (7adc3dd2a226): <https://commits.webkit.org/273047@main>

Reviewed commits have been landed. Closing PR #22762 and removing active labels.
Comment 4 Ahmad Saleem 2024-06-27 15:05:32 PDT
*** Bug 124723 has been marked as a duplicate of this bug. ***