Closed Bug 1326163 Opened 7 years ago Closed 7 years ago

Unable to interact with text fields / text at top of SurveyMonkey "State of Code Review Survey"

Categories

(Core :: Layout: Form Controls, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox50 --- unaffected
firefox51 --- unaffected
firefox52 --- unaffected
firefox53 --- fixed

People

(Reporter: dholbert, Assigned: bzbarsky)

References

()

Details

(Keywords: regression, Whiteboard: [webcompat])

Attachments

(4 files, 4 obsolete files)

Filing this for https://github.com/webcompat/web-bugs/issues/4095

STR:
 1. Visit https://www.surveymonkey.com/r/2016SOCR?mkt_tok=eyJpIjoiTjJSaVptUTVPV1U0TXpKbSIsInQiOiJGdm16ODZxRHJcL1BMZWZYRFwvUFhxeHEzTDdmK1dmelhoUTVVdStqU3NISGZVQUpQSWd4ODRpRnltdW44WGc5ckJSWWRYeW42TGJDZzFLQ2lldTdcLzV6eTJpbERpQzBkN0YzaDJsbnZYYXVnakd1WG9cL1wvbU5QRDRtVDRubnh0bE9QIn0=

 2. Try to click one of the first few text fields (and enter text). Or try to select the "About me" title text above the first text field.

ACTUAL RESULTS:
Clicks have no effect. "Inspect" shows that they're blocked by several large transparent <fieldset> elements.  (Though if you set all of these <fieldset> elements to display:none, then the clicks finally get through.)

EXPECTED RESULTS:
Clicks should have an effect -- focusing the textfield, selecting text, etc.


Firefox release (50), Chrome 55 and Edge 14 give EXPECTED RESULTS.
Firefox 53 Nightly gives ACTUAL RESULTS. So, this is a regression. I suspect bug 504622, based on preliminary mozregression results.
Has STR: --- → yes
Yup, mozregression gives this range:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=f4a2a329a7080cab9b7ebd1eb4b3295a1232b775&tochange=b55a8d9517c8a4cace18cd153e84ed0a0f0c5653
...which (based on the <fieldset> being involved) points the blame at bug 504622.
Has Regression Range: --- → yes
(In reply to Daniel Holbert [:dholbert] from comment #0)
> Clicks have no effect. "Inspect" shows that they're blocked by several large
> transparent <fieldset> elements.  (Though if you set all of these <fieldset>
> elements to display:none, then the clicks finally get through.)


Actually, the <fieldset>s aren't so big -- but their *overflow area* is absurdly huge (running off the top of the page).

You can see this if you select the topmost one (via Inspect Element) and then add both "border" and "outline" to it, and compare them.
The overflow area looks just as big for me in Firefox 50.

I expect the problem is nsDisplayFieldSetBorderBackground::GetBounds.  It includes the whole overflow area, but for hit-testing this is certainly going to be wrong.  Chances are, we should just do the complicated thing there instead.  :(
Assignee: nobody → bzbarsky
Status: NEW → ASSIGNED
This is also breaking politico.com
https://webcompat.com/issues/4092
Breaking http://www.lemonde.fr/
1. Go to http://www.lemonde.fr/
2. Scroll down to "Annonces Auto", switch to "Annonces Immo"
3. Try to click on the thumbnails, the click is blocked.

Visible with putting outline and border. 

So basically any major Web site which has a fieldset is currently possibly broken.
Whiteboard: [webcompat]
Attached patch Now with a test (obsolete) — Splinter Review
Attachment #8822541 - Flags: review?(matt.woodrow)
Attachment #8822541 - Flags: review?(dbaron)
Attachment #8822382 - Attachment is obsolete: true
Attachment #8822382 - Flags: review?(matt.woodrow)
Attachment #8822382 - Flags: review?(dbaron)
Instead, maybe this display item should override HitTest the same way that nsDisplayBackgroundColor::HitTest and nsDisplayBackgroundImage::HitTest do, instead of just unconditionally appending in HitTest?  That seems more consistent with the way other things work.
Flags: needinfo?(bzbarsky)
(This is different in two ways:  on other elements, border-image overhang doesn't hit-test, and also areas clipped by rounded corners don't hit-test.)
Hmm.  Yes, that might make more sense.

I just checked, and rounded corners hit-test in Fx50 for fieldsets, so that's a preexisting bug.

I tried doing the HitTest thing, and it does fix this bug, but clicking outside a rounded border still hits the fieldset.  I'm not sure why so far, because we _are_ now taking the relevant early return in HitTest.  Looking into it.
Actually, it's not clear to me that this item needs a HitTest method at all.  https://hg.mozilla.org/mozilla-central/rev/5453b1ce4e85e98d358c12c8dc168a9f484b7491 changed the display item so it's only responsible for painting border, and fieldsets have normal background items.  (The item should also be renamed to nsDisplayFieldSetBorder... and really should have been there, in bug 1227327.)
OK, so the reason clicking outside the rounded border still hits the fieldset is that it hits the display items for the anonymous frame.

Comment 13 makes sense to me, I think.  Will post an updated patch in a minute.
Flags: needinfo?(bzbarsky)
Also, fix the fieldset's inner frame to not leak out of it when it has rounded
borders and mess up hit-testing in the corner areas.
Attachment #8822563 - Flags: review?(dbaron)
Attachment #8822541 - Attachment is obsolete: true
Attachment #8822541 - Flags: review?(matt.woodrow)
Comment on attachment 8822564 [details] [diff] [review]
part 2.  Rename nsDisplayFieldSetBorderBackground to nsDisplayFieldSetBorder, since that's what it does

The commit message should reference bug 1227327 and perhaps changeset 5453b1ce4e85e98d358c12c8dc168a9f484b7491, since that's what made it do so.
Attachment #8822564 - Flags: review?(dbaron) → review+
But maybe put the border-radius change in a separate changeset?  (A test would be nice, too, but probably not necessary...)
Attachment #8822563 - Attachment is obsolete: true
Attachment #8822564 - Attachment is obsolete: true
Pushed by bzbarsky@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/6d65a2f7bf2d
part 1.  The fieldset's border drawing display item shouldn't participate in hit-testing.  That's handled by its background item already. r=dbaron
https://hg.mozilla.org/integration/mozilla-inbound/rev/9b51d74e8f3f
part 2.  Inherit a fieldset's border-radius down into its content wrapper box, so it doesn't leak out and mess up hit-testing in the corner areas when it has rounded borders.  r=dbaron
https://hg.mozilla.org/integration/mozilla-inbound/rev/619aabf58ead
part 3.  Rename nsDisplayFieldSetBorderBackground to nsDisplayFieldSetBorder, since that's what it does ever since bug 1227327 was fixed in <https://hg.mozilla.org/mozilla-central/rev/5453b1ce4e85e98d358c12c8dc168a9f484b7491>. r=dbaron
https://hg.mozilla.org/mozilla-central/rev/6d65a2f7bf2d
https://hg.mozilla.org/mozilla-central/rev/9b51d74e8f3f
https://hg.mozilla.org/mozilla-central/rev/619aabf58ead
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
politico.com fixed
surveymonkey.com fixed
www.lemonde.fr fixed

Thanks a lot. Everyone (and specifically Daniel, Boris, David). For the very quick fix. 
Happy new 2017 webcompat year.
It looks like that this patch also fixed the non-clickable links in the sidebar for a German banking site (dkb.de), which has been reported as a problem to me end of December.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: