diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs
index bd21001ab6b..888944c27ea 100644
--- a/components/script/dom/htmldialogelement.rs
+++ b/components/script/dom/htmldialogelement.rs
@@ -11,7 +11,7 @@ use crate::dom::bindings::codegen::Bindings::HTMLDialogElementBinding::HTMLDialo
use crate::dom::bindings::inheritance::Castable;
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::str::DOMString;
-use crate::dom::document::Document;
+use crate::dom::document::{Document, FocusType};
use crate::dom::element::Element;
use crate::dom::eventtarget::EventTarget;
use crate::dom::htmlelement::HTMLElement;
@@ -70,6 +70,31 @@ impl HTMLDialogElementMethods for HTMLDialogElement {
*self.return_value.borrow_mut() = return_value;
}
+ ///
+ fn Show(&self) {
+ let element = self.upcast::();
+
+ // Step 1 TODO: Check is modal flag is false
+ if element.has_attribute(&local_name!("open")) {
+ return;
+ }
+
+ // TODO: Step 2 If this has an open attribute, then throw an "InvalidStateError" DOMException.
+
+ // Step 3
+ element.set_bool_attribute(&local_name!("open"), true);
+
+ // TODO: Step 4 Set this's previously focused element to the focused element.
+
+ // TODO: Step 5 Let hideUntil be the result of running topmost popover ancestor given this, null, and false.
+
+ // TODO: Step 6 If hideUntil is null, then set hideUntil to this's node document.
+
+ // TODO: Step 7 Run hide all popovers until given hideUntil, false, and true.
+
+ // TODO(Issue #32702): Step 8 Run the dialog focusing steps given this.
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-dialog-close
fn Close(&self, return_value: Option) {
let element = self.upcast::();
diff --git a/components/script/dom/webidls/HTMLDialogElement.webidl b/components/script/dom/webidls/HTMLDialogElement.webidl
index 758839e9015..e52d3caf077 100644
--- a/components/script/dom/webidls/HTMLDialogElement.webidl
+++ b/components/script/dom/webidls/HTMLDialogElement.webidl
@@ -10,8 +10,8 @@ interface HTMLDialogElement : HTMLElement {
[CEReactions]
attribute boolean open;
attribute DOMString returnValue;
- // [CEReactions]
- // void show();
+ [CEReactions]
+ undefined show();
// [CEReactions]
// void showModal();
[CEReactions]
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html.ini
deleted file mode 100644
index 55fc622e734..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-close-event.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[dialog-close-event.html]
- [Test that dialog receives a close event upon closing.]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focus-previous-outside.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focus-previous-outside.html.ini
index 9702f2ea949..fc24a206a89 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focus-previous-outside.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focus-previous-outside.html.ini
@@ -1,7 +1,4 @@
[dialog-focus-previous-outside.html]
- [Focus should not be restored if the currently focused element is not inside the dialog.]
- expected: FAIL
-
[Focus restore should not occur when the focused element is in a shadowroot outside of the dialog.]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-disconnected.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-disconnected.html.ini
index 431e978d6de..b012977caa1 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-disconnected.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-disconnected.html.ini
@@ -1,6 +1,3 @@
[dialog-focusing-steps-disconnected.html]
- [dialog.show(): focusing steps should not change focus on disconnected