mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Implement :valid :invalid pseudo classes (#26729)
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
2b67392fd5
commit
5f2c6c09cd
30 changed files with 324 additions and 241 deletions
|
@ -28,23 +28,9 @@ pub trait Validatable {
|
|||
ValidationFlags::empty()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#concept-fv-valid
|
||||
fn validate(&self, validate_flags: ValidationFlags) -> ValidationFlags {
|
||||
let mut failed_flags = self.perform_validation(validate_flags);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#suffering-from-a-custom-error
|
||||
if validate_flags.contains(ValidationFlags::CUSTOM_ERROR) {
|
||||
if !self.validity_state().custom_error_message().is_empty() {
|
||||
failed_flags.insert(ValidationFlags::CUSTOM_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
failed_flags
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#check-validity-steps
|
||||
fn check_validity(&self) -> bool {
|
||||
if self.is_instance_validatable() && !self.validate(ValidationFlags::all()).is_empty() {
|
||||
if self.is_instance_validatable() && !self.validity_state().invalid_flags().is_empty() {
|
||||
self.as_element()
|
||||
.upcast::<EventTarget>()
|
||||
.fire_cancelable_event(atom!("invalid"));
|
||||
|
@ -61,7 +47,7 @@ pub trait Validatable {
|
|||
return true;
|
||||
}
|
||||
|
||||
let flags = self.validate(ValidationFlags::all());
|
||||
let flags = self.validity_state().invalid_flags();
|
||||
if flags.is_empty() {
|
||||
return true;
|
||||
}
|
||||
|
@ -90,7 +76,7 @@ pub trait Validatable {
|
|||
// https://html.spec.whatwg.org/multipage/#dom-cva-validationmessage
|
||||
fn validation_message(&self) -> DOMString {
|
||||
if self.is_instance_validatable() {
|
||||
let flags = self.validate(ValidationFlags::all());
|
||||
let flags = self.validity_state().invalid_flags();
|
||||
validation_message_for_flags(&self.validity_state(), flags)
|
||||
} else {
|
||||
DOMString::new()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue