diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs
index d6e2a724461..febfbc38f81 100644
--- a/components/script/dom/htmldialogelement.rs
+++ b/components/script/dom/htmldialogelement.rs
@@ -3,18 +3,25 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::Bindings::HTMLDialogElementBinding;
+use dom::bindings::codegen::Bindings::HTMLDialogElementBinding::HTMLDialogElementMethods;
use dom::bindings::codegen::InheritTypes::HTMLDialogElementDerived;
+use dom::bindings::cell::DOMRefCell;
use dom::bindings::js::{JSRef, Temporary};
use dom::document::Document;
use dom::element::ElementTypeId;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
use dom::node::{Node, NodeTypeId};
+
use util::str::DOMString;
+use string_cache::Atom;
+
+use std::borrow::ToOwned;
#[dom_struct]
pub struct HTMLDialogElement {
htmlelement: HTMLElement,
+ return_value: DOMRefCell,
}
impl HTMLDialogElementDerived for EventTarget {
@@ -26,7 +33,8 @@ impl HTMLDialogElementDerived for EventTarget {
impl HTMLDialogElement {
fn new_inherited(localName: DOMString, prefix: Option, document: JSRef) -> HTMLDialogElement {
HTMLDialogElement {
- htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLDialogElement, localName, prefix, document)
+ htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLDialogElement, localName, prefix, document),
+ return_value: DOMRefCell::new("".to_owned()),
}
}
@@ -37,3 +45,21 @@ impl HTMLDialogElement {
}
}
+impl<'a> HTMLDialogElementMethods for JSRef<'a, HTMLDialogElement> {
+ // https://html.spec.whatwg.org/multipage/#dom-dialog-open
+ make_bool_getter!(Open);
+
+ // https://html.spec.whatwg.org/multipage/#dom-dialog-open
+ make_bool_setter!(SetOpen, "open");
+
+ // https://html.spec.whatwg.org/multipage/#dom-dialog-returnvalue
+ fn ReturnValue(self) -> DOMString {
+ let return_value = self.return_value.borrow();
+ return_value.clone()
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-dialog-returnvalue
+ fn SetReturnValue(self, return_value: DOMString) {
+ *self.return_value.borrow_mut() = return_value;
+ }
+}
diff --git a/components/script/dom/webidls/HTMLDialogElement.webidl b/components/script/dom/webidls/HTMLDialogElement.webidl
index 659096994e7..aa78cb38aea 100644
--- a/components/script/dom/webidls/HTMLDialogElement.webidl
+++ b/components/script/dom/webidls/HTMLDialogElement.webidl
@@ -5,8 +5,8 @@
// https://www.whatwg.org/html/#htmldialogelement
interface HTMLDialogElement : HTMLElement {
- //attribute boolean open;
- //attribute DOMString returnValue;
+ attribute boolean open;
+ attribute DOMString returnValue;
//void show(optional (MouseEvent or Element) anchor);
//void showModal(optional (MouseEvent or Element) anchor);
//void close(optional DOMString returnValue);
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index efbe6e1a5b8..b0048beb2f8 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -6678,12 +6678,6 @@
[HTMLDialogElement interface object length]
expected: FAIL
- [HTMLDialogElement interface: attribute open]
- expected: FAIL
-
- [HTMLDialogElement interface: attribute returnValue]
- expected: FAIL
-
[HTMLDialogElement interface: operation show([object Object\],[object Object\])]
expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/reflection-misc.html.ini b/tests/wpt/metadata/html/dom/reflection-misc.html.ini
index c3fcda41468..831c5f16c10 100644
--- a/tests/wpt/metadata/html/dom/reflection-misc.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-misc.html.ini
@@ -12834,114 +12834,6 @@
[dialog.tabIndex: IDL set to -2147483648 followed by getAttribute()]
expected: FAIL
- [dialog.open: typeof IDL attribute]
- expected: FAIL
-
- [dialog.open: IDL get with DOM attribute unset]
- expected: FAIL
-
- [dialog.open: setAttribute() to "" followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to " foo " followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to undefined followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to null followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to 7 followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to 1.5 followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to true followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to false followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to object "[object Object\]" followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to NaN followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to Infinity followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to -Infinity followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to "\\0" followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to object "test-toString" followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to object "test-valueOf" followed by IDL get]
- expected: FAIL
-
- [dialog.open: setAttribute() to "open" followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to "" followed by hasAttribute()]
- expected: FAIL
-
- [dialog.open: IDL set to "" followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to " foo " followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to undefined followed by hasAttribute()]
- expected: FAIL
-
- [dialog.open: IDL set to undefined followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to null followed by hasAttribute()]
- expected: FAIL
-
- [dialog.open: IDL set to null followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to 7 followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to 1.5 followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to false followed by hasAttribute()]
- expected: FAIL
-
- [dialog.open: IDL set to object "[object Object\]" followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to NaN followed by hasAttribute()]
- expected: FAIL
-
- [dialog.open: IDL set to NaN followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to Infinity followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to -Infinity followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to "\\0" followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to object "test-toString" followed by IDL get]
- expected: FAIL
-
- [dialog.open: IDL set to object "test-valueOf" followed by IDL get]
- expected: FAIL
-
[dialog.itemScope: typeof IDL attribute]
expected: FAIL