forked from servo/servo
-
Notifications
You must be signed in to change notification settings - Fork 0
Form validation student project
Josh Matthews edited this page Sep 14, 2016
·
6 revisions
Background information: The HTML5 specification defines a mechanism by which website authors can require browsers to validate the contents of forms before the user is allowed to submit them. Servo currently implements support for a subset of the form element types defined by the specification; this project is intended to implement the client-side validations steps and extend the supported subset to include additional form elements that support validation.
Initial steps:
- compile Servo and ensure that it runs on
tests/html/about-mozilla.html
- email the mozilla.dev.servo mailing list (be sure to subscribe first!) introducing your group and asking any necessary questions
- uncomment the attributes in
ValidityState.webidl
and fix the resulting build errors by implementing appropriate stub methods invaliditystate.rs
- make the
ValidityState
constructor take an&Element
argument and store it as aJS<Element>
member inValidityState
- add a new enum that represents each possible validity check in
ValidityState
- define a
Validatable
trait that contains a method which accepts this enum as an argument (see theActivatable
trait for inspiration) - implement this trait for the form element types (
HTMLInputElement
,HTMLSelectElement
,HTMLButtonElement
, etc.), and define anas_maybe_validatable
method onElement
which returns an&Validatable
value if the element implements the trait (seeas_maybe_activatable
for inspiration) - Use the newly-added
JS<Element>
member to call these new methods as appropriate in each of the stub methods inValidityState
Subsequent steps:
- Add a method to
HTMLFormElement
that implements the steps to statically validate the constraints of a form element - Add a method to
HTMLFormElement
that implements the steps to interactively validate the constraints of a form element - Implement the checkValidity API for
HTMLFormElement
- Implement the reportValidity API for
HTMLFormElement
- Implement each validity state defined in the spec as applicable. This can include implementing support for attributes such as
min
,max
,minlength
, etc. - Modify the implementation of the form submission algorithm to include constraint validation