summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/chrome/test_props.xhtml
blob: 6fcee902705ff0c42a81499ca4b3791cef4a564d (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
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<!--
  XUL Widget Test for basic properties - this test checks that the basic
  properties defined in general.js and inherited by a number of elements
  work properly.
  -->
<window title="Basic Properties Test"
        onload="setTimeout(test_props, 0);"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>

<command id="cmd_nothing"/>
<command id="cmd_action"/>

<button id="button" label="Button" accesskey="B"
        crop="end" image="happy.png" command="cmd_nothing"/>
<checkbox id="checkbox" label="Checkbox" accesskey="B"
          crop="end" image="happy.png" command="cmd_nothing"/>
<radiogroup>
  <radio id="radio" label="Radio Button" value="rb1" accesskey="B"
         crop="end" image="happy.png" command="cmd_nothing"/>
</radiogroup>

  <!-- test results are displayed in the html:body -->
  <body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>

  <!-- test code goes here -->
  <script type="application/javascript"><![CDATA[

SimpleTest.waitForExplicitFinish();

function test_props()
{
  test_props_forelement($("button"), "Button", null);
  test_props_forelement($("checkbox"), "Checkbox", null);
  test_props_forelement($("radio"), "Radio Button", "rb1");

  SimpleTest.finish();
}

function test_props_forelement(element, label, value)
{
  // check the initial values
  is(element.label, label, "element label");
  if (value)
    is(element.value, value, "element value");
  is(element.accessKey, "B", "element accessKey");
  is(element.image, "happy.png", "element image");
  is(element.command, "cmd_nothing", "element command");
  ok(element.tabIndex === 0, "element tabIndex");

  synthesizeMouseExpectEvent(element, 4, 4, { }, $("cmd_nothing"), "command", "element");

  // make sure that setters return the value
  is(element.label = "Label", "Label", "element label setter return");
  if (value)
    is(element.value = "lb", "lb", "element value setter return");
  is(element.accessKey = "L", "L", "element accessKey setter return");
  is(element.image = "sad.png", "sad.png", "element image setter return");
  is(element.command = "cmd_action", "cmd_action", "element command setter return");

  // check the value after it was changed
  is(element.label, "Label", "element label after set");
  if (value)
    is(element.value, "lb", "element value after set");
  is(element.accessKey, "L", "element accessKey after set");
  is(element.image, "sad.png", "element image after set");
  is(element.command, "cmd_action", "element command after set");

  synthesizeMouseExpectEvent(element, 4, 4, { }, $("cmd_action"), "command", "element");

  // check that clicks on disabled items don't fire a command event
  // eslint-disable-next-line no-constant-binary-expression
  ok((element.disabled = true) === true, "element disabled setter return");
  ok(element.disabled === true, "element disabled after set");
  synthesizeMouseExpectEvent(element, 4, 4, { }, $("cmd_action"), "!command", "element");

  element.disabled = false;
}

]]>
</script>

</window>