From 31ebfff9bc3769615f583fd667ab25081b771465 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 6 May 2015 11:19:33 +0200 Subject: [PATCH 1/4] Improve formatting in closeevent.rs. --- components/script/dom/closeevent.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index 9acc40c6823..1eca14663b3 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -9,26 +9,27 @@ use dom::bindings::codegen::Bindings::CloseEventBinding::CloseEventMethods; use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JSRef,Temporary, Rootable}; +use dom::bindings::js::{JSRef, Temporary, Rootable}; use dom::bindings::utils::reflect_dom_object; use dom::event::{Event, EventTypeId, EventBubbles, EventCancelable}; use script_task::ScriptChan; -use std::borrow::ToOwned; -use std::cell::Cell; + use util::str::DOMString; +use std::borrow::ToOwned; +use std::cell::Cell; #[dom_struct] -pub struct CloseEvent{ +pub struct CloseEvent { event: Event, wasClean: Cell, code: Cell, reason: DOMRefCell } -impl CloseEvent{ - pub fn new_inherited(type_id: EventTypeId) -> CloseEvent{ - CloseEvent{ +impl CloseEvent { + pub fn new_inherited(type_id: EventTypeId) -> CloseEvent { + CloseEvent { event: Event::new_inherited(type_id), wasClean: Cell::new(true), code: Cell::new(0), @@ -60,7 +61,8 @@ impl CloseEvent{ pub fn Constructor(global: GlobalRef, type_: DOMString, - init: &CloseEventBinding::CloseEventInit) -> Fallible> { + init: &CloseEventBinding::CloseEventInit) + -> Fallible> { let clean_status = init.wasClean.unwrap_or(true); let cd = init.code.unwrap_or(0); let rsn = match init.reason.as_ref() { @@ -73,7 +75,7 @@ impl CloseEvent{ } } -impl<'a> CloseEventMethods for JSRef<'a, CloseEvent>{ +impl<'a> CloseEventMethods for JSRef<'a, CloseEvent> { fn WasClean(self) -> bool { self.wasClean.get() } From 692fc0904149ec8dfaa39b720b06c4a766aed86a Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 6 May 2015 11:27:54 +0200 Subject: [PATCH 2/4] Make the CloseEvent members immutable. --- components/script/dom/closeevent.rs | 37 ++++++++++++----------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index 1eca14663b3..3492f9be0e8 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -2,7 +2,6 @@ * 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::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::CloseEventBinding; use dom::bindings::codegen::Bindings::CloseEventBinding::CloseEventMethods; @@ -17,23 +16,23 @@ use script_task::ScriptChan; use util::str::DOMString; use std::borrow::ToOwned; -use std::cell::Cell; #[dom_struct] pub struct CloseEvent { event: Event, - wasClean: Cell, - code: Cell, - reason: DOMRefCell + wasClean: bool, + code: u16, + reason: DOMString, } impl CloseEvent { - pub fn new_inherited(type_id: EventTypeId) -> CloseEvent { + pub fn new_inherited(type_id: EventTypeId, wasClean: bool, code: u16, + reason: DOMString) -> CloseEvent { CloseEvent { event: Event::new_inherited(type_id), - wasClean: Cell::new(true), - code: Cell::new(0), - reason: DOMRefCell::new("".to_owned()) + wasClean: wasClean, + code: code, + reason: reason, } } @@ -44,19 +43,14 @@ impl CloseEvent { wasClean: bool, code: u16, reason: DOMString) -> Temporary { - let ev = reflect_dom_object(box CloseEvent::new_inherited(EventTypeId::CloseEvent), - global, - CloseEventBinding::Wrap); - let ev = ev.root(); + let event = box CloseEvent::new_inherited(EventTypeId::CloseEvent, + wasClean, code, reason); + let ev = reflect_dom_object(event, global, CloseEventBinding::Wrap).root(); let event: JSRef = EventCast::from_ref(ev.r()); event.InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable); - let ev = ev.r(); - ev.wasClean.set(wasClean); - ev.code.set(code); - *ev.reason.borrow_mut() = reason; - Temporary::from_rooted(ev) + Temporary::from_rooted(ev.r()) } pub fn Constructor(global: GlobalRef, @@ -77,15 +71,14 @@ impl CloseEvent { impl<'a> CloseEventMethods for JSRef<'a, CloseEvent> { fn WasClean(self) -> bool { - self.wasClean.get() + self.wasClean } fn Code(self) -> u16 { - self.code.get() + self.code } fn Reason(self) -> DOMString { - let reason = self.reason.borrow(); - reason.clone() + self.reason.clone() } } From 94b3617629476bd98e3482955b16d6d4b505c025 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 6 May 2015 12:13:29 +0200 Subject: [PATCH 3/4] Move the CloseEventInit defaults into IDL. --- components/script/dom/closeevent.rs | 11 ++--------- components/script/dom/webidls/CloseEvent.webidl | 6 +++--- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs index 3492f9be0e8..08ed8a07aa9 100644 --- a/components/script/dom/closeevent.rs +++ b/components/script/dom/closeevent.rs @@ -15,8 +15,6 @@ use script_task::ScriptChan; use util::str::DOMString; -use std::borrow::ToOwned; - #[dom_struct] pub struct CloseEvent { event: Event, @@ -57,15 +55,10 @@ impl CloseEvent { type_: DOMString, init: &CloseEventBinding::CloseEventInit) -> Fallible> { - let clean_status = init.wasClean.unwrap_or(true); - let cd = init.code.unwrap_or(0); - let rsn = match init.reason.as_ref() { - Some(reason) => reason.clone(), - None => "".to_owned(), - }; let bubbles = if init.parent.bubbles { EventBubbles::Bubbles } else { EventBubbles::DoesNotBubble }; let cancelable = if init.parent.cancelable { EventCancelable::Cancelable } else { EventCancelable::NotCancelable }; - Ok(CloseEvent::new(global, type_, bubbles, cancelable, clean_status, cd, rsn)) + Ok(CloseEvent::new(global, type_, bubbles, cancelable, init.wasClean, + init.code, init.reason.clone())) } } diff --git a/components/script/dom/webidls/CloseEvent.webidl b/components/script/dom/webidls/CloseEvent.webidl index edc2a43de19..c75b27e8184 100644 --- a/components/script/dom/webidls/CloseEvent.webidl +++ b/components/script/dom/webidls/CloseEvent.webidl @@ -11,7 +11,7 @@ interface CloseEvent : Event { }; dictionary CloseEventInit : EventInit { - boolean wasClean; - unsigned short code; - DOMString reason; + boolean wasClean = true; + unsigned short code = 0; + DOMString reason = ""; }; From 64982403404f9a802849b660f20a7c49000fc20c Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 6 May 2015 12:36:06 +0200 Subject: [PATCH 4/4] Correct the initial value of wasClean in CloseEvent. --- components/script/dom/webidls/CloseEvent.webidl | 2 +- .../websockets/interfaces/CloseEvent/constructor.html.ini | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 tests/wpt/metadata/websockets/interfaces/CloseEvent/constructor.html.ini diff --git a/components/script/dom/webidls/CloseEvent.webidl b/components/script/dom/webidls/CloseEvent.webidl index c75b27e8184..b30096e0fb6 100644 --- a/components/script/dom/webidls/CloseEvent.webidl +++ b/components/script/dom/webidls/CloseEvent.webidl @@ -11,7 +11,7 @@ interface CloseEvent : Event { }; dictionary CloseEventInit : EventInit { - boolean wasClean = true; + boolean wasClean = false; unsigned short code = 0; DOMString reason = ""; }; diff --git a/tests/wpt/metadata/websockets/interfaces/CloseEvent/constructor.html.ini b/tests/wpt/metadata/websockets/interfaces/CloseEvent/constructor.html.ini deleted file mode 100644 index 4874ef647a7..00000000000 --- a/tests/wpt/metadata/websockets/interfaces/CloseEvent/constructor.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[constructor.html] - type: testharness - [new CloseEvent() without dictionary] - expected: FAIL -