<!DOCTYPE html>
<html>
 <head>
  <title>Editing: spellcheck attribute test</title>
  <link rel="author" title="Baidu" href="mailto: guopengcheng@baidu.com"/>
  <link rel="help" href="https://html.spec.whatwg.org/multipage/#spelling-and-grammar-checking"/>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
  <div id="log"></div>
  <textarea id="testText1" spellcheck="true">Test textarea with spellcheck is true</textarea>
  <textarea id="testText2" spellcheck="false">Test textarea with spellcheck is false</textarea>
  <script type="text/javascript">
   test(function() {
    assert_true(document.getElementById("testText1").spellcheck, "check for testText1 spellcheck value");
    assert_false(document.getElementById("testText2").spellcheck, "check for testText2 spellcheck value");
   }, "Getting spellcheck IDL attribute");
   test(function() {
    var testElement = document.createElement("testElement");
    testElement.contentEditable = true;
    testElement.spellcheck = true;
    assert_true(testElement.spellcheck, "check for testElement.spellcheck value");
    assert_equals(testElement.getAttribute("spellcheck"), "true");
   }, "Setting spellcheck IDL attribute to true");
   test(function() {
    var testElement = document.createElement("testElement");
    testElement.contentEditable = true;
    testElement.spellcheck = false;
    assert_false(testElement.spellcheck, "check for testText2 spellcheck value");
    assert_equals(testElement.getAttribute("spellcheck"), "false");
   }, "Setting spellcheck IDL attribute to false");
  </script>
 </body>
</html>
