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