|
|
|
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 |
} |