Commit Graph

451 Commits

Author SHA1 Message Date
Jessica Jong
996fe5fb43 Bug 1379108 - Factor GetValidationMessage() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: IFQXQTxoD9T
2017-07-10 19:10:00 -04:00
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
Ehsan Akhgari
339835e85d Bug 1375741 - Pass the correct argument to DoSetChecked() in HTMLInputElement::DoneCreatingElement() and AfterSetAttr() and delete the no-op DoSetCheckedChanged() call there to avoid doing excessive work; r=bzbarsky 2017-06-28 15:22:48 -04:00
Bill McCloskey
ce42826bdf Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07: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
Masayuki Nakano
e0a2ff6005 Bug 1374207 - part1: nsTextEditorState should use mozilla::TextEditor instead of editor interfaces r=smaug
Using concrete class rather than interface classes (nsI*Editor) will allow to reduce QI and some virtual calls.  Therefore, Editor classes should be used as concrete class as far as possible.

Unfortunately, if classes referring editor are initialized via scriptable interface, we cannot do this because nsI*Editor is still not marked as builtinclass.  Therefore, their editor may be implemented by JS.  E.g., inline nsIInlineSpellChecker.init() and nsIDocShell.editor.  Such remaining cases should be fixed after nsI*Editor classes are marked as builtinclass.

Note that this patch also creates nsIdentifierMapEntry.h which is separated from nsDocument.h because ShadowRoot.h needs the class but exposing nsDocument.h to the global and includes it causes bustage on Linux and Android.  Therefore, for fixing the include hell, this patch touches them and ContentChild.cpp.

MozReview-Commit-ID: i6fLWw6Qeo
2017-06-20 22:57:08 +09:00
Ehsan Akhgari
adfd9a2ef3 Bug 1373857 - Part 3: Optimize the PostHandleEvent() events that we dispatch for checkboxes and radiocontrols when they get toggled in order to make it use direct WidgetEvent dispatch; r=smaug 2017-06-20 13:59:52 -04: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
Jessica Jong
4c8f007035 Bug 1372369 - Part 1: Update input element's value when all fields are available and let DOM HTMLInputElement sanitize it. r=smaug
In this patch, we change it so that we always set the input element's value
once all fields are available and let DOM HTMLInputElement sanitize it. The
value after sanitization is not updated in the displayed input box, but may
display an error message (this will be done in Part 2) if needed.
Also, when any of the field's value is deleted, we will set input element's
value back to the empty string, so that a value is not accidentally submitted.

MozReview-Commit-ID: 9NAL8UlkoBK
2017-06-16 02:09: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
Makoto Kato
3c935193e9 Bug 1366218 - Use fast path to check empty value. r=smaug
HTMLInputElement::IsValueEmpty uses DocumentEncoder when input element has focus.  DocumentEncoder is slow, so we should use fast path (nsTextEditorState::HasNonEmptyValue) to check whether value is empty.

MozReview-Commit-ID: 1JxAeZ6z5A4
2017-05-23 12:27:23 +09:00
Olli Pettay
92e7031a10 Bug 1366250, don't flush layout when calling element.focus() on already focused element. Ensure layout is flushed after changing input.type, r=ehsan 2017-05-19 23:20:48 +03: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
Milan Sreckovic
381c32b166 Bug 1358297: Part 3. Create special case for stripping CR and LF on TSubstring, and use it in all the places that it is called. Use ASCIIMask to make it fast. r=froydnj
MozReview-Commit-ID: 5ugh3Ma0OtH
2017-05-10 13:12:36 -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
Tom Tung
dc2648e8f2 Bug 1348050 - Part 3: Mark channel as urgent-start for loading image. r=baku,mayhemer
This part is mainly to mark the channel as urgent-start if src related
attributes in HTMLImageElement and HTMLInputElement is set and the channel is
open due to user interaction. Unfortunately, we cannot just check the event
state just after creating channel since some loading image tasks will be queue
and execute in stable state. Thus, I store the event state in elements and
pass it to the place where create the channel.

MozReview-Commit-ID: GBdAkPfVzsn
2017-04-25 09:17:38 +08:00
Jessica Jong
29d0d46bf5 Bug 1345767 - Part 7: Factor HasBadInput() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: AUdI2dKMh4U
2017-05-04 15:43:21 +08:00
Jessica Jong
f7b53a9295 Bug 1345767 - Part 6: Factor IsRangeOverflow/Underflow() and HasStepMismatch() out of HTMLInputElement. r=smaug
MozReview-Commit-ID: 4jmjPK1Wxhz
2017-05-04 15:33:38 +08: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
Wes Kocher
900a24bea8 Backed out 4 changesets (bug 1358297) for hazard build failures a=backout
Backed out changeset 95211a496191 (bug 1358297)
Backed out changeset 3c1b426a5cce (bug 1358297)
Backed out changeset 9201d345a1d5 (bug 1358297)
Backed out changeset c926817dea60 (bug 1358297)

MozReview-Commit-ID: 874DF43K7Dp
2017-05-05 12:45:46 -07:00
Milan Sreckovic
09ead5e859 Bug 1358297: Part 3. Create special case for stripping CR and LF on TSubstring, and use it in all the places that it is called. Use ASCIIMask to make it fast. r=froydnj
MozReview-Commit-ID: 3p97cCGfy6i
2017-05-05 13:37:13 -04: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
Jessica Jong
08b444ff82 Bug 1361267 - Followup to fix wrong if statement in ClearGetFilesHelpers(). r=smaug
MozReview-Commit-ID: AIqOg0mSuAC
2017-05-02 01:09:00 +02:00
Boris Zbarsky
19916a9aeb Bug 1357206 part 3. Rename eSetValue_MoveCursorToEnd to eSetValue_MoveCursorToEndIfValueChanged, because those are the semantics we want for it. r=ehsan
No actual behavior change here.
2017-05-01 13:26:21 -04: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
Andrea Marchesini
b8849e9429 Bug 1357846 - Introducing nsIFilePicker.displaySpecialDirectory, r=smaug
nsIFilePicker.displaySpecialDirectory is a string that can be set to TmpD,
Desk, or any other special directory value. The real value of this directory
will be read in the parent process.
2017-04-26 18:20:19 +02: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
Masayuki Nakano
1922827ae6 Bug 1343642 - Ensure to grab nsFrameSelection before calling its methods unless calling only const methods. r=smaug
MozReview-Commit-ID: 9GKujCcrhly
2017-04-06 13:11:52 +09: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
KuoE0
876d7826d7 Bug 1348738 - (Part 4) Add a nsIDocument arg to nsRepeatService::Start to get the event target from it. r=dholbert
In the new architecture of Quantum DOM, all timer callback need a
specified event target. So, we add the new document arg to Start
function to get the event target from it. And update all callers.

MozReview-Commit-ID: a482mukqGc
2017-03-29 16:40:05 +08:00
KuoE0
42636fe2e3 Bug 1348738 - (Part 3) Add a string-label arg to nsRepeatService::Start and upgrade to InitWithNamedFuncCallback from InitWithFuncCallback. r=dholbert
In the new architecture of Quantum DOM, all runnables need a name label.
So, we add the new string-label arg to Start function, and update all
callers.

MozReview-Commit-ID: G9LXFjtFcQv
2017-03-29 16:32:52 +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