test_bug557087-1.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <!DOCTYPE HTML>
  2. <html>
  3. <!--
  4. https://bugzilla.mozilla.org/show_bug.cgi?id=557087
  5. -->
  6. <head>
  7. <title>Test for Bug 557087</title>
  8. <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  9. <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  10. <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  11. </head>
  12. <body>
  13. <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=557087">Mozilla Bug 557087</a>
  14. <p id="display"></p>
  15. <div id="content">
  16. </div>
  17. <pre id="test">
  18. <script type="application/javascript">
  19. /** Test for Bug 557087 **/
  20. function checkDisabledAttribute(aFieldset)
  21. {
  22. ok('disabled' in aFieldset,
  23. "fieldset elements should have the disabled attribute");
  24. ok(!aFieldset.disabled,
  25. "fieldset elements disabled attribute should be disabled");
  26. is(aFieldset.getAttribute('disabled'), null,
  27. "fieldset elements disabled attribute should be disabled");
  28. aFieldset.disabled = true;
  29. ok(aFieldset.disabled,
  30. "fieldset elements disabled attribute should be enabled");
  31. isnot(aFieldset.getAttribute('disabled'), null,
  32. "fieldset elements disabled attribute should be enabled");
  33. aFieldset.removeAttribute('disabled');
  34. aFieldset.setAttribute('disabled', '');
  35. ok(aFieldset.disabled,
  36. "fieldset elements disabled attribute should be enabled");
  37. isnot(aFieldset.getAttribute('disabled'), null,
  38. "fieldset elements disabled attribute should be enabled");
  39. aFieldset.removeAttribute('disabled');
  40. ok(!aFieldset.disabled,
  41. "fieldset elements disabled attribute should be disabled");
  42. is(aFieldset.getAttribute('disabled'), null,
  43. "fieldset elements disabled attribute should be disabled");
  44. }
  45. function checkDisabledPseudoClass(aFieldset)
  46. {
  47. is(document.querySelector(":disabled"), null,
  48. "no elements should have :disabled applied to them");
  49. aFieldset.disabled = true;
  50. is(document.querySelector(":disabled"), aFieldset,
  51. ":disabled should apply to fieldset elements");
  52. aFieldset.disabled = false;
  53. is(document.querySelector(":disabled"), null,
  54. "no elements should have :disabled applied to them");
  55. }
  56. function checkEnabledPseudoClass(aFieldset)
  57. {
  58. is(document.querySelector(":enabled"), aFieldset,
  59. ":enabled should apply to fieldset elements");
  60. aFieldset.disabled = true;
  61. is(document.querySelector(":enabled"), null,
  62. "no elements should have :enabled applied to them");
  63. aFieldset.disabled = false;
  64. is(document.querySelector(":enabled"), aFieldset,
  65. ":enabled should apply to fieldset elements");
  66. }
  67. function checkFocus(aFieldset)
  68. {
  69. aFieldset.disabled = true;
  70. aFieldset.setAttribute('tabindex', 1);
  71. aFieldset.focus();
  72. isnot(document.activeElement, aFieldset,
  73. "fieldset can't be focused when disabled");
  74. aFieldset.removeAttribute('tabindex');
  75. aFieldset.disabled = false;
  76. }
  77. function checkClickEvent(aFieldset)
  78. {
  79. var clickHandled = false;
  80. aFieldset.disabled = true;
  81. aFieldset.addEventListener("click", function(aEvent) {
  82. aEvent.target.removeEventListener("click", arguments.callee, false);
  83. clickHandled = true;
  84. }, false);
  85. sendMouseEvent({type:'click'}, aFieldset);
  86. SimpleTest.executeSoon(function() {
  87. ok(!clickHandled, "When disabled, fieldset should prevent click events");
  88. SimpleTest.finish();
  89. });
  90. }
  91. SimpleTest.waitForExplicitFinish();
  92. var fieldset = document.createElement("fieldset");
  93. var content = document.getElementById('content');
  94. content.appendChild(fieldset);
  95. checkDisabledAttribute(fieldset);
  96. checkDisabledPseudoClass(fieldset);
  97. checkEnabledPseudoClass(fieldset);
  98. checkFocus(fieldset);
  99. checkClickEvent(fieldset);
  100. </script>
  101. </pre>
  102. </body>
  103. </html>