test_list_style.html (4651B)
1 <html> 2 3 <head> 4 <title>Test hide/show events for HTMLListBulletAccessibles on list restyle</title> 5 <link rel="stylesheet" type="text/css" 6 href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 7 8 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 9 10 <script type="application/javascript" 11 src="../common.js"></script> 12 <script type="application/javascript" 13 src="../name.js"></script> 14 <script type="application/javascript" 15 src="../role.js"></script> 16 <script type="application/javascript" 17 src="../promisified-events.js"></script> 18 19 <script type="application/javascript"> 20 /** 21 * Change list style type to none. 22 */ 23 async function hideBullet() { 24 info("Hide bullet by setting style to none"); 25 26 let liAcc = getAccessible("list_element"); 27 let bullet = liAcc.firstChild; 28 29 let events = waitForEvents([ 30 [EVENT_HIDE, bullet], 31 [EVENT_REORDER, liAcc] 32 ]); 33 34 getNode("list").style.setProperty("list-style-type", "none"); 35 36 await events; 37 38 is(liAcc.name, "list element", 39 "Check that first child of LI is not a bullet."); 40 41 dumpTree("list"); 42 } 43 44 /** 45 * Change list style type to circles. 46 */ 47 async function showBullet() { 48 info("Show bullet by setting style to circle"); 49 let liAcc = getAccessible("list_element"); 50 51 let events = waitForEvents([ 52 [EVENT_SHOW, evt => evt.accessible.parent == liAcc], 53 [EVENT_REORDER, liAcc] 54 ]); 55 56 getNode("list").style.setProperty("list-style-type", "circle"); 57 58 await events; 59 60 is(liAcc.name, "◦ list element", 61 "Check that first child of LI is a circle bullet."); 62 63 dumpTree("list"); 64 } 65 66 /** 67 * Change list style position. 68 */ 69 async function changeBulletPosition() { 70 info("Change list style position"); 71 let liAcc = getAccessible("list_element"); 72 73 let events = waitForEvents([ 74 [EVENT_HIDE, evt => evt.accessible.role == ROLE_LISTITEM_MARKER], 75 [EVENT_SHOW, evt => evt.accessible.role == ROLE_LISTITEM_MARKER], 76 [EVENT_REORDER, liAcc] 77 ]); 78 79 getNode("list").style.setProperty("list-style-position", "inside"); 80 81 await events; 82 83 is(liAcc.name, "◦ list element", 84 "Check that first child of LI is a circle bullet."); 85 } 86 87 async function changeBulletPositionAndType() { 88 let events = waitForEvents([ 89 [EVENT_HIDE, evt => evt.accessible.role == ROLE_LISTITEM_MARKER], 90 [EVENT_REORDER, evt => evt.accessible.role == ROLE_LISTITEM] 91 ]); 92 93 let list = getNode("inside-marker-list"); 94 95 // Bug 1513447 - This changes the list type to "none" and the 96 // position implicitly to "outside". 97 list.style.setProperty("list-style", "none"); 98 list.offsetLeft 99 list.style.setProperty("list-style-type", "telugu"); 100 101 await events; 102 } 103 104 async function doTest() { 105 106 testAccessibleTree("list", { LIST: [ // ol 107 { LISTITEM: [ // li 108 { LISTITEM_MARKER: [ ] }, 109 { TEXT_LEAF: [] }, 110 ] }, 111 ] } ); 112 113 await hideBullet(); 114 115 testAccessibleTree("list", { LIST: [ // ol 116 { LISTITEM: [ // li 117 { TEXT_LEAF: [] }, 118 ] }, 119 ] } ); 120 121 await showBullet(); 122 123 testAccessibleTree("list", { LIST: [ // ol 124 { LISTITEM: [ // li 125 { LISTITEM_MARKER: [ ] }, 126 { TEXT_LEAF: [] }, 127 ] }, 128 ] } ); 129 130 await changeBulletPosition(); 131 132 testAccessibleTree("list", { LIST: [ // ol 133 { LISTITEM: [ // li 134 { LISTITEM_MARKER: [ ] }, 135 { TEXT_LEAF: [] }, 136 ] }, 137 ] } ); 138 139 testAccessibleTree("unmarked-list", { LIST: [ // ol 140 { LISTITEM: [ // li 141 { TEXT_LEAF: [] }, 142 ] }, 143 ] } ); 144 145 await changeBulletPositionAndType(); 146 147 SimpleTest.finish(); 148 } 149 150 SimpleTest.waitForExplicitFinish(); 151 addA11yLoadEvent(doTest); 152 </script> 153 154 </head> 155 156 <body> 157 158 <a target="_blank" 159 href="https://bugzilla.mozilla.org/show_bug.cgi?id=1100602" 160 title="[e10s] crash in mozilla::a11y::ProxyAccessible::Shutdown()"> 161 Mozilla Bug 1100602 162 </a> 163 <p id="display"></p> 164 <div id="content" style="display: none"></div> 165 <pre id="test"> 166 </pre> 167 168 <ol id="list" style="list-style-type: circle;"> 169 <li id="list_element">list element</li> 170 </ol> 171 172 <ol id="unmarked-list" style="list-style: none;"> 173 <li>list element</li> 174 </ol> 175 176 <ol id="inside-marker-list" style="list-style-position: inside;"> 177 <li>list element</li> 178 </ol> 179 180 </body> 181 </html>