Backed out changeset 55ab13abb8c2 (bug 1556362) for causing wpt failures on ElementInternals. CLOSED TREE

This commit is contained in:
Cristian Tuns 2021-10-06 11:14:57 -04:00
Родитель 3775fad341
Коммит ed43fdd207
6 изменённых файлов: 4 добавлений и 83 удалений

Просмотреть файл

@ -46,16 +46,6 @@ ShadowRoot* ElementInternals::GetShadowRoot() const {
return shadowRoot;
}
// https://html.spec.whatwg.org/#dom-elementinternals-form
HTMLFormElement* ElementInternals::GetForm(ErrorResult& aRv) const {
if (!mTarget || !mTarget->IsFormAssociatedElement()) {
aRv.ThrowNotSupportedError(
"Target element is not a form-associated custom element");
return nullptr;
}
return GetForm();
}
void ElementInternals::SetForm(HTMLFormElement* aForm) { mForm = aForm; }
void ElementInternals::ClearForm(bool aRemoveFromForm, bool aUnbindOrDelete) {

Просмотреть файл

@ -13,9 +13,6 @@
#include "nsWrapperCache.h"
namespace mozilla {
class ErrorResult;
namespace dom {
class HTMLElement;
@ -35,9 +32,7 @@ class ElementInternals final : public nsIFormControl, public nsWrapperCache {
virtual JSObject* WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) override;
// WebIDL
ShadowRoot* GetShadowRoot() const;
mozilla::dom::HTMLFormElement* GetForm(ErrorResult& aRv) const;
// nsIFormControl
mozilla::dom::HTMLFieldSetElement* GetFieldSet() override {

Просмотреть файл

@ -32,9 +32,6 @@ class HTMLElement final : public nsGenericHTMLFormElement {
already_AddRefed<mozilla::dom::ElementInternals> AttachInternals(
ErrorResult& aRv) override;
// nsGenericHTMLFormElement
bool IsFormAssociatedElement() const override;
void UpdateFormOwner();
protected:
@ -50,6 +47,7 @@ class HTMLElement final : public nsGenericHTMLFormElement {
HTMLFieldSetElement* GetFieldSetInternal() const override;
bool CanBeDisabled() const override;
bool DoesReadOnlyApply() const override;
bool IsFormAssociatedElement() const override;
ElementInternals* GetElementInternals() const;
};

Просмотреть файл

@ -11,8 +11,4 @@
interface ElementInternals {
// Shadow root access
readonly attribute ShadowRoot? shadowRoot;
// Form-associated custom elements
[Pref="dom.webcomponents.formAssociatedCustomElement.enabled", Throws]
readonly attribute HTMLFormElement? form;
};

Просмотреть файл

@ -7,3 +7,6 @@
[Disassociation]
expected: FAIL
[Updating "form" content attribute]
expected: FAIL

Просмотреть файл

@ -1,61 +0,0 @@
<!DOCTYPE html>
<title>form attribute of ElementInternals</title>
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
customElements.define('custom-input-parser', class extends HTMLElement {
static get formAssociated() { return true; }
constructor() {
super();
this.internals_ = this.attachInternals();
}
get i() { return this.internals_; }
});
</script>
<form id="custom-form">
<custom-input-parser id="custom-1"></custom-input-parser>
<custom-input-upgrade id="custom-2"></custom-input-upgrade>
</form>
<custom-input-parser id="custom-3" form="custom-form"></custom-input-parser>
<custom-input-upgrade id="custom-4" form="custom-form"></custom-input-upgrade>
<custom-input-upgrade id="custom-5"></custom-input-upgrade>
<script>
test(() => {
const form = document.forms[0];
assert_equals(document.getElementById("custom-1").i.form, form);
assert_equals(document.getElementById("custom-3").i.form, form);
// Test upgrading.
customElements.define('custom-input-upgrade', class extends HTMLElement {
static get formAssociated() { return true; }
constructor() {
super();
this.internals_ = this.attachInternals();
}
get i() { return this.internals_; }
});
assert_equals(document.getElementById("custom-2").i.form, form);
assert_equals(document.getElementById("custom-4").i.form, form);
// Test changing name attribuate.
let custom5 = document.getElementById("custom-5");
assert_equals(custom5.i.form, null);
custom5.setAttribute("form", "custom-form");
assert_equals(custom5.i.form, form);
}, "ElementInternals.form should return the target element's form owner");
test(() => {
class NotFormAssociatedElement extends HTMLElement {}
customElements.define('not-form-associated-element', NotFormAssociatedElement);
const element = new NotFormAssociatedElement();
const i = element.attachInternals();
assert_throws_dom('NotSupportedError', () => i.form);
}, "ElementInternals.form should throws NotSupportedError if the target element is not a form-associated custom element");
</script>
</body>