summaryrefslogtreecommitdiffstats
path: root/dom/html/test/forms/test_input_datetime_reset_default_value_input_change_event.html
blob: 393de9fdeed937cd4626abeaa35c4a28f4889a63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<!DOCTYPE HTML>
<html>
<!--
  https://bugzilla.mozilla.org/show_bug.cgi?id=1446722
-->
<head>
<title>Test for bug 1446722</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<script type="application/javascript" src="utils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1446722">Mozilla bug 1446722</a>
<p id="display"></p>
<div id="content">
<form>
<input type="time" id="input_time" value="10:30" onchange="++numberChangeEvents"
                                                 oninput="++numberInputEvents">
<input type="date" id="input_date" value="2012-05-06" onchange="++numberChangeEvents"
                                                      oninput="++numberInputEvents">
<input type="time" id="input_time2" value="11:30" onchange="++numberChangeEvents"
                                                  oninput="++numberInputEvents">
<input type="date" id="input_date2" value="2014-07-08"
                                    onchange="++numberChangeEvents"
                                    oninput="++numberInputEvents">
<input type="time" id="input_time3" value="12:30" onchange="++numberChangeEvents"
                                                  oninput="++numberInputEvents">
<input type="date" id="input_date3" value="2014-08-09"
                                    onchange="++numberChangeEvents"
                                    oninput="++numberInputEvents">
<input type="reset" id="input_reset">
</form>
</div>
<pre id="test">
<script class="testbody" type="application/javascript">

/**
 * Test for bug 1446722.
 *
 * Test change and input events are fired for date and time inputs when the
 * default value is reset from the date UI and the time UI.
 * Test they are not fired when the value is changed via a script.
 * Test clicking the reset button of a form does not fire these events.
 **/

const INPUT_FIELD_ID_PREFIX = "input_";

var numberChangeEvents = 0;
var numberInputEvents = 0;

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(function() {
  test_reset_in_script_does_not_trigger_change_and_input_event(
    "time2", numberChangeEvents, numberInputEvents);
  test_reset_in_script_does_not_trigger_change_and_input_event(
    "date2", numberChangeEvents, numberInputEvents);

  test_reset_form_does_not_trigger_change_and_input_events("time3", "14:00",
    numberChangeEvents, numberInputEvents);
  test_reset_form_does_not_trigger_change_and_input_events("date3", "2016-01-01",
    numberChangeEvents, numberInputEvents);

  SimpleTest.finish();
});

function test_reset_in_script_does_not_trigger_change_and_input_event(
  inputFieldIdSuffix, oldNumberChangeEvents, oldNumberInputEvents) {
  const inputFieldName = INPUT_FIELD_ID_PREFIX + inputFieldIdSuffix;
  var input = document.getElementById(inputFieldName);

  is(input.value, input.defaultValue,
    "Check " + inputFieldName + "'s default value is initialized correctly.");
  is(numberChangeEvents, oldNumberChangeEvents,
    "Check numberChangeEvents is initialized correctly for " + inputFieldName +
  ".");
  is(numberInputEvents, oldNumberInputEvents,
    "Check numberInputEvents is initialized correctly for " + inputFieldName +
    ".");

  input.value = "";

  is(numberChangeEvents, oldNumberChangeEvents,
    "Change event should not be dispatched for " + inputFieldName + ".");
  is(numberInputEvents, oldNumberInputEvents,
    "Input event should not be dispatched for " + inputFieldName + ".");
}

function test_reset_form_does_not_trigger_change_and_input_events(
  inputFieldIdSuffix, newValue, oldNumberChangeEvents, oldNumberInputEvents) {
  const inputFieldName = INPUT_FIELD_ID_PREFIX + inputFieldIdSuffix;
  const inputFieldResetButtonName = "input_reset";
  var input = document.getElementById(inputFieldName);

  is(input.value, input.defaultValue,
    "Check " + inputFieldName + "'s default value is initialized correctly.");
  isnot(input.defaultValue, newValue, "Check default value differs from newValue for " +
    inputFieldName + ".");
  is(numberChangeEvents, oldNumberChangeEvents,
    "Check numberChangeEvents is initialized correctly for " + inputFieldName +
  ".");
  is(numberInputEvents, oldNumberInputEvents,
    "Check numberInputEvents is initialized correctly for " + inputFieldName +
    ".");

  input.value = newValue;

  var resetButton = document.getElementById(inputFieldResetButtonName);
  synthesizeMouseAtCenter(resetButton, {});

  is(input.value, input.defaultValue, "Check value is reset to default for " +
    inputFieldName + ".");
  is(numberChangeEvents, oldNumberChangeEvents,
    "Change event should not be dispatched for " + inputFieldResetButtonName + ".");
  is(numberInputEvents, oldNumberInputEvents,
    "Input event should not be dispatched for " + inputFieldResetButtonName + ".");
}

</script>
</pre>
</body>
</html>