Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement transition event and infrastructure #13056

Merged
merged 2 commits into from Oct 12, 2016
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

Implement TransitionEvent

  • Loading branch information
KiChjang committed Oct 11, 2016
commit 752c6e6019f72e6ee1b7ee959e80f588b6714cfd
@@ -404,6 +404,7 @@ pub mod textencoder;
pub mod touch;
pub mod touchevent;
pub mod touchlist;
pub mod transitionevent;
pub mod treewalker;
pub mod uievent;
pub mod url;
@@ -0,0 +1,76 @@
/* 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 http://mozilla.org/MPL/2.0/. */

use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
use dom::bindings::codegen::Bindings::TransitionEventBinding;
use dom::bindings::codegen::Bindings::TransitionEventBinding::{TransitionEventInit, TransitionEventMethods};
use dom::bindings::error::Fallible;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::str::DOMString;
use dom::event::Event;
use dom::globalscope::GlobalScope;
use string_cache::Atom;

#[dom_struct]
pub struct TransitionEvent {
event: Event,
property_name: Atom,
elapsed_time: Finite<f32>,
pseudo_element: DOMString,
}

impl TransitionEvent {
pub fn new_inherited(init: &TransitionEventInit) -> TransitionEvent {
TransitionEvent {
event: Event::new_inherited(),
property_name: Atom::from(init.propertyName.clone()),
elapsed_time: init.elapsedTime.clone(),
pseudo_element: init.pseudoElement.clone()
}
}

pub fn new(global: &GlobalScope,
type_: Atom,
init: &TransitionEventInit) -> Root<TransitionEvent> {
let ev = reflect_dom_object(box TransitionEvent::new_inherited(init),
global,
TransitionEventBinding::Wrap);
{
let event = ev.upcast::<Event>();
event.init_event(type_, init.parent.bubbles, init.parent.cancelable);
}
ev
}

pub fn Constructor(global: &GlobalScope,
type_: DOMString,
init: &TransitionEventInit) -> Fallible<Root<TransitionEvent>> {
Ok(TransitionEvent::new(global, Atom::from(type_), init))
}
}

impl TransitionEventMethods for TransitionEvent {
// https://drafts.csswg.org/css-transitions/#Events-TransitionEvent-propertyName
fn PropertyName(&self) -> DOMString {
DOMString::from(&*self.property_name)
}

// https://drafts.csswg.org/css-transitions/#Events-TransitionEvent-elapsedTime
fn ElapsedTime(&self) -> Finite<f32> {
self.elapsed_time.clone()
}

// https://drafts.csswg.org/css-transitions/#Events-TransitionEvent-pseudoElement
fn PseudoElement(&self) -> DOMString {
self.pseudo_element.clone()
}

// https://dom.spec.whatwg.org/#dom-event-istrusted
fn IsTrusted(&self) -> bool {
self.upcast::<Event>().IsTrusted()
}
}
@@ -0,0 +1,20 @@
/* 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 http://mozilla.org/MPL/2.0/. */
/*
* For more information on this interface please see
* https://dom.spec.whatwg.org/#event
*/

[Constructor(DOMString type, optional TransitionEventInit transitionEventInitDict)]

This comment has been minimized.

@jdm

jdm Oct 12, 2016

Member

Add Exposed=Window as well.

interface TransitionEvent : Event {
readonly attribute DOMString propertyName;
readonly attribute float elapsedTime;
readonly attribute DOMString pseudoElement;
};

dictionary TransitionEventInit : EventInit {
DOMString propertyName = "";
float elapsedTime = 0.0;
DOMString pseudoElement = "";
};
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.