rem: livemarkLinks.push({ href: event.target.href, type: event.target.type, title: event.target.title}); 
add: var wrapper = new XPCNativeWrapper(event.target, "href", "type", "title");  livemarkLinks.push({ href: wrapper.href, type: wrapper.type, title: wrapper.title}); 
context: function livemarkOnLinkAdded(event){  if (!gLivemarksButton)    gLivemarksButton = document.getElementById("livemark-button");  // from tabbrowser.xml  // mechanism for reading properties of the underlying XPCOM object  // (ignoring potential getters/setters added by malicious content)  var safeGetProperty = function(obj, propname) {    return Components.lookupMethod(obj, propname).call(obj);  }  var etype = event.target.type;  var etitle = event.target.title;  if (etype == "application/rss+xml" ||      etype == "application/atom+xml" ||      etype == "application/x.atom+xml" || // this is, apparently, the "official" Atom type.      etitle == "rss" ||      etitle == "RSS" ||      etitle == "Atom")  {    const targetDoc = safeGetProperty(event.target, "ownerDocument");    // find which tab this is for, and set the attribute on the browser    // should there be a getTabForDocument method on tabbedbrowser?    var browserForLink = null;    if (gBrowser.mTabbedMode) {      // var browserIndex = gBrowser.getBrowserIndexForDocument(targetDoc);      // if (browserIndex == -1)      //   return;      // browserForLink = gBrowser.getBrowserAtIndex(browserIndex);      for (var i = 0; i < gBrowser.mPanelContainer.childNodes.length; i++) {        if (gBrowser.mPanelContainer.childNodes[i].contentDocument == targetDoc) {          browserForLink = gBrowser.mPanelContainer.childNodes[i];          break;        }      }    } else if (gBrowser.mCurrentBrowser.contentDocument == targetDoc) {      browserForLink = gBrowser.mCurrentBrowser;    }    if (!browserForLink) {      // ??? this really shouldn't happen..      return;    }    var livemarkLinks = [];    if (browserForLink.livemarkLinks != null) {      livemarkLinks = browserForLink.livemarkLinks;    }    livemarkLinks.push({ href: event.target.href,                         type: event.target.type,                        title: event.target.title});    browserForLink.livemarkLinks = livemarkLinks;    if (browserForLink == gBrowser || browserForLink == gBrowser.mCurrentBrowser)      gLivemarksButton.setAttribute("livemarks", "true");  }}
meta: 10234	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/10234/8e43941de7aed68ab3600a0fc5e6335f445035b1/browser.js/clean/browser/base/content/browser.js