mirror of
https://github.com/servo/servo
synced 2026-05-13 02:17:06 +02:00
Refactors HTMLInputElement.rs to split lots of type specific input code into their own files. These SpecificInputTypes are responsible for their own shadow trees and also for element specific data such as FileInputType's filelist. Testing: Covered by WPTs Fixes: https://github.com/servo/servo/issues/38263 Fixes: https://github.com/servo/servo/issues/43351 Signed-off-by: Luke Warlow <lwarlow@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
45 lines
1.6 KiB
Rust
45 lines
1.6 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
use crate::dom::element::Element;
|
|
use crate::dom::event::Event;
|
|
use crate::dom::eventtarget::EventTarget;
|
|
use crate::dom::html::input_element::InputActivationState;
|
|
use crate::script_runtime::CanGc;
|
|
|
|
/// Trait for elements with defined activation behavior
|
|
pub(crate) trait Activatable {
|
|
fn as_element(&self) -> ∈
|
|
|
|
// Is this particular instance of the element activatable?
|
|
fn is_instance_activatable(&self) -> bool;
|
|
|
|
/// <https://dom.spec.whatwg.org/#eventtarget-legacy-pre-activation-behavior>
|
|
fn legacy_pre_activation_behavior(&self, _can_gc: CanGc) -> Option<InputActivationState> {
|
|
None
|
|
}
|
|
|
|
/// <https://dom.spec.whatwg.org/#eventtarget-legacy-canceled-activation-behavior>
|
|
fn legacy_canceled_activation_behavior(
|
|
&self,
|
|
_state_before: Option<InputActivationState>,
|
|
_can_gc: CanGc,
|
|
) {
|
|
}
|
|
|
|
// https://dom.spec.whatwg.org/#eventtarget-activation-behavior
|
|
// event and target are used only by HTMLAnchorElement, in the case
|
|
// where the target is an <img ismap> so the href gets coordinates appended
|
|
fn activation_behavior(&self, event: &Event, target: &EventTarget, can_gc: CanGc);
|
|
|
|
/// <https://html.spec.whatwg.org/multipage/#concept-selector-active>
|
|
fn enter_formal_activation_state(&self) {
|
|
self.as_element().set_active_state(true);
|
|
}
|
|
|
|
fn exit_formal_activation_state(&self) {
|
|
self.as_element().set_active_state(false);
|
|
}
|
|
}
|