<!DOCTYPE html>
<meta charset=utf-8>
<title>input type checkbox</title>
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
<link rel=help href="https://html.spec.whatwg.org/multipage/#checkbox-state-(type=checkbox)">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<input type=checkbox id=checkbox1>
<input type=checkbox id=checkbox2 disabled>
<input type=checkbox id=checkbox3>
<input type=checkbox id=checkbox4 checked>
<input type=checkbox id=checkbox5>
<input type=checkbox id=checkbox6>
<script>
  var checkbox1 = document.getElementById('checkbox1'),
      checkbox2 = document.getElementById('checkbox2'),
      checkbox3 = document.getElementById('checkbox3'),
      checkbox4 = document.getElementById('checkbox4'),
      checkbox5 = document.getElementById('checkbox5'),
      checkbox6 = document.getElementById('checkbox6'),
      c1_input_fired = false, c1_change_fired = false,
      t1 = async_test("click on mutable checkbox fires the input and change events"),
      t2 = async_test("click on non-mutable checkbox doesn't fire the input or change event"),
      t3 = async_test("pre-activation steps on unchecked checkbox"),
      t4 = async_test("pre-activation steps on checked checkbox"),
      t5 = async_test("canceled activation steps on unchecked checkbox"),
      t6 = async_test("canceled activation steps on unchecked checkbox (indeterminate=true in onclick)");

  checkbox1.oninput= t1.step_func(function(e) {
    c1_input_fired = true;
    assert_true(e.bubbles, "event should bubble");
    assert_true(e.isTrusted, "event should be trusted");
    assert_false(e.cancelable, "event shoud not be cancelable");
    assert_true(checkbox1.checked, "checkbox is checked");
    assert_false(checkbox1.indeterminate, "checkbox is not indeterminate");
  });

  checkbox1.onchange = t1.step_func(function(e) {
    c1_change_fired = true;
    assert_true(e.bubbles, "event should bubble")
    assert_true(e.isTrusted, "event should be trusted");
    assert_false(e.cancelable, "event shoud not be cancelable");
    assert_true(checkbox1.checked, "checkbox is checked");
    assert_false(checkbox1.indeterminate, "checkbox is not indeterminate");
  });

  checkbox2.oninput= t2.step_func(function(e) {
    assert_unreached("event input fired");
  });

  checkbox2.onchange = t2.step_func(function(e) {
    assert_unreached("event change fired");
  });

  t1.step(function() {
    checkbox1.click();
    assert_true(c1_input_fired);
    assert_true(c1_change_fired);
    t1.done();
  });

  t2.step(function() {
    checkbox2.click();
    t2.done();
  });

  t3.step(function() {
    checkbox3.indeterminate = true;
    checkbox3.click();
    assert_true(checkbox3.checked);
    assert_false(checkbox3.indeterminate);
    t3.done();
  });

  t4.step(function() {
    checkbox4.indeterminate = true;
    checkbox4.click();
    assert_false(checkbox4.checked);
    assert_false(checkbox4.indeterminate);
    t4.done();
  });

  checkbox5.onclick = t5.step_func(function(e) {
    e.preventDefault();
    assert_false(checkbox5.checked);
    assert_false(checkbox5.indeterminate);
    t5.done();
  });

  t5.step(function(){
    assert_false(checkbox5.checked);
    assert_false(checkbox5.indeterminate);
    checkbox5.click();
  });

  checkbox6.onclick = t6.step_func(function(e) {
    checkbox6.indeterminate = true;
    e.preventDefault();
    assert_false(checkbox6.checked);
    assert_false(checkbox6.indeterminate);
    t6.done();
  });

  t6.step(function(){
    assert_false(checkbox6.checked);
    assert_false(checkbox6.indeterminate);
    checkbox6.click();
  });
</script>
