<!doctype html>
<meta http-equiv="Content-Security-Policy" content="style-src 'nonce-abc' 'report-sample'">
<script nonce="abc" src="/resources/testharness.js"></script>
<script nonce="abc" src="/resources/testharnessreport.js"></script>
<body>
<script nonce="abc">
    function waitForViolation(el) {
      return new Promise(resolve => {
        el.addEventListener('securitypolicyviolation', e => resolve(e));
      });
    }

    async_test(t => {
      var s = document.createElement('style');
      s.innerText = "p { omg: yay !important; }";
      
      waitForViolation(s)
        .then(t.step_func_done(e => {
          assert_equals(e.blockedURI, "inline");
          assert_equals(e.sample, "p { omg: yay !important; }");
        }));     

      document.head.append(s);
    }, "Inline style blocks should have a sample.");

    async_test(t => {
      var p = document.createElement('p');
      p.setAttribute("style", "omg: yay !important;");
      p.innerText = "Yay!";
      
      waitForViolation(p)
        .then(t.step_func_done(e => {
          assert_equals(e.blockedURI, "inline");
          assert_equals(e.sample, "omg: yay !important;");
        }));     

      document.head.append(p);
    }, "Inline style attributes should have a sample.");
</script>
