test_proxy_missing_prop.html (1311B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1863543 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1863543</title> 9 <script src="/tests/SimpleTest/SimpleTest.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=1863543">Mozilla Bug 1863543</a> 14 <p id="display"></p> 15 <pre id="test"> 16 <script> 17 // Test for JIT IC guards for missing properties on the HTMLDocument DOM proxy. 18 function testMissingProps() { 19 var doc = document; 20 var docProto = Object.getPrototypeOf(doc); 21 22 for (var i = 0; i < 30; i++) { 23 if (i === 15) { 24 // Add shadowing expando property. 25 doc.unusedPropName1 = 12; 26 } 27 if (i === 20) { 28 // Add prototype property. 29 docProto.unusedPropName2 = 34; 30 } 31 if (i == 25) { 32 // Add shadowing element. 33 var el = document.createElement("object"); 34 el.id = "unusedPropName3"; 35 document.body.appendChild(el); 36 } 37 var v1 = doc.unusedPropName1; 38 var v2 = doc.unusedPropName2; 39 var v3 = doc.unusedPropName3; 40 is(v1, i >= 15 ? 12 : undefined); 41 is(v2, i >= 20 ? 34 : undefined); 42 is(v3, i >= 25 ? el : undefined); 43 } 44 } 45 testMissingProps(); 46 </script> 47 </pre> 48 </body> 49 </html>