test_input_list_attribute.html (5914B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=556007 5 --> 6 <head> 7 <title>Test for Bug 556007</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=556007">Mozilla Bug 556007</a> 13 <p id="display"></p> 14 <div id="content" style="display: none"> 15 </div> 16 <pre id="test"> 17 <script type="application/javascript"> 18 19 /** Test for Bug 556007 */ 20 21 function test0() { 22 var input = document.createElement("input"); 23 ok("list" in input, "list should be an input element IDL attribute"); 24 } 25 26 // Default .list returns null. 27 function test1(aContent, aInput) { 28 return null; 29 } 30 31 // Regular test case. 32 function test2(aContent, aInput) { 33 var datalist = document.createElement("datalist"); 34 datalist.id = 'd'; 35 36 aContent.appendChild(aInput); 37 aContent.appendChild(datalist); 38 aInput.setAttribute('list', 'd'); 39 40 return datalist; 41 } 42 43 // If none of the element is in doc. 44 function test3(aContent, aInput) { 45 var datalist = document.createElement("datalist"); 46 datalist.id = 'd'; 47 48 aInput.setAttribute('list', 'd'); 49 50 return null; 51 } 52 53 // If one of the element isn't in doc. 54 function test4(aContent, aInput) { 55 var datalist = document.createElement("datalist"); 56 datalist.id = 'd'; 57 58 aContent.appendChild(aInput); 59 aInput.setAttribute('list', 'd'); 60 61 return null; 62 } 63 64 // If one of the element isn't in doc. 65 function test5(aContent, aInput) { 66 var datalist = document.createElement("datalist"); 67 datalist.id = 'd'; 68 69 aContent.appendChild(datalist); 70 aInput.setAttribute('list', 'd'); 71 72 return null; 73 } 74 75 // If datalist is added before input. 76 function test6(aContent, aInput) { 77 var datalist = document.createElement("datalist"); 78 datalist.id = 'd'; 79 80 aContent.appendChild(datalist); 81 aContent.appendChild(aInput); 82 aInput.setAttribute('list', 'd'); 83 84 return datalist; 85 } 86 87 // If setAttribute is set before datalist and input are in doc. 88 function test7(aContent, aInput) { 89 var datalist = document.createElement("datalist"); 90 datalist.id = 'd'; 91 92 aInput.setAttribute('list', 'd'); 93 94 aContent.appendChild(datalist); 95 aContent.appendChild(aInput); 96 97 return datalist; 98 } 99 100 // If setAttribute is set before datalist is in doc. 101 function test8(aContent, aInput) { 102 var datalist = document.createElement("datalist"); 103 datalist.id = 'd'; 104 105 aContent.appendChild(aInput); 106 aInput.setAttribute('list', 'd'); 107 108 aContent.appendChild(datalist); 109 110 return datalist; 111 } 112 113 // If setAttribute is set before datalist is created. 114 function test9(aContent, aInput) { 115 aContent.appendChild(aInput); 116 aInput.setAttribute('list', 'd'); 117 118 var datalist = document.createElement("datalist"); 119 datalist.id = 'd'; 120 aContent.appendChild(datalist); 121 122 return datalist; 123 } 124 125 // If another datalist is added _after_ the first one, with the same id. 126 function test10(aContent, aInput) { 127 var datalist = document.createElement("datalist"); 128 datalist.id = 'd'; 129 var datalist2 = document.createElement("datalist"); 130 datalist2.id = 'd'; 131 132 aInput.setAttribute('list', 'd'); 133 aContent.appendChild(aInput); 134 aContent.appendChild(datalist); 135 aContent.appendChild(datalist2); 136 137 return datalist; 138 } 139 140 // If another datalist is added _before_ the first one with the same id. 141 function test11(aContent, aInput) { 142 var datalist = document.createElement("datalist"); 143 datalist.id = 'd'; 144 var datalist2 = document.createElement("datalist"); 145 datalist2.id = 'd'; 146 147 aInput.setAttribute('list', 'd'); 148 aContent.appendChild(aInput); 149 aContent.appendChild(datalist); 150 aContent.insertBefore(datalist2, datalist); 151 152 return datalist2; 153 } 154 155 // If datalist changes it's id. 156 function test12(aContent, aInput) { 157 var datalist = document.createElement("datalist"); 158 datalist.id = 'd'; 159 160 aInput.setAttribute('list', 'd'); 161 aContent.appendChild(aInput); 162 aContent.appendChild(datalist); 163 164 datalist.id = 'foo'; 165 166 return null; 167 } 168 169 // If datalist is removed. 170 function test13(aContent, aInput) { 171 var datalist = document.createElement("datalist"); 172 datalist.id = 'd'; 173 174 aInput.setAttribute('list', 'd'); 175 aContent.appendChild(aInput); 176 aContent.appendChild(datalist); 177 aContent.removeChild(datalist); 178 179 return null; 180 } 181 182 // If id contain spaces. 183 function test14(aContent, aInput) { 184 var datalist = document.createElement("datalist"); 185 datalist.id = 'a b c d'; 186 187 aInput.setAttribute('list', 'a b c d'); 188 aContent.appendChild(aInput); 189 aContent.appendChild(datalist); 190 191 return datalist; 192 } 193 194 // If id is the empty string. 195 function test15(aContent, aInput) { 196 var datalist = document.createElement("datalist"); 197 datalist.id = ''; 198 199 aInput.setAttribute('list', ''); 200 aContent.appendChild(aInput); 201 aContent.appendChild(datalist); 202 203 return null; 204 } 205 206 // If the id doesn't point to a datalist. 207 function test16(aContent, aInput) { 208 var input = document.createElement("input"); 209 input.id = 'd'; 210 211 aInput.setAttribute('list', 'd'); 212 aContent.appendChild(aInput); 213 aContent.appendChild(input); 214 215 return null; 216 } 217 218 // If the first element with the id isn't a datalist. 219 function test17(aContent, aInput) { 220 var input = document.createElement("input"); 221 input.id = 'd'; 222 var datalist = document.createElement("datalist"); 223 datalist.id = 'd'; 224 225 aInput.setAttribute('list', 'd'); 226 aContent.appendChild(aInput); 227 aContent.appendChild(input); 228 aContent.appendChild(datalist); 229 230 return null; 231 } 232 233 var tests = [ test1, test2, test3, test4, test5, test6, test7, test8, test9, 234 test10, test11, test12, test13, test14, test15, test16, test17 ]; 235 236 test0(); 237 238 for (var test of tests) { 239 var content = document.getElementById('content'); 240 241 // Clean-up. 242 content.textContent = ''; 243 244 var input = document.createElement("input"); 245 var res = test(content, input); 246 247 is(input.list, res, "input.list should be " + res); 248 } 249 250 </script> 251 </pre> 252 </body> 253 </html>