Commit Graph

521 Commits

Author SHA1 Message Date
Masatoshi Kimura
5be5b7220f Bug 886907 - Remove old synchronous contentPrefService from the tree. r=adw
MozReview-Commit-ID: BZsB3FR3jHC
2017-08-11 23:29:55 +09:00
btian
3fbff1e54a Bug 1384030 - Enable setting <input type=file>.files. r=smaug 2017-08-08 17:49:48 +08:00
Eric Rahm
0c7237960f Bug 1386825 - Part 1: Remove MOZ_B2G from dom. r=bkelly
MozReview-Commit-ID: 1zzP2r01B7U
2017-08-08 14:41:05 -07:00
Nicholas Nethercote
723f585d9c Bug 1386600 - Change nsIStringBundle methods to return |AString| instead of |wstring|. r=emk,sr=dbaron.
This removes about 2/3 of the occurrences of nsXPIDLString in the tree. The
places where nsXPIDLStrings are null-checked are replaced with |rv| checks.

The patch also removes a couple of unused declarations from
nsIStringBundle.idl.

Note that nsStringBundle::GetStringFromNameHelper() was merged into
GetStringFromName(), because they both would have had the same signature.
2017-08-04 14:40:52 +10:00
Jessica Jong
03b695cbea Bug 1386969 - Change nsIRadioGroupContainer::Add/RemoveToRadioGroup() to take HTMLInputElement* as argument. r=bz
Currently, these two functions take nsIFormControl* as argument, but we only
pass HTMLInputElements to it, so we can change it to take HTMLInputElement* to
avoid overhead in casting.

MozReview-Commit-ID: CHG0F3xWCVF
2017-08-03 02:39:00 -04:00
Jessica Jong
f6c04bf2c6 Bug 1385478 - Part 2: Change Required/IsRequired() to look at NS_EVENT_STATE_REQUIRED instead. r=bz
In order to speed up Required/IsRequired(), instead of querying for the
@required attribute, we're now using the NS_EVENT_STATE_REQUIRED flag to know
whether an element's value is required.

For this to work correctly, we need to set NS_EVENT_STATE_REQUIRED earlier,
that is, in AfterSetAttr(), before any consumer of IsRequired(). We also need
to update or clear our required states when input type changes, since we may
have changed from a required input type to a non-required input type or
vice versa.

Note that NS_EVENT_STATE_REQUIRED/OPTIONAL is now part of the
EXTERNALLY_MANAGED_STATES.

MozReview-Commit-ID: Bjiby9GqJSB
2017-08-03 01:27:00 -04:00
Jessica Jong
2cc9e3beb6 Bug 1385478 - Part 1: Use IsRequired/Required() to get the current required state. r=bz
IsRequired() helper function returns the current 'required' state of the
element, that is, whether its required attribute is set or not. This will be
used only for input elements that @required applies.
2017-08-03 01:23:00 -04:00
Olli Pettay
626438c592 Bug 1386582, create element state objects only if needed, r=ehsan 2017-08-02 22:28:48 +03:00
Kestrel
cb30f12dc8 Bug 918780 - Add new PopupControlState for permitting file/color picker popup regardless of dom_allowed_events. r=smaug
MozReview-Commit-ID: 1GbjQ6IkMsv
2016-04-24 04:49:00 +01:00
Ehsan Akhgari
0503c1edbd Bug 1386222 - Ensure that we always respect the undo/redo transaction history when modifying the <xul:textbox>.value dynamically through script; r=bzbarsky 2017-08-01 13:59:45 -04:00
Nicholas Nethercote
a222153d9c Bug 1384835 (part 2, attempt 2) - Remove the Preferences::Get*String() variants that return nsAdoptingString. r=froydnj. 2017-07-31 14:23:50 +10:00
Sylvestre Ledru
576cac5ec7 Bug 1381253 - Remove redundant control flow declarations rs=ehsan
MozReview-Commit-ID: FFxP4aMCbOL
2017-07-15 19:03:04 +02:00
Jessica Jong
0856214886 Bug 1375599 - Change IsDisabled() to look at NS_EVENT_STATE_DISABLED instead of the "disabled" attribute. r=bz
In order to speed up IsDisabled(), instead of querying for the @disabled
attribute, we're now using the NS_EVENT_STATE_DISABLED flag to know whether an
element is disabled.
It is safe to use the NS_EVENT_STATE_DISABLED flag for the following reasons:
- For form elements, nsGenericHTMLFormElement::IsDisabled() is only called on
  form elements that can be disabled; form elements that can't be disabled
  overrides IsDisabled() to return false directly.
  And, before this patch, NS_EVENT_STATE_DISABLED flag is set by
  nsGenericHTMLFormElement::IntrinsicState() if and only if IsDisabled() in all
  cases when CanBeDisabled() is true, and when CanBeDisabled() is false then
  IsDisabled() is always false and the flag is not set.
- For non form elements, optgroup and option have the flag matching
  IsDisabled(). Note that option's IsDisabled() should also refer to optgroup's
  (if it exists) disabled state, which was not done before this patch.

For this to work correctly, we need to set NS_EVENT_STATE_DISABLED earlier,
that is, in AfterSetAttr(), before any consumer of IsDisabled().
We also need to update the flag whenever the element's parent (e.g. fieldset or
optgroup) disabled state changes and when moving into/out of a parent
container.

Note that NS_EVENT_STATE_DISABLED/ENABLED is now part of the
EXTERNALLY_MANAGED_STATES.

MozReview-Commit-ID: KSceikeqvvU
2017-07-20 02:15:00 -04:00
Ryan VanderMeulen
739295f415 Merge autoland to m-c. a=merge 2017-07-14 09:16:03 -04:00
Boris Zbarsky
7883a597ca Bug 1380415 part 2. Remove XPCOM constraint validation APIs. r=mccr8 2017-07-13 23:46:28 -04:00
Boris Zbarsky
c81a5d320c Bug 1380415 part 1. Remove unused bits of nsIDOMHTMLInputElement. r=mccr8 2017-07-13 23:46:13 -04:00
Boris Zbarsky
37fa28bf2b Bug 1380393 part 3. Remove nsIDOMHTMLElement.focus. r=mccr8 2017-07-13 23:45:50 -04:00
Henri Sivonen
cc83c1cd0f Bug 1266495 - Remove <isindex>. r=wchen
MozReview-Commit-ID: KM0sTMM1GaD
2017-07-05 11:42:04 +03:00
Nicholas Nethercote
8b5bdf0867 Bug 1380227 - Avoid many UTF16toUTF8 and UTF8toUTF16 conversions in nsStringBundle. r=emk.
Most of the names passed to nsIStringBundle::{Get,Format}StringFromUTF8Name
have one of the two following forms:

- a 16-bit C string literal, which is then converted to an 8-bit string in
  order for the lookup to occur;

- an 8-bit C string literal converted to a 16-bit string, which is then
  converted back to an 8-bit string in order for the lookup to occur.

This patch introduces and uses alternative methods that can take an 8-bit C
string literal, which requires changing some signatures in other methods and
functions. It replaces all C++ uses of the old methods.

The patch also changes the existing {Get,Format}StringFromName() methods so
they take an AUTF8String argument for the name instead of a wstring, because
that's nicer for JS code.

Even though there is a method for C++ code and a different one for JS code,
|binaryname| is used so that the existing method names can be used for the
common case in both languages.

The change reduces the number of NS_ConvertUTF8toUTF16 and
NS_ConvertUTF16toUTF8 conversions while running Speedometer v2 from ~270,000 to
~160,000. (Most of these conversions involved the string
"deprecatedReferrerDirective" in nsCSPParser.cpp.)
2017-07-12 15:13:37 +10:00
Boris Zbarsky
d345bbc4bc Bug 1386530. Fix handling of type changes that affect validity state to properly notify state changes. r=jessica
MozReview-Commit-ID: Khhzi1HyCpt
2017-09-22 15:47:16 -04:00
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