<!DOCTYPE html>
<head>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
</head>
<body>
  <script>
    var t = async_test("navigator.cookieEnabled behavior on frames without cookie access");
    window.onmessage = t.step_func_done(ev => {
      // Surprisingly, the legacy behavior here is to return true; this actually
      // does match the spec definition since false is supposed to be returned
      // when a document.cookie write is ignored --- and here it would throw
      // a security exception, not be ignored.
      assert_true(ev.data);
    });

    t.step(() => {
      var iframe = document.createElement("iframe");
      iframe.sandbox = "allow-scripts";
      iframe.srcdoc = "<scr" + "ipt>" +
            "window.onmessage = function() {" +
            "  parent.postMessage(navigator.cookieEnabled, '*'); " +
            "}</scr" + "ipt>";
      iframe.onload = function() {
        iframe.contentWindow.postMessage({}, "*");
      }
      document.body.appendChild(iframe);
    });
  </script>
</body>
