Commit Graph
778 Commits
Author SHA1 Message Date
Adam Vandolder ef24860971 Bug 1653625 - Make the submission from default action of a submit button also deferred. r=edgar
The submission from requestSubmit() call is non-deferred due to
mDeferSubmission
being cleared in HTMLFormElement::PostHandleEvent when handling a submit
event. The
mDeferSubmission clearing is also to make the submission from the default
action
of a submit button non-deferred.

This patch makes the submission from default action of a submit button
deferred
which could fix this bug, and also simplify the logic a bit.

Since gecko would also trigger submission for untrusted submit event,
see
bug 1370630, we need to handle that case specially.

Differential Revision: https://phabricator.services.mozilla.com/D170941
2023-05-12 23:11:28 +00:00
Emilio Cobos Álvarez c1c1e7460b Bug 1829225 - Make BeforeSetAttr take the parsed nsAttrValue. r=smaug
ParseAttribute ideally would be const (see bug 1829138), but the SVG and
SMIL code is rather messy. Still, now that BeforeSetAttr can't really
fail, swapping the order of ParseAttribute and BeforeSetAttr shouldn't
really change behavior.

Sorry for the extra `virtual` keyword removal and such. I had to do this
one by hand unlike the dependent bugs, and I went a bit drive-by, lmk if
you want me to split those changes.

Differential Revision: https://phabricator.services.mozilla.com/D176086
2023-04-21 09:25:17 +00:00
Emilio Cobos Álvarez ded1458b5b Bug 1829189 - Make OnAttrSetButNotChanged and AfterSetAttr infallible. r=smaug
Same rg + sed shenanigans as the first patch.

There were two that could fail, both due to OOM:

 * HTMLInputElement::AfterSetAttr: If we fail (only in the type=range
   case) we end up with an old value without it being clamped by
   min/max/step.

 * HTMLBodyElement::AfterSetAttr: If we fail we won't peek up the
   DocShell's frame margins and styling could be incorrect.

That seems better than having to deal with broken states after we've
already set the attribute.

Depends on D176069

Differential Revision: https://phabricator.services.mozilla.com/D176070
2023-04-21 08:56:27 +00:00
Emilio Cobos Álvarez c881eb2941 Bug 1829189 - Make BeforeSetAttr infallible. r=smaug
rg BeforeSetAttr -l | xargs sed -i 's/nsresult BeforeSetAttr/void BeforeSetAttr/g'
  rg ::BeforeSetAttr -l | xargs sed -i 's/nsresult \(.*\)::BeforeSetAttr/void \1::BeforeSetAttr/g'

Plus trivial fixes, plus clang-format.

The only meaningful changes are in nsXULElement::BeforeSetAttr. Two
things could fail:

chromemargin: I removed it because we don't use the parsed attribute any
other place than here:

  https://searchfox.org/mozilla-central/rev/31f5847a4494b3646edabbdd7ea39cb88509afe2/dom/xul/ChromeObserver.cpp#136

And that deals just fine with it not being parsed.

usercontextid: We have a debug assertion that we don't dynamically change it.
I kept it but I don't think it's worth failing to set the attribute on release for that

Differential Revision: https://phabricator.services.mozilla.com/D176069
2023-04-21 08:56:27 +00:00
Butkovits Atila 2bb3961b6f Backed out 2 changesets (bug 1741469) for causing failures at test_bug1261674-1.html. CLOSED TREE
Backed out changeset b007c139e65c (bug 1741469)
Backed out changeset a75f2a426fa3 (bug 1741469)
2023-04-20 19:38:30 +03:00
Daniel Holbert 67c3942379 Bug 1741469 part 2: Add an off-by-default pref to control whether input type="number" fields are modified when mousewheel-scrolled. r=smaug
The C++ code change here is simply replacing an ifdef with a pref-check (and
associated reindentation for being placed in an "if"-block).

The pref is off-by-default for now, since no other browser seems to modify
these fields through mousewheel scrolling, and users seem to be surprised when
they encounter the behavior in Firefox.  See discussion on the bugzilla page.

Note: now that this behavior is controlled by a pref, we don't need to have
platform-specific #ifdefs and "skip-if" test exemptions. If we decide to bring
this behavior back on certain platforms, we can do so by simply changing the
default value of the pref on those platforms.

Differential Revision: https://phabricator.services.mozilla.com/D175719
2023-04-20 14:23:52 +00:00
Alexander Surkov fc0dbbd93f Bug 1824374 - implement popover activation behavior, r=emilio
See https://html.spec.whatwg.org/#the-input-element:popover-target-attribute-activation-behavior

Differential Revision: https://phabricator.services.mozilla.com/D175485
2023-04-18 19:50:52 +00:00
Butkovits Atila 45f9b533bd Backed out changeset 241b4b54e654 (bug 1824374) for causing failures at popover-invoking-attribute.html. 2023-04-17 23:44:22 +03:00
Alexander Surkov affc606a66 Bug 1824374 - implement popover activation behavior, r=emilio
See https://html.spec.whatwg.org/#the-input-element:popover-target-attribute-activation-behavior

Differential Revision: https://phabricator.services.mozilla.com/D175485
2023-04-17 18:10:13 +00:00
Cosmin Sabou 9f788e683a Backed out changeset d030d5dc991d (bug 1824374) for causing popover related wpt failures. 2023-04-15 20:05:46 +03:00
Alexander Surkov e1328ec198 Bug 1824374 - implement popover activation behavior, r=emilio
See https://html.spec.whatwg.org/#the-input-element:popover-target-attribute-activation-behavior

Differential Revision: https://phabricator.services.mozilla.com/D175485
2023-04-15 13:55:51 +00:00
Masatoshi Kimura b4394efbb8 Bug 1827771 - Clear the revealed state when input type is changed from password. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D175516
2023-04-15 02:30:35 +00:00
Alexander Surkov 50bc93b884 Bug 1823757 - use parsed atoms for popovertarget attribute, r=emilio
Use parsed atoms to store popovertarget attributes as more effective mechanism to search for ID match in attr associated elements implementation. Followup from D173337.

Differential Revision: https://phabricator.services.mozilla.com/D174786
2023-04-11 18:35:51 +00:00
Olli Pettay b1764a8410 Bug 1819769 - don't dispatch a11y related events when there are no listeners, r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D175016
2023-04-11 09:24:21 +00:00
Natalia Csoregi 64f264b62e Backed out changeset 96da9dcee2b0 (bug 1823757) for causing failures on popover-invoking-attribute.html. CLOSED TREE 2023-04-11 09:43:08 +03:00
Alexander Surkov be39f08c40 Bug 1823757 - use parsed atoms for popovertarget attribute, r=emilio
Use parsed atoms to store popovertarget attributes as more effective mechanism to search for ID match in attr associated elements implementation. Followup from D173337.

Differential Revision: https://phabricator.services.mozilla.com/D174786
2023-04-11 00:53:28 +00:00
Tom Schuster 2b97e58ebf Bug 1824323 - Open picker from datetimebox to get current date/time value. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D173959
2023-03-29 19:18:41 +00:00
Emilio Cobos Álvarez 18811e46d5 Bug 1750072 - Allow to prevent password revealing/unrevealing. r=mtigley
The idea is that chrome code would be able to call preventDefault(),
then run primary password authentication when needed, then setRevealPassword
again.

Differential Revision: https://phabricator.services.mozilla.com/D173491
2023-03-27 23:30:33 +00:00
Andi-Bogdan Postelnicu fccbbc6b44 Bug 1660405 - Move away from mozilla::IsFinite in favor of std::isfinite. r=sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173036
2023-03-22 11:35:33 +00:00
Andi-Bogdan Postelnicu 011e3fc2d9 Bug 1660405 - Move away from mozilla::IsNaN in favor of std::isnan. r=nbp,media-playback-reviewers,sergesanspaille,padenot
Differential Revision: https://phabricator.services.mozilla.com/D173035
2023-03-22 11:35:33 +00:00
Stanca Serban 98c675ed3f Backed out 7 changesets (bug 1660405) for causing bustages on Linux x64 opt. CLOSED TREE
Backed out changeset ad1a5f59214f (bug 1660405)
Backed out changeset a39e95f0aafe (bug 1660405)
Backed out changeset 48629ee0d70d (bug 1660405)
Backed out changeset 8419b99aab60 (bug 1660405)
Backed out changeset 535cc12c8bed (bug 1660405)
Backed out changeset e27052da4927 (bug 1660405)
Backed out changeset 11b0f9cf8091 (bug 1660405)
2023-03-22 13:05:53 +02:00
Andi-Bogdan Postelnicu 2e64d79ba8 Bug 1660405 - Move away from mozilla::IsFinite in favor of std::isfinite. r=sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173036
2023-03-22 09:27:57 +00:00
Andi-Bogdan Postelnicu 5e0156c1e4 Bug 1660405 - Move away from mozilla::IsNaN in favor of std::isnan. r=nbp,media-playback-reviewers,sergesanspaille,padenot
Differential Revision: https://phabricator.services.mozilla.com/D173035
2023-03-22 09:27:56 +00:00
Adam Vandolder 587ddbb864 Bug 1821569 - Align number input sanitization with the spec. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D172198
2023-03-13 18:37:30 +00:00
Ray Kraesig 3641a399e3 Bug 1816740 [5/6] - convert nsIFilePicker::capture* to a proper enum r=ipc-reviewers,karlt,mstange,handyman,nika
Convert the various capture* constants in nsIFilePicker into a proper
enum, and perform validation when passing it across IPC.

Additionally, unlike the previous two enums, reduce the size of
CaptureTarget to 8 bits. This is a workaround for its use with
nsAttrValue, which at present very specifically requires that parseable
enums' values fit within an `int16_t` -- and a `uint16_t` does not.

Differential Revision: https://phabricator.services.mozilla.com/D169854
2023-02-22 21:05:24 +00:00
Ray Kraesig eb8a5041cb Bug 1816740 [4/6] - convert nsIFilePicker::mode* into a proper enum r=ipc-reviewers,karlt,mstange,handyman,nika
Convert the various mode* constants in nsIFilePicker into a proper
enum, and perform validation when passing it across IPC.

Differential Revision: https://phabricator.services.mozilla.com/D169853
2023-02-22 21:05:24 +00:00
Ray Kraesig c192386b3f Bug 1816740 [3/6] - convert nsIFilePicker::result* into a proper enum r=ipc-reviewers,karlt,mstange,handyman,nika
Convert the various result* constants in nsIFilePicker into a proper
enum, and perform validation when passing it across IPC.

Differential Revision: https://phabricator.services.mozilla.com/D169852
2023-02-22 21:05:23 +00:00
Adam Vandolder 817af689cd Bug 1809689 - Activate first checkbox with activation behaviour. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D166569
2023-01-16 15:32:17 +00:00
Zach Hoffman 9f047ec938 Bug 1805105 - Drive-by: Remove an unused include leftover from D163780 r=emilio
Depends on D164424

Differential Revision: https://phabricator.services.mozilla.com/D164944
2022-12-19 13:06:50 +00:00
Tom Schuster cdeab032f9 Bug 960984 - Implement the list attribute for <input type=color>. r=emilio,geckoview-reviewers,m_kato
UI support on Windows and Linux. macOS and Android are not supported.

Differential Revision: https://phabricator.services.mozilla.com/D163796
2022-12-14 18:17:59 +00:00
Adam Vandolder 98d413b5a9 Bug 1804270 - Sanitize multiple values in an email input correctly. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D163965
2022-12-12 16:07:56 +00:00
Zach Hoffman 4a78925c90 Bug 1803118 - Snap mouse to <input type=range> tick marks r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D163780
2022-12-08 12:27:22 +00:00
Stanca Serban ea282bb530 Backed out changeset 4970c9b75aad (bug 1803118) for causing wpt failures on range-snap-to-tick-marks. CLOSED TREE 2022-12-08 10:22:52 +02:00
Zach Hoffman 95e70080c4 Bug 1803118 - Snap mouse to <input type=range> tick marks r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D163780
2022-12-08 04:01:28 +00:00
Zach Hoffman a16737a3eb Bug 1803303 - Make HTMLInputElement::ValueIsStepMismatch() parameter constant r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D163760
2022-12-03 08:57:28 +00:00
Zach Hoffman a316eff7b0 Bug 1803303 - Do not display input range tick marks that are step mismatches r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D163521
2022-12-02 16:48:40 +00:00
Zach Hoffman 67f7af1ef8 Bug 841942 - Display tick marks for <input type=range> when @list/<datalist> is used r=emilio,credential-management-reviewers,sgalich
Differential Revision: https://phabricator.services.mozilla.com/D162882
2022-11-28 22:06:33 +00:00
Jonathan Kew d23245129e Bug 1801380 - Don't call RecomputeDirectionality() if the element has dir=auto. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D162462
2022-11-19 21:06:04 +00:00
Jonathan Kew 1ab520226e Bug 1665655 - Implement the HTML spec special-case of directionality for <input type=tel>. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D162133
2022-11-16 15:42:17 +00:00
Norisz Fay 53a2157449 Backed out changeset 37b80bf4bf5a (bug 1665655) for causing multiple StyleSheet related failures CLOSED TREE 2022-11-16 16:57:27 +02:00
Jonathan Kew 3633364c03 Bug 1665655 - Implement the HTML spec special-case of directionality for <input type=tel>. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D162133
2022-11-16 14:12:16 +00:00
Masayuki Nakano 62fe803013 Bug 1795620 - Make it work better to activate/inactivate checkboxes and radio buttons like the other browsers r=smaug
First, the test compares `document.querySelector(":active")` and a checkbox or
a radio button.  However, Gecko activates ancestor elements too.  Therefore,
Gecko returns `<html>` element or `null` for the selector.  However, this is
an issue of CSS pseudo class compatibility which is **not** scope of the test.
Therefore, this patch makes it compare `document.querySelector("input:active")`
and a checkbox or a radio button instead.

Next, Gecko does not activate checkboxes and radio buttons when user presses
the space key, but the other browsers do it.  Therefore, this patch makes
`HTMLInputElement::PostHandleEvent` do it and
`EventStateManager::PostHandleEvent` clear it at `keyup` of the space key.

Next, Gecko does not inactive active elements when it gets lost focus.
Therefore, this patch makes `nsFocusManager::NotifyFocusStateChange` do it
like the other browsers.

Finally, with manual testing of draft patches, I found some issues of
inactivating them when they are activated by `<label>`s.  Therefore, I add new
tests in a separate file.  Note that Chrome fails only in the cases testing
`<input type="radio">` with `<label>`.

Differential Revision: https://phabricator.services.mozilla.com/D160494
2022-11-11 13:55:14 +00:00
Adam Vandolder 357062f28e Bug 1795887 - Fix IsValueMissing update for certain input types. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D159592
2022-10-22 16:34:48 +00:00
Emilio Cobos Álvarez 3be7ef3b4c Bug 1788698 - Force focus rings when focused input switches to text control. r=smaug
Seems somewhat reasonable to do this, if we wanted to, since
nsFocusManager also makes these always match :focus-visible.

If you think it's worth doing I can add a test quite trivially.

Differential Revision: https://phabricator.services.mozilla.com/D158186
2022-10-13 14:57:35 +00:00
Jan-Niklas Jaeschke 88991698bc Bug 1679474 - Removed DispatchSelectEvent from HTMLInputElement::PostHandleEvent. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D154776
2022-08-24 09:23:39 +00:00
Adam Vandolder 3eba65a5b1 Bug 1749677 - Do not trigger change, input, or focus events on untrusted keypress events for input elements. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D154854
2022-08-18 13:15:12 +00:00
Emilio Cobos Álvarez b7aeba4a07 Bug 1779348 - Clear FileList after files changed. r=smaug
This matches Chrome and Safari. Also add a test for FileList being
shareable between DataTransfer and input, which seems to be in the
intention of the spec and matches our pre-existing behavior, the
behavior of input-to-input FileList handling, and Safari, but not
Chrome.

Differential Revision: https://phabricator.services.mozilla.com/D152367
2022-07-21 11:06:18 +00:00
Emilio Cobos Álvarez 35e57869d6 Bug 1771806 - Record last interactive value in TextControlState. r=masayuki
One unfortunate-ish thing of storing it in TextControlState is that we
can't preserve it across type changes, but that seems ok for now
according to my conversations with Serg.

In the future we might want to move the value to HTMLInputElement itself
or something, we'll see, but this should help folks fix some
long-standing quality issues in the password manager / autofill
implementation.

Differential Revision: https://phabricator.services.mozilla.com/D150148
2022-06-28 08:49:12 +00:00
Kagami Sascha Rosylight 263a1b33af Bug 1774035 - Stop opening pickers from disabled input elements r=smaug,emilio
Differential Revision: https://phabricator.services.mozilla.com/D149157
2022-06-14 18:31:09 +00:00
Cristian Tuns c74c6ccaa9 Backed out changeset f7603664ef19 (bug 1774035) for causing wpt failures on spelling-markers-009.html CLOSED TREE 2022-06-14 13:59:02 -04:00