Update hidden attribute IDL for hidden=until-found

Bug: 1055002
Fixed: 1280032
Change-Id: I1cb9d80488a933546072daed704af87100d113cf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3402520
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#982460}
diff --git a/html/editing/the-hidden-attribute/hidden-idl.html b/html/editing/the-hidden-attribute/hidden-idl.html
new file mode 100644
index 0000000..331b63f
--- /dev/null
+++ b/html/editing/the-hidden-attribute/hidden-idl.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/7475">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div>hello</div>
+<script>
+const div = document.querySelector('div');
+
+function runPropertyTest(assignedValue, expectedValue, expectedAttribute) {
+  test(() => {
+    div.hidden = assignedValue;
+    assert_equals(div.hidden, expectedValue,
+      `div.hidden = ${JSON.stringify(assignedValue)} should return ${JSON.stringify(expectedValue)}`);
+    assert_equals(div.getAttribute('hidden'), expectedAttribute,
+      `div.hidden = ${JSON.stringify(assignedValue)} should set the hidden attribute to ${JSON.stringify(expectedAttribute)}`);
+  }, `div.hidden = ${Number.isNaN(assignedValue) ? 'NaN' : JSON.stringify(assignedValue)}`);
+}
+
+function runAttributeTest(assignedAttribute, expectedValue) {
+  test(() => {
+    div.setAttribute('hidden', assignedAttribute);
+    assert_equals(div.hidden, expectedValue);
+  }, `div.setAttribute('hidden', ${JSON.stringify(assignedAttribute)}) should make div.hidden return ${JSON.stringify(expectedValue)}`);
+}
+
+runPropertyTest(false, false, null);
+runPropertyTest(true, true, '');
+runPropertyTest('foo', true, '');
+runPropertyTest('false', true, '');
+runPropertyTest('', false, null);
+
+runAttributeTest('false', true);
+runAttributeTest('foo', true);
+
+runPropertyTest('until-found', 'until-found', 'until-found');
+runPropertyTest('UNTIL-FOUND', 'until-found', 'until-found');
+runPropertyTest('UnTiL-FoUnD', 'until-found', 'until-found');
+runPropertyTest('unt\u0131l-found', true, '');
+runPropertyTest('unt\u0130l-found', true, '');
+
+runPropertyTest(null, false, null);
+runPropertyTest(undefined, false, null);
+
+runPropertyTest(1, true, '');
+runPropertyTest(0, false, null);
+runPropertyTest(NaN, false, null);
+</script>