Commit Graph

245 Commits

Author SHA1 Message Date
Jessica Jong
d14eef00ce Bug 1374967 - Part 2: Consider step when deciding whether to show second/millisecond field. r=smaug
We should consider step and step base when deciding whether to show second and
millisecond field, since step and step base can affect the valid time intervals,
and the valid intervals may have second/millisecond part.

MozReview-Commit-ID: H4mJvLTvBOM
2017-06-29 11:47:00 -04:00
Masayuki Nakano
53a0be1b54 Bug 1374207 - part4: Element classes should use TextEditor class instead of nIEditor r=smaug
Unfortunately, nsGenericHTMLElement::GetAssociatedEditor() cannot use concrete classes because it may return nsIEditor which is set via nsIDocShell.editor.  The editor set to nsIDocShell may be implemented by JS since nsIEditor isn't marked as builtinclass.

MozReview-Commit-ID: 6GY9LOYp4hM
2017-06-22 15:21:31 +09:00
Boris Zbarsky
f8e0f04421 Bug 1373798 part 1. Stop calling SetHasDirAuto/ClearHasDirAuto in input element code. r=mystor
The old setup unset the HasDirAuto flag when changing the "dir" attr away from
the value "auto", and reset it when setting it to "auto", before calling
SetDirectionalityFromValue.  But SetDirectionalityFromValue doesn't depend on
the HasDirAuto flag, and that flag is set correctly for us by nsGenericElement,
so we don't have to manage it ourselves at all.

The callers outside BeforeSetAttr/AfterSetAttr just preserved the flag value, so
there's no behavior change at all for them.

MozReview-Commit-ID: AC8uV3cOtH2
2017-06-19 23:24:59 -04:00
Jessica Jong
508c171997 Bug 1372369 - Part 2: Set validity state to 'bad input' when the entered date value is invalid. r=smaug
If all fields in date/time input box are available but the input element's
value is empty, implies that it has been sanitized. In this case, we'll set the
'bad input' validity state. If any of the fields is cleared, we'll remove the
'bad input' validity state, as incomplete field does not imply 'bad input'.

MozReview-Commit-ID: 4EBpH5CWqXM
2017-06-19 01:13:00 -04:00
Makoto Kato
6850a4f808 Bug 1368888 - Don't get previous value twice in input.value setter. r=smaug
We get previous input.value twice in HTMLInputElement::SetValue and nsTextEditorState::SetValue when setting input.value.  Since nsTextEditorState::GetValue uses DocumentEncoder, it is expensive.  So we should use old value as parameter of nsTextEditorState::SetValue if possible.

MozReview-Commit-ID: A1UPfETTVCn
2017-06-14 18:21:01 +09:00
John Dai
95546cdb0c Bug 556743 - Implement the labels attribute. r=smaug 2017-06-15 20:04:00 -04:00
Jessica Jong
fe51256000 Bug 1370858 - Fire change/input events after selecting a date/time from picker. r=smaug
Per spec [1], date/time inputs fall into this category:

"For input elements without a defined input activation behavior, but to which
 these events apply, and for which the user interface involves an explicit
 commit action but no intermediate manipulation, then any time the user commits
 a change to the element's value, the user agent must queue a task to first fire
 an event named input at the input element, with the bubbles attribute
 initialized to true, and then fire an event named change at the input element,
 with the bubbles attribute initialized to true."

So, we fire input/change events when:
- User selects a date/time from the picker
- User changes the value using up/down keys in a already complete date/time
  value
- User changes the value using the number keyboard in a already complete
  date/time value
- User clears the value (using reset button or using backspace)


MozReview-Commit-ID: E7Jc5qMKZj4
2017-06-12 02:21:00 +02:00
Kirk Steuber
e2ea33731f Bug 1363481 - Add the old attribute value as a parameter to Element::AfterSetAttr r=bz
In order to facilitate the movement of code with side-effects called by Element::SetAttr to Element::BeforeSetAttr and Element::AfterSetAttr, Element::AfterSetAttr should have access to the old value of the attribute. This includes information about whether there was previously a value set or not.

Accomplishing this involved passing an additional argument through functions that find and change the old attribute value in order to ensure that we can differentiate between an empty old value and an absent old value (attribute was not set).

Note that while I tried to ensure that accurate values (and their absence) are reported to Element::AfterSetAttr, I largely ignored SVG. While the old value reported for SVG values should be however accurate the value already being reported to SetAttrAndNotify was, SVG elements do not currently report unset values properly because they will never pass a null pointer to SetAttrAndNotify.

MozReview-Commit-ID: K1mha8CNFZP
2017-05-18 14:09:01 -07:00
Jessica Jong
13b5e022fc Bug 1363258 - Part 2: Factor ConvertNumberToString out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 8ZHrdvpjr0m
2017-05-10 17:03:46 +08:00
Jessica Jong
e5b97d1691 Bug 1363258 - Part 1: Factor ConvertStringToNumber out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 8DratVTlToP
2017-05-10 17:03:33 +08:00
Wes Kocher
d91c335fa3 Merge inbound to central, a=merge
MozReview-Commit-ID: DfRZi0gKjit
2017-05-10 16:48:03 -07:00
johndai1984
51e081877c Bug 1340477 - Support feature detection for autocomplete attribute. r=smaug 2017-05-09 22:57:00 -04:00
Masayuki Nakano
ae7337ffda Bug 1363278 Get rid of nsIPhonetic and HTMLInputElement.phonetic r=smaug
Nobody uses them anymore.  Therefore, we can remove them from the tree.

MozReview-Commit-ID: KTqCeI2eeFW
2017-05-09 16:27:08 +09:00
Jessica Jong
8a807e1a27 Bug 1345767 - Part 5: Factor HasPatternMismatch() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 2JWhbfEJhTm
2017-05-04 15:10:57 +08:00
Jessica Jong
f088bfb913 Bug 1345767 - Part 4: Factor HasTypeMismatch() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 7kW0Ojnp2OE
2017-05-04 15:08:24 +08:00
Jessica Jong
01efebe7f7 Bug 1345767 - Part 3: Factor IsValueMissing() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: AE6SSA43Vx5
2017-05-04 14:47:08 +08:00
Jessica Jong
91f88b282b Bug 1345767 - Part 2: Factor IsTooLong/Short() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 5svYqBEFgzk
2017-05-04 11:54:29 +08:00
Jessica Jong
db76d4e652 Bug 1345767 - Part 1: Create classes for each of the input types. r=smaug
MozReview-Commit-ID: 4O6YHHGsLBP
2017-05-04 11:43:46 +08:00
Jessica Jong
0a69701a7e Bug 1358448 - Add radio back to a radio group after moving out of a form. r=smaug
The container of a radio group is the form, if it belongs to a form, or the
document object otherwise.
When moving a radio out of a form, we should add it back to a radio group.
Similary, before moving the radio to a form, we should remove it from the
original radio group.

MozReview-Commit-ID: 22WsEhz2SXH
2017-05-01 23:10:00 +02:00
Kirk Steuber
9386a2f3e1 Bug 1359556 - Optimize cloneNode by preinitializing attribute and child arrays r=bz
Currently, attribute and child arrays (implemented in dom/base/nsAttrAndChildArray.h) start out empty. When cloning, the array ends up being resized multiple times in order to add the attributes and children that are being cloned from the original node. This would be quicker if the array was initialized to the correct size in the first place so that resizes are not necessary.

However, preallocating space for children is only necessary when performing a deep clone. Therefore, an additional parameter is being added to the Clone, CopyInnerTo, and CloneDocHelper methods to indicate whether preallocation of children should happen. Attributes are copied either way, so that part of the array is preallocated in both cases.

MozReview-Commit-ID: 3iVezeAKXnI
2017-04-20 12:57:48 -07:00
Jessica Jong
b1f12eed16 Bug 1357981 - Allocate input type=file related member variables only when needed. f=smaug, r=baku
In order to reduce the size of HTMLInputElement for performance gain, we're
going to allocate input type=file related member variables only when type=file.
2017-04-26 02:36:00 -04:00
Ray Lin
cdc9d749a6 Bug 1340483 - Part 4. Update input visibility accordingly. r=heycam
MozReview-Commit-ID: 7eBhj7w4qhP
2017-03-30 17:38:59 +08:00
Ray Lin
d37849aaa3 Bug 1340483 - Part 3. Enable preview function only when input is marked as autofill field. r=heycam
MozReview-Commit-ID: FFqYJ3icRd7
2017-03-22 16:55:56 +08:00
Ray Lin
f4d11417f9 Bug 1340483 - Part 2. Expose chrome-only previewValue attribute. r=baku,heycam
MozReview-Commit-ID: BCu0vXVm6wj
2017-03-21 00:08:01 +08:00
Ray Lin
78ff382026 Bug 1340483 - Part 1. Create empty anonymous node for autofill preview. r=heycam
MozReview-Commit-ID: GTVgIPoogp9
2017-03-20 11:53:40 +08:00
Jessica Jong
100fa585bf Bug 1346085 - Part 2: Set input element's focus state when inner fields are focused/blurred. r=smaug
Since the inner fields of date/time input are now <span> instead of <input>
text, we are adding an API for binding code to set the focus state of the
bound input element when inner fields are focused/blurred.

MozReview-Commit-ID: 9wvu57xT6HZ
2017-04-05 15:02:30 +08:00
Olli Pettay
c6c840deae Bug 1352687, try to recycle HTMLInputElement's nsTextEditorState, r=baku 2017-04-03 20:40:48 +03:00
Olli Pettay
45822311b7 Bug 1351860 - Move mType from HTMLInputElement to nsIFormControl and make GetType non-virtual inlined, r=jessica 2017-03-31 22:49:00 -04:00
Olli Pettay
694b05ce02 Backout Bug 1351860, r=backout 2017-03-31 16:55:32 -04:00
Olli Pettay
fa83f6684e Bug 1351860 - Move mType from HTMLInputElement to nsIFormControl and make GetType non-virtual inlined, r=jessica 2017-03-31 13:13:36 -04:00
Jessica Jong
ff9c1e0fe8 Bug 1344642 - Part 2: Add a new pref for input type=week, month and datetime-local. r=smaug 2017-03-17 11:01:59 +08:00
Jessica Jong
a1299fabfa Bug 1344642 - Part 1: Cleanup dom.forms.datepicker related code. r=smaug
This patch basically reverts Bug 825294.
2017-03-17 11:01:57 +08:00
Boris Zbarsky
26af9e4884 Bug 1347639. Add nsImageLoadingContent::AsContent to make getting the relevant nsIContent* faster. r=qdot
MozReview-Commit-ID: 9sE3pbHwYbV
2017-03-16 17:43:34 -04:00
Boris Zbarsky
616bb843fc Bug 1347640 part 2. Move a few more things from AfterSetAttr to HandleTypeChange. r=smaug
We also stop doing some unnecessary work (e.g. canceling image requests if our old type wasn't image).

MozReview-Commit-ID: GLPl1McLL9N
2017-03-16 14:50:42 -04:00
Boris Zbarsky
d40e452ea9 Bug 656197 part 1. Remove the generic attr preparsing mechanism from BeforeSetAttr and just preparse class attributes directly in the one place that needs to do it. r=smaug
This removes the requirement that BeforeSetAttr comes before AttributeWillChange
(which needs the preparsed new value).

MozReview-Commit-ID: 87C6Mjc7ARh
2017-03-16 14:50:41 -04:00
Boris Zbarsky
08408b8e31 Bug 1345237. Propagate uint32_t deeper into the editor state and text control frame code. r=mystor
MozReview-Commit-ID: KeUo8My6eBJ
2017-03-09 14:44:45 -05:00
Boris Zbarsky
4d9c1783a8 Bug 1343037 part 18. Implement nsTextEditorState::SetRangeText. r=ehsan
MozReview-Commit-ID: FEo9yv5iu6U
2017-03-09 14:44:06 -05:00
Boris Zbarsky
4a34a6fc7b Bug 1343037 part 17. Remove the now-unused nsITextControlElement::GetSelectionRange. r=ehsan
This makes GetSelectionRange non-virtual on HTMLInputElement and HTMLTextareaElement.

MozReview-Commit-ID: HhmTHjw8AwW
2017-03-09 14:44:06 -05:00
Boris Zbarsky
34042de72d Bug 1343037 part 16. Implement a version of nsTextEditorState::SetSelectionRange that takes a string for the direction. r=ehsan
MozReview-Commit-ID: E8zYAWolg94
2017-03-09 14:44:06 -05:00
Boris Zbarsky
5751a40e69 Bug 1343037 part 13. Implement nsTextEditorState::SetSelectionEnd. r=ehsan
This introduces three behavior changes:

1)  Before this change, in cached mode, we did not enforce the "start <= end"
    invariant.
2)  Before this change, in cached mode, we did not fire "select" events on
    selectionEnd changes.
3)  Changes the IDL type of HTMLInputElement's selectionEnd attribute to
    "unsigned long" to match the spec and HTMLTextareaElement.

MozReview-Commit-ID: J3Gkhr8VnbS
2017-03-09 14:44:05 -05:00
Boris Zbarsky
f1bf8c9867 Bug 1343037 part 12. Implement nsTextEditorState::SetSelectionStart. r=ehsan
This introduces three behavior changes:

1)  Before this change, in cached mode, we did not enforce the "start <= end"
    invariant.
2)  Before this change, in cached mode, we did not fire "select" events on
    selectionStart changes.
3)  Changes the IDL type of HTMLInputElement's selectionStart attribute to
    "unsigned long" to match the spec and HTMLTextareaElement.

MozReview-Commit-ID: JM9XXMMPUHM
2017-03-09 14:44:05 -05:00
Boris Zbarsky
0ff1feefd2 Bug 1343037 part 6. Simplify the setup around the editor state's GetSelectionRange function. r=ehsan
Really, there are only two cases we need to worry about.  Either
IsSelectionCached(), and then our SelectionProperties has the data we want, or
not and then we have a non-null mSelCon which has the data we want.

Since we are now using cached selection state a lot more (instead of
initializing the editor whenever someone asks for selection state), we need to
actually update it more correctly when .value is set.

And since we now update the cached selection state for the case when .value has
been set (to point to the end of the text), we need to change
HTMLInputElement::HasCachedSelection to return false for that case.  Otherwise
we will always do eager editor init on value set.  We handle that by not doing
eager init if the cached selection is collapsed.

The web platform test changes test the "update on .value set" behavior.  They
fail without this patch, pass with it.

MozReview-Commit-ID: DDU8U4MGb23
2017-03-09 14:44:04 -05:00
Boris Zbarsky
b55933e687 Bug 1343037 part 2. Get rid of nsIDOMHTMLInputElement's selectionEnd accessors. r=ehsan,MattN
MozReview-Commit-ID: L2Ozu7Vvort
2017-03-09 14:44:03 -05:00
Boris Zbarsky
da687175e6 Bug 1343037 part 1. Get rid of nsIDOMHTMLInputElement's selectionStart accessors. r=ehsan,MattN
MozReview-Commit-ID: IyFv8NRuZIO
2017-03-09 14:44:03 -05:00
Boris Zbarsky
f7b36aa0e6 Bug 1342197 part 4. Move GetSelectionRange from nsTextControlFrame to the editor state. r=ehsan
At this point, all this method does is ensure editor initialization and then ask
the editor state for various information.  Let's cut out the middleman.

MozReview-Commit-ID: p491umScJO
2017-02-28 12:41:37 -05:00
Boris Zbarsky
9cfe389bfb Bug 1342197 part 1. Change nsITextControlElement::GetRootEditorNode to return Element*. r=ehsan
MozReview-Commit-ID: BmTw3rAzCuc
2017-02-28 12:41:37 -05:00
Jessica Jong
fe4383d390 Bug 1341376 - Use BoolVarCache to cache preferences in HTMLInputElement. r=smaug 2017-02-23 00:27:00 -05:00
Timothy Guan-tin Chien
fdd0f80f49 Bug 1338961 - A mozinputrangeignorepreventdefault hack for input[type=range], r=smaug, sr=smaug
This is a terrible hack, asking input[type=range] in our video control
xbl binding content continue to handle mouse/touch event, even if the
event is being defaultPrevented by the content.

MozReview-Commit-ID: G1huxbS7oeq
2017-02-17 17:05:27 +08:00
Jeff Walden
76e0d9bbc6 Bug 1287006 - Don't pass Nullable by value in various places, rather by const&. r=bz 2017-02-13 09:07:40 -08:00
Carsten "Tomcat" Book
e1b6f23c86 Merge mozilla-central to mozilla-inbound 2017-02-09 11:38:08 +01:00