HTML: contentEditable IDL attribute: plaintext-only

See https://github.com/whatwg/html/pull/8275
diff --git a/html/editing/editing-0/contenteditable/contentEditable-invalidvalue.html b/html/editing/editing-0/contenteditable/contentEditable-invalidvalue.html
deleted file mode 100644
index b8c17c3..0000000
--- a/html/editing/editing-0/contenteditable/contentEditable-invalidvalue.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>contentEditable setter: invalid value</title>
-<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
-<link rel=help href="https://html.spec.whatwg.org/multipage/#contenteditable">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-  var el = document.createElement("div");
-  test(function(){
-    assert_throws_dom("SyntaxError", function() {
-      el.contentEditable = "foobar";
-    });
-  }, "setting contentEditable to an invalid value throws a SyntaxError Exception");
-</script>
diff --git a/html/editing/editing-0/contenteditable/contenteditable-enumerated-ascii-case-insensitive.html b/html/editing/editing-0/contenteditable/contenteditable-enumerated-ascii-case-insensitive.html
index 2096866..0125b95 100644
--- a/html/editing/editing-0/contenteditable/contenteditable-enumerated-ascii-case-insensitive.html
+++ b/html/editing/editing-0/contenteditable/contenteditable-enumerated-ascii-case-insensitive.html
@@ -5,20 +5,41 @@
 <meta name="assert" content="@contenteditable values are ASCII case-insensitive">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<div contenteditable="false"></div>
-<div contenteditable="FaLsE"></div>
-<div contenteditable="falſe"></div>
-<div></div>
+
 <script>
-const div = document.querySelectorAll("div");
+function testValue(value, isValid) {
+  const valueLower = value.toLowerCase();
 
-test(() => {
-  assert_equals(div[0].contentEditable, "false", "lowercase valid");
-  assert_equals(div[1].contentEditable, "false", "mixed case valid");
-  assert_equals(div[2].contentEditable, "inherit", "non-ASCII invalid");
+  test(() => {
+    const el = document.createElement('div');
+    if (valueLower !== "inherit") {
+      el.setAttribute('contenteditable', value);
+    }
+    assert_equals(el.contentEditable, isValid ? valueLower : "inherit");
+  }, `IDL attribute getter for attribute value "${value}"`);
 
-  assert_throws_dom("SyntaxError", () => {
-    div[3].contentEditable = "falſe";
-  }, "non-ASCII rejected by IDL");
-}, "keyword false");
+  test(() => {
+    const el = document.createElement('div');
+    if (isValid) {
+      el.contentEditable = value;
+      assert_equals(el.getAttribute('contenteditable'), valueLower === "inherit" ? null : valueLower);
+    } else {
+      assert_throws_dom("SyntaxError", () => {
+        el.contentEditable = value;
+      });
+    }
+  }, `IDL attribute setter for value "${value}"`);
+}
+
+const valid = ["true", "false", "inherit", "plaintext-only"]; // "inherit" is treated specially
+const invalid = ["foobar", "falſe", "plaıntext-only", "plaİntext-only"];
+
+for (const value of valid) {
+  testValue(value, true);
+  testValue(value.toUpperCase(), true);
+}
+
+for (const value of invalid) {
+  testValue(value, false);
+}
 </script>
diff --git a/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html b/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html
index 2e51109..19b2186 100644
--- a/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html
+++ b/html/editing/editing-0/contenteditable/user-interaction-editing-contenteditable.html
@@ -53,6 +53,16 @@
         el.contentEditable = "true";
         el.removeAttribute("contenteditable");
       }, 'set contentEditable = "true" and then remove contenteditable attribute', false, "inherit");
+
+      testContentEditable(el => {
+        el.setAttribute("contenteditable", "plaintext-only");
+      }, "contentEditable=plaintext-only attribute", true, "plaintext-only");
+
+      testContentEditable(el => {
+        const parent = document.createElement("div");
+        parent.appendChild(el);
+        parent.contentEditable = "plaintext-only";
+      }, 'set parent element contentEditable = "plaintext-only"', true, "inherit");
     </script>
   </body>
 </html>