testStringLengthNoTinyId.js (1474B)
1 // Second testPropagatedFunArgs test -- this is a crash-test. 2 (function () { 3 var escapee; 4 5 function testPropagatedFunArgs() 6 { 7 const magic = 42; 8 9 var win = this; 10 var res = [], q = []; 11 function addEventListener(name, func, flag) { 12 q.push(func); 13 } 14 15 var pageInfo = "pageInfo", obs; 16 addEventListener("load", handleLoad, true); 17 18 var observer = { 19 observe: function(win, topic, data) { 20 // obs.removeObserver(observer, "page-info-dialog-loaded"); 21 handlePageInfo(); 22 } 23 }; 24 25 function handleLoad() { 26 //pageInfo = { toString: function() { return "pageInfo"; } }; 27 obs = { addObserver: function (obs, topic, data) { obs.observe(win, topic, data); } }; 28 obs.addObserver(observer, "page-info-dialog-loaded", false); 29 } 30 31 function handlePageInfo() { 32 res.push(pageInfo); 33 function $(aId) { 34 function notSafe() { 35 return magic; 36 } 37 notSafe(); 38 res.push(pageInfo); 39 }; 40 var feedTab = $("feedTab"); 41 } 42 43 escapee = q[0]; 44 return res.join(','); 45 } 46 47 testPropagatedFunArgs(); 48 49 escapee(); 50 })(); 51 52 function testStringLengthNoTinyId() 53 { 54 var x = "unset"; 55 var t = new String(""); 56 for (var i = 0; i < 5; i++) 57 x = t["-1"]; 58 59 var r = "t['-1'] is " + x; 60 t["-1"] = "foo"; 61 r += " when unset, '" + t["-1"] + "' when set"; 62 return r; 63 } 64 assertEq(testStringLengthNoTinyId(), "t['-1'] is undefined when unset, 'foo' when set");