servo/components/script/dom/htmldocument.rs
Leo Ring 79a45c7da3
Implement HTMLDocument API (#38433)
This updates the pull request from here
https://github.com/servo/servo/pull/32553 that looks to be dormant. The
main change is that I've switched out `reflector` with `document` based
off this suggestion
https://github.com/servo/servo/pull/32553#issuecomment-2179568743, and
the `GetLocation` and `SupportedPropertyNames` methods pass through the
values from `Document`.

The implementation details are otherwise the same as the original PR

Testing: I don't see any WPT tests for this feature, I could make a
custom test if desired
Fixes: https://github.com/servo/servo/issues/32536

---------

Signed-off-by: Leo Ring <leoring03@gmail.com>
2025-08-04 03:42:54 +00:00

36 lines
1.4 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 https://mozilla.org/MPL/2.0/. */
use dom_struct::dom_struct;
use script_bindings::codegen::GenericBindings::DocumentBinding::DocumentMethods;
use script_bindings::codegen::GenericBindings::HTMLDocumentBinding::HTMLDocumentMethods;
use script_bindings::root::DomRoot;
use script_bindings::script_runtime::CanGc;
use script_bindings::str::DOMString;
use super::types::{Document, Location};
use crate::dom::bindings::codegen::Bindings::DocumentBinding::NamedPropertyValue;
/// <https://html.spec.whatwg.org/multipage/#htmldocument>
#[dom_struct]
pub(crate) struct HTMLDocument {
document: Document,
}
impl HTMLDocumentMethods<crate::DomTypeHolder> for HTMLDocument {
/// <https://html.spec.whatwg.org/multipage/#dom-document-location>
fn GetLocation(&self) -> Option<DomRoot<Location>> {
self.document.GetLocation()
}
/// <https://html.spec.whatwg.org/multipage/#dom-tree-accessors:supported-property-names>
fn SupportedPropertyNames(&self) -> Vec<DOMString> {
self.document.SupportedPropertyNames()
}
/// <https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter>
fn NamedGetter(&self, name: DOMString) -> Option<NamedPropertyValue> {
self.document.NamedGetter(name, CanGc::note())
}
}