Hook up authentic click activation to the script task

This commit is contained in:
Manish Goregaokar 2014-11-16 07:41:22 +05:30
parent ddfa0c7de7
commit 03207dea81

View file

@ -18,8 +18,8 @@ use dom::bindings::trace::JSTraceable;
use dom::bindings::utils::{wrap_for_same_compartment, pre_wrap}; use dom::bindings::utils::{wrap_for_same_compartment, pre_wrap};
use dom::document::{Document, HTMLDocument, DocumentHelpers, FromParser}; use dom::document::{Document, HTMLDocument, DocumentHelpers, FromParser};
use dom::element::{Element, HTMLButtonElementTypeId, HTMLInputElementTypeId}; use dom::element::{Element, HTMLButtonElementTypeId, HTMLInputElementTypeId};
use dom::element::{HTMLSelectElementTypeId, HTMLTextAreaElementTypeId, HTMLOptionElementTypeId}; use dom::element::{HTMLSelectElementTypeId, HTMLTextAreaElementTypeId, HTMLOptionElementTypeId, ActivationElementHelpers};
use dom::event::{Event, Bubbles, DoesNotBubble, Cancelable, NotCancelable}; use dom::event::{Event, EventHelpers, Bubbles, DoesNotBubble, Cancelable, NotCancelable};
use dom::uievent::UIEvent; use dom::uievent::UIEvent;
use dom::eventtarget::{EventTarget, EventTargetHelpers}; use dom::eventtarget::{EventTarget, EventTargetHelpers};
use dom::keyboardevent::KeyboardEvent; use dom::keyboardevent::KeyboardEvent;
@ -1018,8 +1018,11 @@ impl ScriptTask {
Event::new(global::Window(*window), Event::new(global::Window(*window),
"click".to_string(), "click".to_string(),
Bubbles, Cancelable).root(); Bubbles, Cancelable).root();
let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(node); // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#trusted-events
let _ = eventtarget.dispatch_event_with_target(None, *event); event.set_trusted(true);
// https://html.spec.whatwg.org/multipage/interaction.html#run-authentic-click-activation-steps
let el = ElementCast::to_ref(node).unwrap(); // is_element() check already exists above
el.authentic_click_activation(*event);
doc.commit_focus_transaction(); doc.commit_focus_transaction();
window.flush_layout(); window.flush_layout();