Commit graph

51 commits

Author SHA1 Message Date
WPT Sync Bot
3b6ddd885a Update web-platform-tests to revision 4052654d786236b493d2df3cb80b9d3d1d0a8354 2018-12-12 22:53:27 -05:00
WPT Sync Bot
ff06f1d031 Update web-platform-tests to revision 6856483bcc86322198f10e0c42385a7f9127eb66 2018-11-14 22:29:47 -05:00
WPT Sync Bot
775b784f79 Update web-platform-tests to revision 60220357131c65146444da1f54624d5b54d0975d 2018-07-18 22:07:44 +00:00
WPT Sync Bot
cd5bf022bd Update web-platform-tests to revision 68a256f49be380ca4add535ce8ece9de28820e6b 2018-02-04 21:05:56 -05:00
Jon Leighton
ce7bae8834 Implement setRangeText API
Spec: https://html.spec.whatwg.org/multipage/#dom-textarea/input-setrangetext

In order to do this, we need to define the SelectionMode enum in WebIDL:
https://html.spec.whatwg.org/multipage/#selectionmode

Since the enum is used by HTMLTextAreaElement and HTMLInputElement, it
doesn't seem to make sense to define it in the WebIDL file for one or
other of those.

However, we also can't create a stand-alone SelectionMode.webidl file,
because the current binding-generation code won't generate a "pub mod
SelectionMode;" line in mod.rs unless SelectionMode.webidl contains
either an interface or a namespace. (This logic happens in
components/script/dom/bindings/codegen/Configuration.py:35, in the
Configuration.__init__ method.)

I thought about changing the binding-generation code, but that seems
difficult. So I settled for placing the enum inside
HTMLFormElement.webidl, as that seems like a "neutral" location. We
could equally settle for putting it under HTMLTextAreaElement or
HTMLInputElement, it probably doesn't really matter.

The setRangeText algorithm set the "dirty value flag" on the
input/textarea. I made some clean-ups related to this:

1. HTMLTextAreaElement called its dirty value flag "value_changed"; I
   changed this to "value_dirty" to be consistent with the spec.

2. HTMLInputElement had a "value_changed" field and also a "value_dirty"
   field, which were each used in slightly different places (and
   sometimes in both places). I consolidated these into a single
   "value_dirty" field, which was necessary in order to make some of the
   tests pass.

TextControl::set_dom_range_text replaces part of the existing textinput
content with the replacement string (steps 9-10 of the algorithm). My
implementation changes the textinput's selection and then replaces the
selection. A downside of this approach is that we lose the original
selection state from before the call to setRangeText. Therefore, we have
to save the state into the original_selection_state variable so that we
can later pass it into TextControl::set_selection_range. This allows
TextControl::set_selection_range to correctly decide whether or not to
fire the select event.

An alternative approach would be to implement a method on TextInput
which allows a subtring of the content to be mutated, without touching
the current selection state. However, any such method would potentially
put the TextInput into an inconsistent state where the edit_point and/or
selection_origin is a TextPoint which doesn't exist in the content. It
would be up to the caller to subsequently make sure that the TextInput
gets put back into a valid state (which would actually happen, when
TextControl::set_selection_range is called).

I think TextInput's public API should not make it possible to put it
into an invalid state, as that would be a potential source of bugs.
That's why I didn't take this approach. (TextInput's public API does
currently make it possible to create an invalid state, but I'd like to
submit a follow-up patch to lock this down.)
2018-01-26 20:12:33 +01:00
Jon Leighton
0148e9705b Support the select() method on input/textarea
Issue #19171
2018-01-26 19:50:45 +01:00
tigercosmos
b29230bd76 implement range input sanitization 2018-01-17 16:27:21 +08:00
Nathan
5b6e821559 input type=number validations 2018-01-09 20:08:09 -06:00
Josh Matthews
2b6f573eb5 Update web-platform-tests to revision be5419e845d39089ba6dc338c1bd0fa279108317 2018-01-09 12:52:27 -05:00
tigercosmos
b43424111e implement valid Date time Local input 2018-01-07 18:31:32 +08:00
tigercosmos
54c6028033 implement valid week string 2017-12-17 16:57:01 +08:00
Jon Leighton
05bfb8d07a Expand InputType to cover all possible types
This came out of a conversation with nox in IRC:
https://mozilla.logbot.info/servo/20171201#c13946454-c13946594

The code I was working on which motivated this change is here:
https://github.com/servo/servo/pull/19461

Previously, InputType::Text was used to represent several different
values of the type attribute on an input element.

If an input element doesn't have a type attribute, or its type attribute
doesn't contain a recognised value, then the input's type defaults to
"text".

Before this change, there were a number of checks in the code which
directly looked at the type attribute. If those checks matched against
the value "text", then they were potentially buggy, since an input with
type=invalid should also behave like an input with type=text.

Rather than have every conditional which cares about the input type also
have to deal with invalid input types, we can convert the type attribute
to an InputType enum once, and then match against the enum.

A secondary benefit is that the compiler can tell us whether we've
missed branches in a match expression. While working on this I
discovered that the HTMLInputElement::value_mode() method misses a case
for inputs with type=hidden (this resulted in a failing WPT test
passing).

I've also implemented the Default trait for InputType, so we now only
have one place in the code which knows that InputType::Text is the
default, where previously there were several.
2017-12-06 21:11:39 +01:00
tigercosmos
927fd1d044 implement "Date type inputs", "Month type inputs" 2017-12-05 09:44:51 +08:00
Simon Wörner
a999239f28 Added time input sanitization:
- Implemented is_valid_time_string for DOMString.
- Use is_valid_time_string for sanitize_value with time input.
- Improved input type change test
2017-12-04 11:21:28 +01:00
Bastien Orivel
05c4e08d58 Add a sanitize_value implementation for the color input
I had to change the test a little bit to avoid some failures due to
color and text both having a sanitizedValue which was making the test
use the first assertion instead of the second one in some cases.

The sanitize_value implementation is pretty simple, we iterate over the
content and checks that the content is 7 characters long, that the first
character is a `#` and then that all the following characters are
hexadecimal. If all those requirements are met, we lowercase the
content, otherwise we put `#000000` in it.
2017-11-22 22:36:21 +01:00
Josh Matthews
0c83d95d5a Update test expectations. 2017-11-15 15:01:53 -05:00
Keith Yeung
8203605c04 Implement value sanitization on HTMLInputElement 2017-11-09 16:34:14 -08:00
Josh Matthews
1f531f66ea Update web-platform-tests to revision 8a2ceb5f18911302b7a5c1cd2791f4ab50ad4326 2017-10-12 12:36:21 -04:00
Josh Matthews
3347094373 Update WPT results. 2017-10-05 09:23:30 +02:00
Mukilan Thiyagarajan
38a61712e4 Implement the form owner concept 2017-03-15 16:39:55 +01:00
Ms2ger
4fadf9b0b6 Update web-platform-tests to revision 7a767a52741f628430ffbbed46e7f3df68ba3534
Fixes #15648.
2017-02-20 13:52:41 +01:00
Ms2ger
296fa2512b Update web-platform-tests and CSS tests.
- Update CSS tests to revision e05bfd5e30ed662c2f8a353577003f8eed230180.
- Update web-platform-tests to revision a052787dd5c069a340031011196b73affbd68cd9.
2017-02-06 22:38:29 +01:00
Ms2ger
ccdb0a3458 Update web-platform-tests to revision e8bfc205e36ad699601212cd50083870bad9a75d 2016-11-15 09:35:34 +01:00
Ms2ger
3b4f0ec0bb Update web-platform-tests to revision 3b3585e368841b77caea8576fa56cef91c3fbdf0 2016-09-26 13:24:06 +02:00
Zhen Zhang
6ca531fb8f Fix file-type input element 2016-06-30 14:18:11 +08:00
Ms2ger
7c4281f3da Update web-platform-tests to revision bda2059150dca8ab47f088b4cc619fcdc1f262fa 2016-05-30 14:04:50 +02:00
Ms2ger
b97474fbba Update web-platform-tests to revision 697b971060b2d475a73c1c3755232a4674d61cf5 2016-05-10 12:17:47 +02:00
Arnaud Marant
9b8f183cba Issue #10491 add HTMLInputElement attributes that reflect content identically
it uses a new version of string-cache https://github.com/servo/string-cache/pull/148
2016-04-12 00:15:57 +02:00
Ms2ger
a91433f0c8 Update web-platform-tests to revision 66c4613f823c4384c78ada77346eda17bb128947 2016-03-15 16:34:24 +01:00
Greg Guthe
e6c31e305d Get input value IDL attribute matching spec
Refs: https://github.com/servo/servo/issues/9455
2016-02-25 18:59:34 -05:00
Ms2ger
62a9bebeef Update web-platform-tests to revision 7ed49cff4d031720f829c01df837ed7a09ad5c60 2016-02-24 11:04:43 +01:00
Ms2ger
e8ed816728 Update web-platform-tests to revision 95aad3bd9b82b5c65d84d53517b65ba084de9394 2016-02-12 09:41:14 +01:00
Anthony Ramine
0032fdce3b Enable again /the-input-element/type-change-state.html.ini (fixes #3657)
It doesn't seem to intermittently timeout anymore.
2016-01-02 19:21:15 +01:00
Keith Yeung
5c9a25d46b Add support for caseless group name matching in HTML input elements 2015-10-02 10:41:02 -07:00
Ms2ger
163009575a Update web-platform-tests to revision 71a0d51d14d8b0f1b53cda3a7d39ef8765164485 2015-09-17 18:32:13 +02:00
Glenn Watson
39972a174e Fix panic when called on root node, and update test expectations.
The three tests that are marked as failures are because they use offsetWidth as a dummy to force a layout flush. Now that these exist, they expose an unrelated bug with reflow.
2015-08-04 08:59:27 +10:00
Ms2ger
c66c6af0ba Update web-platform-tests to revision 4d96cccabc2feacd48e1dab9afc22b8af2225572 2015-06-28 22:52:24 +02:00
James Graham
291ac06c01 Update web-platform-tests expected data to revision 2a9fd810bb18610b422dbc3998ab74aa1bffae95 2015-04-24 18:31:05 +01:00
Mikko Vanhatalo
29387f6c4c Implemented HTMLInputElement placeholder attribute
+ modified HTMLInputElement.webidl to include placeholder
+ modified placeholder test expectations
2015-04-04 14:44:32 +03:00
Ms2ger
92a7fee296 Update web-platform-tests. 2015-02-16 19:57:47 +01:00
Ms2ger
965dcda609 Update wptrunner and start running reftests. 2015-01-14 10:59:30 +01:00
Bruno de Oliveira Abinader
c82eb3b1a4 Call the NamedGetter method from the get trap in proxy bindings. 2014-12-23 13:02:52 +01:00
Ms2ger
c2e4e715ae Revert "Update wptrunner and start running reftests."
This reverts commit 1d68ee689f.

Fixes #4462.
2014-12-23 09:55:12 +01:00
Ms2ger
1d68ee689f Update wptrunner and start running reftests. 2014-12-19 15:08:38 +01:00
Matthew Rasmus
e4963869d3 Additional updates for newly passing WPT's 2014-12-16 13:01:36 -08:00
Manish Goregaokar
e7b3caa386 Add oninput/onchange so tests work 2014-12-05 18:49:34 -08:00
Ms2ger
801c7a35be Update web-platform-tests. 2014-11-05 10:30:59 +01:00
Manish Goregaokar
80efe37316 Disable html/semantics/forms/the-input-element/type-change-state.html.ini 2014-10-12 08:34:36 +05:30
Manish Goregaokar
ca2d5d328d Update wpt expectations 2014-10-11 16:10:02 +05:30
Ms2ger
ff42493d87 Update to wptrunner 1.3, which actually runs. 2014-10-06 22:42:49 +02:00