From de2c2a249a296e5f03eda4529f9af55e42e9f0b9 Mon Sep 17 00:00:00 2001 From: John Dai Date: Tue, 12 Nov 2019 11:27:55 +0000 Subject: [PATCH] Bug 1552313 - Implement element.attachInternals; r=smaug,edgar ElementInternals class is empty-for-now. Differential Revision: https://phabricator.services.mozilla.com/D52158 --HG-- extra : moz-landing-system : lando --- dom/base/CustomElementRegistry.cpp | 6 + dom/base/CustomElementRegistry.h | 3 + dom/html/ElementInternals.cpp | 33 +++++ dom/html/ElementInternals.h | 40 ++++++ dom/html/moz.build | 2 + dom/html/nsGenericHTMLElement.cpp | 76 ++++++++++ dom/html/nsGenericHTMLElement.h | 7 +- .../mochitest/general/test_interfaces.js | 2 + dom/webidl/ElementInternals.webidl | 13 ++ dom/webidl/HTMLElement.webidl | 4 + dom/webidl/moz.build | 1 + .../HTMLElement-attachInternals.html.ini | 13 -- .../ElementInternals-accessibility.html.ini | 134 +++++++++++++++++- .../ElementInternals-labels.html.ini | 1 - .../ElementInternals-setFormValue.html.ini | 1 - .../ElementInternals-validation.html.ini | 1 - .../form-associated-callback.html.ini | 10 +- .../meta/html/dom/idlharness.https.html.ini | 26 +--- 18 files changed, 329 insertions(+), 44 deletions(-) create mode 100644 dom/html/ElementInternals.cpp create mode 100644 dom/html/ElementInternals.h create mode 100644 dom/webidl/ElementInternals.webidl delete mode 100644 testing/web-platform/meta/custom-elements/HTMLElement-attachInternals.html.ini diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index 1d3aa91562d7..c1096cb34a2e 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -174,6 +174,12 @@ void CustomElementData::SetCustomElementDefinition( mCustomElementDefinition = aDefinition; } +void CustomElementData::AttachedInternals() { + MOZ_ASSERT(!mIsAttachedInternals); + + mIsAttachedInternals = true; +} + CustomElementDefinition* CustomElementData::GetCustomElementDefinition() { MOZ_ASSERT(mCustomElementDefinition ? mState == State::eCustom : mState != State::eCustom); diff --git a/dom/base/CustomElementRegistry.h b/dom/base/CustomElementRegistry.h index 3593e7b69af3..8bc870ac64a7 100644 --- a/dom/base/CustomElementRegistry.h +++ b/dom/base/CustomElementRegistry.h @@ -105,6 +105,8 @@ struct CustomElementData { void SetCustomElementDefinition(CustomElementDefinition* aDefinition); CustomElementDefinition* GetCustomElementDefinition(); nsAtom* GetCustomElementType() const { return mType; } + void AttachedInternals(); + bool HasAttachedInternals() const { return mIsAttachedInternals; } void Traverse(nsCycleCollectionTraversalCallback& aCb) const; void Unlink(); @@ -123,6 +125,7 @@ struct CustomElementData { // this would be x-button. RefPtr mType; RefPtr mCustomElementDefinition; + bool mIsAttachedInternals = false; }; #define ALREADY_CONSTRUCTED_MARKER nullptr diff --git a/dom/html/ElementInternals.cpp b/dom/html/ElementInternals.cpp new file mode 100644 index 000000000000..bd5cf3468399 --- /dev/null +++ b/dom/html/ElementInternals.cpp @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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/. */ + +#include "mozilla/dom/ElementInternals.h" +#include "mozilla/dom/ElementInternalsBinding.h" +#include "nsGenericHTMLElement.h" + +namespace mozilla { +namespace dom { + +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ElementInternals, mTarget) +NS_IMPL_CYCLE_COLLECTING_ADDREF(ElementInternals) +NS_IMPL_CYCLE_COLLECTING_RELEASE(ElementInternals) +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ElementInternals) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +ElementInternals::ElementInternals(nsGenericHTMLElement* aTarget) + : mTarget(aTarget) {} + +nsISupports* ElementInternals::GetParentObject() { return ToSupports(mTarget); } + +JSObject* ElementInternals::WrapObject(JSContext* aCx, + JS::Handle aGivenProto) { + return ElementInternals_Binding::Wrap(aCx, this, aGivenProto); +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/html/ElementInternals.h b/dom/html/ElementInternals.h new file mode 100644 index 000000000000..b62a27ff1864 --- /dev/null +++ b/dom/html/ElementInternals.h @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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/. */ + +#ifndef mozilla_dom_ElementInternals_h +#define mozilla_dom_ElementInternals_h + +#include "js/TypeDecls.h" +#include "nsCycleCollectionParticipant.h" +#include "nsGenericHTMLElement.h" +#include "nsWrapperCache.h" + +namespace mozilla { +namespace dom { + +class ElementInternals final : public nsISupports, public nsWrapperCache { + public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ElementInternals) + + explicit ElementInternals(nsGenericHTMLElement* aTarget); + + nsISupports* GetParentObject(); + + virtual JSObject* WrapObject(JSContext* aCx, + JS::Handle aGivenProto) override; + + private: + ~ElementInternals() = default; + + // It's a target element which is a custom element. + RefPtr mTarget; +}; + +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_ElementInternals_h diff --git a/dom/html/moz.build b/dom/html/moz.build index eeda772778bc..a0feae03c78a 100644 --- a/dom/html/moz.build +++ b/dom/html/moz.build @@ -49,6 +49,7 @@ EXPORTS.mozilla += [ ] EXPORTS.mozilla.dom += [ + 'ElementInternals.h', 'HTMLAllCollection.h', 'HTMLAnchorElement.h', 'HTMLAreaElement.h', @@ -129,6 +130,7 @@ EXPORTS.mozilla.dom += [ ] UNIFIED_SOURCES += [ + 'ElementInternals.cpp', 'HTMLAllCollection.cpp', 'HTMLAnchorElement.cpp', 'HTMLAreaElement.cpp', diff --git a/dom/html/nsGenericHTMLElement.cpp b/dom/html/nsGenericHTMLElement.cpp index b54fc830291b..45eb0e3bcde1 100644 --- a/dom/html/nsGenericHTMLElement.cpp +++ b/dom/html/nsGenericHTMLElement.cpp @@ -102,6 +102,8 @@ #include "nsComputedDOMStyle.h" #include "mozilla/dom/HTMLLabelElement.h" #include "mozilla/dom/HTMLInputElement.h" +#include "mozilla/dom/CustomElementRegistry.h" +#include "mozilla/dom/ElementInternals.h" using namespace mozilla; using namespace mozilla::dom; @@ -2796,3 +2798,77 @@ void nsGenericHTMLElement::SetInnerText(const nsAString& aValue) { mb.NodesAdded(); } + +// https://html.spec.whatwg.org/commit-snapshots/b48bb2238269d90ea4f455a52cdf29505aff3df0/#dom-attachinternals +already_AddRefed nsGenericHTMLElement::AttachInternals( + ErrorResult& aRv) { + CustomElementData* ceData = GetCustomElementData(); + + // 1. If element's is value is not null, then throw a "NotSupportedError" + // DOMException. + nsAtom* isAtom = ceData ? ceData->GetIs(this) : nullptr; + nsAtom* nameAtom = NodeInfo()->NameAtom(); + if (isAtom) { + aRv.ThrowDOMException( + NS_ERROR_DOM_NOT_SUPPORTED_ERR, + nsPrintfCString( + "Cannot attach ElementInternals to a customized built-in element " + "'%s'", + NS_ConvertUTF16toUTF8(isAtom->GetUTF16String()).get())); + return nullptr; + } + + // 2. Let definition be the result of looking up a custom element definition + // given element's node document, its namespace, its local name, and null + // as is value. + CustomElementDefinition* definition = nullptr; + if (ceData) { + definition = ceData->GetCustomElementDefinition(); + + // If the definition is null, the element possible hasn't yet upgraded. + // Fallback to use LookupCustomElementDefinition to find its definition. + if (!definition) { + definition = nsContentUtils::LookupCustomElementDefinition( + NodeInfo()->GetDocument(), nameAtom, + NodeInfo()->NamespaceID(), ceData->GetCustomElementType()); + } + } + + // 3. If definition is null, then throw an "NotSupportedError" DOMException. + if (!definition) { + aRv.ThrowDOMException( + NS_ERROR_DOM_NOT_SUPPORTED_ERR, + nsPrintfCString( + "Cannot attach ElementInternals to a non-custom element '%s'", + NS_ConvertUTF16toUTF8(nameAtom->GetUTF16String()).get())); + return nullptr; + } + + // 4. If definition's disable internals is true, then throw a + // "NotSupportedError" DOMException. + if (definition->mDisableInternals) { + aRv.ThrowDOMException( + NS_ERROR_DOM_NOT_SUPPORTED_ERR, + nsPrintfCString( + "AttachInternal() to '%s' is disabled by disabledFeatures", + NS_ConvertUTF16toUTF8(nameAtom->GetUTF16String()).get())); + return nullptr; + } + + // 5. If element's attached internals is true, then throw an + // "NotSupportedError" DOMException. + if (ceData->HasAttachedInternals()) { + aRv.ThrowDOMException( + NS_ERROR_DOM_NOT_SUPPORTED_ERR, + nsPrintfCString( + "AttachInternals() has already been called from '%s'", + NS_ConvertUTF16toUTF8(nameAtom->GetUTF16String()).get())); + return nullptr; + } + + // 6. Set element's attached internals to true. + ceData->AttachedInternals(); + + // 7. Create a new ElementInternals instance targeting element, and return it. + return MakeAndAddRef(this); +} \ No newline at end of file diff --git a/dom/html/nsGenericHTMLElement.h b/dom/html/nsGenericHTMLElement.h index ec8fdbb157e1..8ffc559e3512 100644 --- a/dom/html/nsGenericHTMLElement.h +++ b/dom/html/nsGenericHTMLElement.h @@ -15,9 +15,9 @@ #include "nsContentCreatorFunctions.h" #include "mozilla/ErrorResult.h" #include "mozilla/dom/BindingDeclarations.h" +#include "mozilla/dom/Element.h" #include "mozilla/dom/DOMRect.h" #include "mozilla/dom/ValidityState.h" -#include "mozilla/dom/Element.h" class nsDOMTokenList; class nsIFormControlFrame; @@ -35,6 +35,7 @@ class EventStates; class TextEditor; class PresState; namespace dom { +class ElementInternals; class HTMLFormElement; class HTMLMenuElement; } // namespace dom @@ -226,6 +227,10 @@ class nsGenericHTMLElement : public nsGenericHTMLElementBase { return IsNodeInternal(aFirst, aArgs...); } + // https://html.spec.whatwg.org/multipage/custom-elements.html#dom-attachinternals + already_AddRefed AttachInternals( + ErrorResult& aRv); + protected: virtual ~nsGenericHTMLElement() {} diff --git a/dom/tests/mochitest/general/test_interfaces.js b/dom/tests/mochitest/general/test_interfaces.js index cf5ef94fee85..ef176827266e 100644 --- a/dom/tests/mochitest/general/test_interfaces.js +++ b/dom/tests/mochitest/general/test_interfaces.js @@ -350,6 +350,8 @@ var interfaceNamesInGlobalScope = [ // IMPORTANT: Do not change this list without review from a DOM peer! { name: "Element", insecureContext: true }, // IMPORTANT: Do not change this list without review from a DOM peer! + { name: "ElementInternals", insecureContext: true, nightly: true }, + // IMPORTANT: Do not change this list without review from a DOM peer! { name: "ErrorEvent", insecureContext: true }, // IMPORTANT: Do not change this list without review from a DOM peer! { name: "Event", insecureContext: true }, diff --git a/dom/webidl/ElementInternals.webidl b/dom/webidl/ElementInternals.webidl new file mode 100644 index 000000000000..5cec7db7428b --- /dev/null +++ b/dom/webidl/ElementInternals.webidl @@ -0,0 +1,13 @@ +/* -*- 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://html.spec.whatwg.org/#elementinternals + */ + +[Pref="dom.webcomponents.elementInternals.enabled", Exposed=Window] +interface ElementInternals { +}; + diff --git a/dom/webidl/HTMLElement.webidl b/dom/webidl/HTMLElement.webidl index 081f37c7e07e..57c8e06f695c 100644 --- a/dom/webidl/HTMLElement.webidl +++ b/dom/webidl/HTMLElement.webidl @@ -58,6 +58,10 @@ interface HTMLElement : Element { //readonly attribute boolean? commandHidden; //readonly attribute boolean? commandDisabled; //readonly attribute boolean? commandChecked; + + // https://html.spec.whatwg.org/multipage/custom-elements.html#dom-attachinternals + [Pref="dom.webcomponents.elementInternals.enabled", Throws] + ElementInternals attachInternals(); }; // http://dev.w3.org/csswg/cssom-view/#extensions-to-the-htmlelement-interface diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build index e01b67110af0..ec55eaa31bb3 100644 --- a/dom/webidl/moz.build +++ b/dom/webidl/moz.build @@ -484,6 +484,7 @@ WEBIDL_FILES = [ 'DragEvent.webidl', 'DynamicsCompressorNode.webidl', 'Element.webidl', + 'ElementInternals.webidl', 'Event.webidl', 'EventHandler.webidl', 'EventListener.webidl', diff --git a/testing/web-platform/meta/custom-elements/HTMLElement-attachInternals.html.ini b/testing/web-platform/meta/custom-elements/HTMLElement-attachInternals.html.ini deleted file mode 100644 index 8b7b8dd7a833..000000000000 --- a/testing/web-platform/meta/custom-elements/HTMLElement-attachInternals.html.ini +++ /dev/null @@ -1,13 +0,0 @@ -[HTMLElement-attachInternals.html] - [Successful attachInternals() and the second call.] - expected: FAIL - - [attachInternals() throws a NotSupportedError if it is called for a customized built-in element] - expected: FAIL - - [If a custom element definition for the local name of the element has disable internals flag, throw a NotSupportedError] - expected: FAIL - - [If a custom element definition for the local name of the element doesn't exist, throw an NotSupportedError] - expected: FAIL - diff --git a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-accessibility.html.ini b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-accessibility.html.ini index 7a3458431577..b20b5f60ebc8 100644 --- a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-accessibility.html.ini +++ b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-accessibility.html.ini @@ -1,4 +1,136 @@ [ElementInternals-accessibility.html] - [ElementInternals-accessibility] + [role is defined in ElementInternals] + expected: FAIL + + [ariaActiveDescendant is defined in ElementInternals] + expected: FAIL + + [ariaAtomic is defined in ElementInternals] + expected: FAIL + + [ariaAutoComplete is defined in ElementInternals] + expected: FAIL + + [ariaBusy is defined in ElementInternals] + expected: FAIL + + [ariaChecked is defined in ElementInternals] + expected: FAIL + + [ariaColCount is defined in ElementInternals] + expected: FAIL + + [ariaColIndex is defined in ElementInternals] + expected: FAIL + + [ariaColSpan is defined in ElementInternals] + expected: FAIL + + [ariaControls is defined in ElementInternals] + expected: FAIL + + [ariaCurrent is defined in ElementInternals] + expected: FAIL + + [ariaDescribedBy is defined in ElementInternals] + expected: FAIL + + [ariaDetails is defined in ElementInternals] + expected: FAIL + + [ariaDisabled is defined in ElementInternals] + expected: FAIL + + [ariaErrorMessage is defined in ElementInternals] + expected: FAIL + + [ariaExpanded is defined in ElementInternals] + expected: FAIL + + [ariaFlowTo is defined in ElementInternals] + expected: FAIL + + [ariaHasPopup is defined in ElementInternals] + expected: FAIL + + [ariaHidden is defined in ElementInternals] + expected: FAIL + + [ariaKeyShortcuts is defined in ElementInternals] + expected: FAIL + + [ariaLabel is defined in ElementInternals] + expected: FAIL + + [ariaLabelledBy is defined in ElementInternals] + expected: FAIL + + [ariaLevel is defined in ElementInternals] + expected: FAIL + + [ariaLive is defined in ElementInternals] + expected: FAIL + + [ariaModal is defined in ElementInternals] + expected: FAIL + + [ariaMultiLine is defined in ElementInternals] + expected: FAIL + + [ariaMultiSelectable is defined in ElementInternals] + expected: FAIL + + [ariaOrientation is defined in ElementInternals] + expected: FAIL + + [ariaOwns is defined in ElementInternals] + expected: FAIL + + [ariaPlaceholder is defined in ElementInternals] + expected: FAIL + + [ariaPosInSet is defined in ElementInternals] + expected: FAIL + + [ariaPressed is defined in ElementInternals] + expected: FAIL + + [ariaReadOnly is defined in ElementInternals] + expected: FAIL + + [ariaRelevant is defined in ElementInternals] + expected: FAIL + + [ariaRequired is defined in ElementInternals] + expected: FAIL + + [ariaRoleDescription is defined in ElementInternals] + expected: FAIL + + [ariaRowCount is defined in ElementInternals] + expected: FAIL + + [ariaRowIndex is defined in ElementInternals] + expected: FAIL + + [ariaRowSpan is defined in ElementInternals] + expected: FAIL + + [ariaSelected is defined in ElementInternals] + expected: FAIL + + [ariaSort is defined in ElementInternals] + expected: FAIL + + [ariaValueMax is defined in ElementInternals] + expected: FAIL + + [ariaValueMin is defined in ElementInternals] + expected: FAIL + + [ariaValueNow is defined in ElementInternals] + expected: FAIL + + [ariaValueText is defined in ElementInternals] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-labels.html.ini b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-labels.html.ini index a50fb4ccb7a3..495c5d0186fb 100644 --- a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-labels.html.ini +++ b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-labels.html.ini @@ -1,5 +1,4 @@ [ElementInternals-labels.html] - expected: ERROR [LABEL click] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini index 19f5aa440948..22d3cd334abf 100644 --- a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini +++ b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini @@ -1,5 +1,4 @@ [ElementInternals-setFormValue.html] - expected: ERROR [Single value - Non-empty name exists] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-validation.html.ini b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-validation.html.ini index f61589c160b7..d7bdad331752 100644 --- a/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-validation.html.ini +++ b/testing/web-platform/meta/custom-elements/form-associated/ElementInternals-validation.html.ini @@ -1,5 +1,4 @@ [ElementInternals-validation.html] - expected: ERROR [validity and setValidity()] expected: FAIL diff --git a/testing/web-platform/meta/custom-elements/form-associated/form-associated-callback.html.ini b/testing/web-platform/meta/custom-elements/form-associated/form-associated-callback.html.ini index 1212937cf2c8..0d40911b9c4e 100644 --- a/testing/web-platform/meta/custom-elements/form-associated/form-associated-callback.html.ini +++ b/testing/web-platform/meta/custom-elements/form-associated/form-associated-callback.html.ini @@ -1,4 +1,12 @@ [form-associated-callback.html] - [formAssociatedCallback, and form IDL attribute of ElementInternals] + [Associate by parser, customized at element creation] expected: FAIL + [Parsed, connected, then upgraded] + expected: FAIL + + [Disassociation] + expected: FAIL + + [Updating "form" content attribute] + expected: FAIL diff --git a/testing/web-platform/meta/html/dom/idlharness.https.html.ini b/testing/web-platform/meta/html/dom/idlharness.https.html.ini index 9043787af273..23f4001caab7 100644 --- a/testing/web-platform/meta/html/dom/idlharness.https.html.ini +++ b/testing/web-platform/meta/html/dom/idlharness.https.html.ini @@ -1,4 +1,4 @@ -prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.header.enabled:true, dom.security.featurePolicy.webidl.enabled:true] +prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.header.enabled:true, dom.security.featurePolicy.webidl.enabled:true, dom.webcomponents.elementInternals.enabled:true] [idlharness.https.html?exclude=(Document|Window|HTML.*)] [ElementInternals interface: operation setValidity(ValidityStateFlags, DOMString, HTMLElement)] expected: FAIL @@ -27,9 +27,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)] expected: FAIL - [ElementInternals interface: existence and properties of interface object] - expected: FAIL - [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type] expected: FAIL @@ -114,9 +111,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [OffscreenCanvasRenderingContext2D interface: operation beginPath()] expected: FAIL - [ElementInternals interface object length] - expected: FAIL - [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)] expected: FAIL @@ -387,9 +381,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [OffscreenCanvasRenderingContext2D interface object name] expected: FAIL - [ElementInternals interface object name] - expected: FAIL - [ElementInternals interface: attribute labels] expected: FAIL @@ -417,9 +408,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [ApplicationCache interface: attribute oncached] expected: FAIL - [ElementInternals interface: existence and properties of interface prototype object] - expected: FAIL - [OffscreenCanvasRenderingContext2D interface: operation commit()] expected: FAIL @@ -483,15 +471,9 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)] expected: FAIL - [ElementInternals interface: existence and properties of interface prototype object's @@unscopables property] - expected: FAIL - [AudioTrack interface object name] expected: FAIL - [ElementInternals interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - [AudioTrack interface: attribute kind] expected: FAIL @@ -861,9 +843,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [HTMLInputElement interface: attribute dirName] expected: FAIL - [HTMLElement interface: operation attachInternals()] - expected: FAIL - [HTMLVideoElement interface: attribute playsInline] expected: FAIL @@ -1026,9 +1005,6 @@ prefs: [dom.security.featurePolicy.enabled:true, dom.security.featurePolicy.head [HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type] expected: FAIL - [HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type] - expected: FAIL - [HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(HTMLElement)" with the proper type] expected: FAIL