servo/components/script
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
..
docs Rename Root<T> to DomRoot<T> 2017-09-26 09:49:10 +02:00
dom Expand InputType to cover all possible types 2017-12-06 21:11:39 +01:00
task_source added pipelines to all task sources 2017-10-25 14:25:58 +01:00
body.rs Replace all uses of the heapsize crate with malloc_size_of. 2017-10-18 22:20:37 +11:00
build.rs Use env::var_os to read paths from the environment 2017-10-20 09:03:21 -07:00
Cargo.toml Update cookie to 0.10 2017-11-24 10:49:14 +01:00
clipboard_provider.rs make use of ScriptToConstellationChan 2017-08-15 08:22:09 +02:00
CMakeLists.txt Fix doc build by resurrecting generation of supported DOM APIs.h 2016-09-24 15:06:06 -04:00
devtools.rs Bump bitflags to 1.0 in every servo crate 2017-10-30 23:36:06 +01:00
document_loader.rs Fetch cancellation: Add cancel_chan to FetchContext 2017-11-17 15:59:59 -08:00
fetch.rs Add FetchCanceller RAII handle 2017-11-21 16:45:03 -08:00
layout_image.rs Merge request type and destination 2017-10-23 11:19:35 -07:00
lib.rs Make script depend on gecko-media 2017-11-14 17:33:25 +01:00
mem.rs Replace all uses of the heapsize crate with malloc_size_of. 2017-10-18 22:20:37 +11:00
microtask.rs Replace all uses of the heapsize crate with malloc_size_of. 2017-10-18 22:20:37 +11:00
network_listener.rs Introduce TaskOnce 2017-09-20 10:37:09 +02:00
script_runtime.rs Bump bitflags to 1.0 in every servo crate 2017-10-30 23:36:06 +01:00
script_thread.rs Use FetchCanceller for document loads 2017-11-22 14:06:27 -08:00
serviceworker_manager.rs remove extra spaces after keywords 2017-07-20 00:45:02 +03:00
serviceworkerjob.rs added pipelines to all task sources 2017-10-25 14:25:58 +01:00
stylesheet_loader.rs Use encoding-rs instead of rust-encoding for CSS parsing 2017-10-31 19:08:43 +01:00
task.rs Make usage of core_intrinsics optional 2017-10-16 20:20:21 +02:00
test.rs Parse srcset attribute 2017-10-03 13:18:01 +02:00
textinput.rs Implement normalization for textarea "API value" 2017-11-25 16:36:00 +01:00
timers.rs Replace all uses of the heapsize crate with malloc_size_of. 2017-10-18 22:20:37 +11:00
unpremultiplytable.rs
webdriver_handlers.rs Rename Root<T> to DomRoot<T> 2017-09-26 09:49:10 +02:00