Attachment #247854: fix gavin's comments for bug #362156

View | Details | Raw Unified | Return to bug 362156
Collapse All | Expand All

(-)browser.js (-17 / +25 lines)
Line     Link Here 
 Lines 5615-5650   var FeedHandler = { Link Here 
5615
    // them to onLinkIconAvailable in the ProgressListener.  We could extend the
5615
    // them to onLinkIconAvailable in the ProgressListener.  We could extend the
5616
    // progress listener to have a generic onLinkAvailable and have tabbrowser pass
5616
    // progress listener to have a generic onLinkAvailable and have tabbrowser pass
5617
    // along all events.  It should give us the browser for the tab, as well as
5617
    // along all events.  It should give us the browser for the tab, as well as
5618
    // the actual event.
5618
    // the actual event.
5619
5619
5620
    var erel = event.target.rel;
5620
    var erel = event.target.rel;
5621
    var etype = event.target.type;
5621
    var etype = event.target.type;
5622
    var etitle = event.target.title;
5622
    var etitle = event.target.title;
5623
    const alternateRelRegex = /(^|\s)alternate($|\s)/i;
5624
    const stylesheetRelRegex = /(^|\s)stylesheet($|\s)/i;
5625
    const rssTitleRegex = /(^|\s)rss($|\s)/i;
5623
    const rssTitleRegex = /(^|\s)rss($|\s)/i;
5626
5624
    var rels = {}
5627
    if (!alternateRelRegex.test(erel) || stylesheetRelRegex.test(erel) ||
5625
    for each (var relValue in erel.split(/\s/)) {
5628
        !etype)
5626
      rels[relValue] = true;
5627
    }
5628
    var isFeed = rels["feed"];
5629
    
5630
    if (!isFeed &&
5631
        (!rels["alternate"] || rels["stylesheet"] || !etype))
5629
      return;
5632
      return;
5630
5633
5631
    etype = etype.replace(/^\s+/, "");
5634
    if (!isFeed) {
5632
    etype = etype.replace(/\s+$/, "");
5635
      // Use type value
5633
    etype = etype.replace(/\s*;.*/, "");
5636
      etype = etype.replace(/^\s+/, "");
5634
    etype = etype.toLowerCase();
5637
      etype = etype.replace(/\s+$/, "");
5635
5638
      etype = etype.replace(/\s*;.*/, "");
5636
    if (etype == "application/rss+xml" ||
5639
      etype = etype.toLowerCase();
5637
        etype == "application/atom+xml" ||
5640
      isFeed = (etype == "application/rss+xml" ||
5638
        (etype == "text/xml" ||
5641
                etype == "application/atom+xml");
5639
         etype == "application/xml" ||
5642
    }
5640
         etype == "application/rdf+xml") &&
5643
    
5641
        rssTitleRegex.test(etitle))
5644
    if (!isFeed) {
5642
    {
5645
      // really slimy: general XML types with magic letters in the title
5646
      isFeed = ((etype == "text/xml" || etype == "application/xml" ||
5647
                 etype == "application/rdf+xml") && rssTitleRegex.test(etitle));
5648
    }
5649
    
5650
    if (isFeed) {
5643
      const targetDoc = event.target.ownerDocument;
5651
      const targetDoc = event.target.ownerDocument;
5644
5652
5645
      // find which tab this is for, and set the attribute on the browser
5653
      // find which tab this is for, and set the attribute on the browser
5646
      var browserForLink = gBrowser.getBrowserForDocument(targetDoc);
5654
      var browserForLink = gBrowser.getBrowserForDocument(targetDoc);
5647
      if (!browserForLink) {
5655
      if (!browserForLink) {
5648
        // ??? this really shouldn't happen..
5656
        // ??? this really shouldn't happen..
5649
        return;
5657
        return;
5650
      }
5658
      }

Return to bug 362156