function testPropagatedFunArgs() { var win = this; var res = [], q = []; function addEventListener(name, func, flag) { q.push(func); } var 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) { res.push(pageInfo); }; var feedTab = $("feedTab"); } q[0](); return res.join(','); } assertEq(testPropagatedFunArgs(), "pageInfo,pageInfo");