Files
tubestation/dom/webidl/ShadowRoot.webidl
Kagami Sascha Rosylight b20ca6e78f Bug 1858168 - Allow [InstrumentedProps] only for proxy-based interfaces r=peterv
1. This tries to do the same checks that CGDOMJSProxyHandler does: https://searchfox.org/mozilla-central/rev/1865e9fba4166ab2aa6c9d539913115723d9cc53/dom/bindings/Codegen.py#16516-16520
2. All attributes in non-proxy-interface are removed, because I'm sure the list should change once we ever get the support on non-proxy ones.
3. The attribute on Document is moved back to HTMLDocument. It's technically fine to be in Document as HTMLDocument calls the Document function anyway, but allowing such case looked complex to me so I just decided to not care.

Differential Revision: https://phabricator.services.mozilla.com/D190585
2025-02-02 00:27:33 +00:00

71 lines
2.7 KiB
Plaintext

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*
* The origin of this IDL file is
* https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html
*
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
// https://dom.spec.whatwg.org/#enumdef-shadowrootmode
enum ShadowRootMode {
"open",
"closed"
};
enum SlotAssignmentMode { "manual", "named" };
// https://dom.spec.whatwg.org/#shadowroot
[Exposed=Window]
interface ShadowRoot : DocumentFragment
{
// Shadow DOM v1
readonly attribute ShadowRootMode mode;
readonly attribute boolean delegatesFocus;
readonly attribute SlotAssignmentMode slotAssignment;
[Pref="dom.webcomponents.shadowdom.declarative.enabled"]
readonly attribute boolean clonable;
[Pref="dom.webcomponents.shadowdom.declarative.enabled"]
readonly attribute boolean serializable;
readonly attribute Element host;
attribute EventHandler onslotchange;
Element? getElementById(DOMString elementId);
// https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin
[CEReactions, SetterThrows]
attribute (TrustedHTML or [LegacyNullToEmptyString] DOMString) innerHTML;
// When JS invokes importNode or createElement, the binding code needs to
// create a reflector, and so invoking those methods directly on the content
// document would cause the reflector to be created in the content scope,
// at which point it would be difficult to move into the UA Widget scope.
// As such, these methods allow UA widget code to simultaneously create nodes
// and associate them with the UA widget tree, so that the reflectors get
// created in the right scope.
[CEReactions, Throws, Func="IsChromeOrUAWidget"]
Node importNodeAndAppendChildAt(Node parentNode, Node node, optional boolean deep = false);
[CEReactions, Throws, Func="IsChromeOrUAWidget"]
Node createElementAndAppendChildAt(Node parentNode, DOMString localName);
// For triggering UA Widget scope in tests.
[ChromeOnly]
undefined setIsUAWidget();
[ChromeOnly]
boolean isUAWidget();
};
partial interface ShadowRoot {
// https://html.spec.whatwg.org/#dom-shadowroot-sethtmlunsafe
[Pref="dom.webcomponents.shadowdom.declarative.enabled", Throws]
undefined setHTMLUnsafe((TrustedHTML or DOMString) html);
[Pref="dom.webcomponents.shadowdom.declarative.enabled"]
DOMString getHTML(optional GetHTMLOptions options = {});
};
ShadowRoot includes DocumentOrShadowRoot;