forked from mirrors/gecko-dev
		
	This used to conflict with the util crate from the standard library, which has long since been removed. The import in layout has not been changed because of a conflict with the util mod there. Source-Repo: https://github.com/servo/servo Source-Revision: 27e0f16407629422b5e047e067d458142372c97e
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.5 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 http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
 | 
						|
use dom::bindings::codegen::Bindings::ProgressEventBinding;
 | 
						|
use dom::bindings::codegen::Bindings::ProgressEventBinding::ProgressEventMethods;
 | 
						|
use dom::bindings::codegen::InheritTypes::{EventCast, ProgressEventDerived};
 | 
						|
use dom::bindings::error::Fallible;
 | 
						|
use dom::bindings::global::GlobalRef;
 | 
						|
use dom::bindings::js::{JSRef, Temporary};
 | 
						|
use dom::bindings::utils::reflect_dom_object;
 | 
						|
use dom::event::{Event, EventTypeId};
 | 
						|
use util::str::DOMString;
 | 
						|
 | 
						|
#[dom_struct]
 | 
						|
pub struct ProgressEvent {
 | 
						|
    event: Event,
 | 
						|
    length_computable: bool,
 | 
						|
    loaded: u64,
 | 
						|
    total: u64
 | 
						|
}
 | 
						|
 | 
						|
impl ProgressEventDerived for Event {
 | 
						|
    fn is_progressevent(&self) -> bool {
 | 
						|
        *self.type_id() == EventTypeId::ProgressEvent
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl ProgressEvent {
 | 
						|
    fn new_inherited(length_computable: bool, loaded: u64, total: u64) -> ProgressEvent {
 | 
						|
        ProgressEvent {
 | 
						|
            event: Event::new_inherited(EventTypeId::ProgressEvent),
 | 
						|
            length_computable: length_computable,
 | 
						|
            loaded: loaded,
 | 
						|
            total: total
 | 
						|
        }
 | 
						|
    }
 | 
						|
    pub fn new(global: GlobalRef, type_: DOMString,
 | 
						|
               can_bubble: bool, cancelable: bool,
 | 
						|
               length_computable: bool, loaded: u64, total: u64) -> Temporary<ProgressEvent> {
 | 
						|
        let ev = reflect_dom_object(box ProgressEvent::new_inherited(length_computable, loaded, total),
 | 
						|
                                    global,
 | 
						|
                                    ProgressEventBinding::Wrap).root();
 | 
						|
        let event: JSRef<Event> = EventCast::from_ref(ev.r());
 | 
						|
        event.InitEvent(type_, can_bubble, cancelable);
 | 
						|
        Temporary::from_rooted(ev.r())
 | 
						|
    }
 | 
						|
    pub fn Constructor(global: GlobalRef,
 | 
						|
                       type_: DOMString,
 | 
						|
                       init: &ProgressEventBinding::ProgressEventInit)
 | 
						|
                       -> Fallible<Temporary<ProgressEvent>> {
 | 
						|
        let ev = ProgressEvent::new(global, type_, init.parent.bubbles, init.parent.cancelable,
 | 
						|
                                    init.lengthComputable, init.loaded, init.total);
 | 
						|
        Ok(ev)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
impl<'a> ProgressEventMethods for JSRef<'a, ProgressEvent> {
 | 
						|
    fn LengthComputable(self) -> bool {
 | 
						|
        self.length_computable
 | 
						|
    }
 | 
						|
    fn Loaded(self) -> u64{
 | 
						|
        self.loaded
 | 
						|
    }
 | 
						|
    fn Total(self) -> u64 {
 | 
						|
        self.total
 | 
						|
    }
 | 
						|
}
 | 
						|
 |