From d9b0d831abeb9247d3112e5dcc51cd74d6593091 Mon Sep 17 00:00:00 2001 From: Mason Freed Date: Sat, 26 Sep 2020 10:58:26 -0700 Subject: [PATCH] Add testing of :defined prior to call to super() Per the conversation here [1], there is a desire to add more testing of the :defined pseudo state, prior to the call to super(). Note that `this` is not accessible prior to super(), so the instance itself is used. Also note that :defined already does not match anywhere inside the constructor, for upgrades. [1] https://github.com/whatwg/dom/pull/894#discussion_r495092027 Bug: 1042130 Change-Id: I2372900981247ea5624e737d2597d004398de477 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2431558 Auto-Submit: Mason Freed Commit-Queue: Kouhei Ueno Reviewed-by: Kouhei Ueno Cr-Commit-Position: refs/heads/master@{#810991} --- custom-elements/pseudo-class-defined.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/custom-elements/pseudo-class-defined.html b/custom-elements/pseudo-class-defined.html index ed12830d5a9582..f5bf2750a058b2 100644 --- a/custom-elements/pseudo-class-defined.html +++ b/custom-elements/pseudo-class-defined.html @@ -96,14 +96,17 @@ var log = []; var instance = document.createElement('my-custom-element-2'); document.body.appendChild(instance); + assert_false(instance.matches(":defined"), "Prior to definition, instance should not match :defined"); customElements.define('my-custom-element-2',class extends HTMLElement { constructor() { + assert_false(instance.matches(":defined"), "During construction, prior to super(), instance should not match :defined"); super(); log.push([this, 'begin']); - assert_false(this.matches(":defined"), "During construction, this should not match :defined"); + assert_false(this.matches(":defined"), "During construction, after super(), this should not match :defined"); log.push([this, 'end']); } }); + assert_true(instance.matches(":defined"), "After construction, instance should match :defined"); assert_equals(log.length, 2); assert_array_equals(log[0], [instance, 'begin']); assert_array_equals(log[1], [instance, 'end']);