From e57711ecdda0bc6b0763e89c930490e44dd393af Mon Sep 17 00:00:00 2001 From: "reed%reedloden.com" Date: Fri, 4 Apr 2008 09:13:05 +0000 Subject: [PATCH] Bug 426223 - "RSS preview only shows the first Media RSS object" (Removes restriction of one media:content per item) [p=will.guaraldi@pculture.org (Will Guaraldi) r=sayrer a1.9=beltzner] git-svn-id: svn://10.0.0.236/trunk@249600 18797224-902f-48f8-a5cc-f745e15eee43 --- .../components/feeds/src/FeedProcessor.js | 33 ++++++++++++------- .../feeds/test/xml/rss2/mrss_content.xml | 2 +- .../test/xml/rss2/mrss_content_multiple.xml | 23 +++++++++++++ 3 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content_multiple.xml diff --git a/mozilla/toolkit/components/feeds/src/FeedProcessor.js b/mozilla/toolkit/components/feeds/src/FeedProcessor.js index 664f782de06..94130a3df1d 100644 --- a/mozilla/toolkit/components/feeds/src/FeedProcessor.js +++ b/mozilla/toolkit/components/feeds/src/FeedProcessor.js @@ -586,20 +586,29 @@ Entry.prototype = { }, _mediacontentToEnclosures: function Entry_mediacontentToEnclosures() { - var mc = this.fields.getPropertyAsInterface("mediacontent", Ci.nsIPropertyBag2); + var mediacontent = this.fields.getPropertyAsInterface("mediacontent", Ci.nsIArray); - if (!(mc.getProperty("url"))) - return; + for (var i = 0; i < mediacontent.length; ++i) { + var contentElement = mediacontent.queryElementAt(i, Ci.nsIWritablePropertyBag2); - var enc = Cc[BAG_CONTRACTID].createInstance(Ci.nsIWritablePropertyBag2); + // media:content don't require url, but if it's not there, we should + // skip it. + if (!bagHasKey(contentElement, "url")) + continue; - enc.setPropertyAsAString("url", mc.getPropertyAsAString("url")); - if (bagHasKey(mc, "fileSize")) - enc.setPropertyAsAString("length", mc.getPropertyAsAString("fileSize")); - if (bagHasKey(mc, "type")) - enc.setPropertyAsAString("type", mc.getPropertyAsAString("type")); - - this._addToEnclosures(enc); + var enc = Cc[BAG_CONTRACTID].createInstance(Ci.nsIWritablePropertyBag2); + + // copy media:content bits over to equivalent enclosure bits + enc.setPropertyAsAString("url", contentElement.getPropertyAsAString("url")); + if (bagHasKey(contentElement, "type")) { + enc.setPropertyAsAString("type", contentElement.getPropertyAsAString("type")); + } + if (bagHasKey(contentElement, "fileSize")) { + enc.setPropertyAsAString("length", contentElement.getPropertyAsAString("fileSize")); + } + + this._addToEnclosures(enc); + } }, _mediagroupToEnclosures: function Entry_mediagroupToEnclosures() { @@ -1262,7 +1271,7 @@ function FeedProcessor() { rssAuthor, true), "category": new ElementInfo("categories", null, rssCatTerm, true), "enclosure": new ElementInfo("enclosure", null, null, false), - "media:content": new ElementInfo("mediacontent", null, null, false), + "media:content": new ElementInfo("mediacontent", null, null, true), "media:group": new ElementInfo("mediagroup", null, null, false), "guid": new ElementInfo("guid", null, rssGuid, false) }, diff --git a/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content.xml b/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content.xml index b8c04b60bdb..7b7b38badff 100644 --- a/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content.xml +++ b/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content.xml @@ -2,7 +2,7 @@ diff --git a/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content_multiple.xml b/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content_multiple.xml new file mode 100644 index 00000000000..c391efdd2eb --- /dev/null +++ b/mozilla/toolkit/components/feeds/test/xml/rss2/mrss_content_multiple.xml @@ -0,0 +1,23 @@ + + + + + + + + + +jbb@dallas.example.com (Joe Bob Briggs) +http://example.org +test + +bar + +I'm headed for France. I wasn't gonna go this year, but then last week <a href="http://www.imdb.com/title/tt0086525/">Valley Girl</a> came out and I said to myself, Joe Bob, you gotta get out of the country for a while. Two videos of that. + +