зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 55ab13abb8c2 (bug 1556362) for causing wpt failures on ElementInternals. CLOSED TREE
This commit is contained in:
Родитель
3775fad341
Коммит
ed43fdd207
|
@ -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>
|
Загрузка…
Ссылка в новой задаче