| // Second testPropagatedFunArgs test -- this is a crash-test. |
| (function () { |
| var escapee; |
| |
| function testPropagatedFunArgs() |
| { |
| const magic = 42; |
| |
| var win = this; |
| var res = [], q = []; |
| function addEventListener(name, func, flag) { |
| q.push(func); |
| } |
| |
| var pageInfo = "pageInfo", obs; |
| addEventListener("load", handleLoad, true); |
| |
| var observer = { |
| observe: function(win, topic, data) { |
| // obs.removeObserver(observer, "page-info-dialog-loaded"); |
| handlePageInfo(); |
| } |
| }; |
| |
| function handleLoad() { |
| //pageInfo = { toString: function() { return "pageInfo"; } }; |
| obs = { addObserver: function (obs, topic, data) { obs.observe(win, topic, data); } }; |
| obs.addObserver(observer, "page-info-dialog-loaded", false); |
| } |
| |
| function handlePageInfo() { |
| res.push(pageInfo); |
| function $(aId) { |
| function notSafe() { |
| return magic; |
| } |
| notSafe(); |
| res.push(pageInfo); |
| }; |
| var feedTab = $("feedTab"); |
| } |
| |
| escapee = q[0]; |
| return res.join(','); |
| } |
| |
| testPropagatedFunArgs(); |
| |
| escapee(); |
| })(); |
| |
| function testStringLengthNoTinyId() |
| { |
| var x = "unset"; |
| var t = new String(""); |
| for (var i = 0; i < 5; i++) |
| x = t["-1"]; |
| |
| var r = "t['-1'] is " + x; |
| t["-1"] = "foo"; |
| r += " when unset, '" + t["-1"] + "' when set"; |
| return r; |
| } |
| assertEq(testStringLengthNoTinyId(), "t['-1'] is undefined when unset, 'foo' when set"); |