Mercurial > ambnews-firefox
annotate ambnews/content/ambnews.js @ 8:81c076c6020c
Added a TODO file.
| author | Atul Varma <varmaa@toolness.com> |
|---|---|
| date | Thu, 21 Aug 2008 18:20:13 -0700 |
| parents | 8cafc4c42c29 |
| children | f07bf657f483 |
| rev | line source |
|---|---|
| 1 | 1 var AmbNews = { |
| 2 url: function url(spec) { | |
| 3 if (typeof(spec) != "string") | |
| 4 // Assume that a URI object was passed in, so just return it back. | |
| 5 return spec; | |
| 6 var classObj = Components.classes["@mozilla.org/network/io-service;1"]; | |
| 7 var ios = classObj.getService(Components.interfaces.nsIIOService); | |
| 8 return ios.newURI(spec, null, null); | |
| 9 }, | |
| 10 getFeed: function AmbNews_getFeed(url, callback) { | |
| 11 function onXml(text) { | |
| 12 var feed = null; | |
| 13 if (text) { | |
| 14 var resultListener = { | |
| 15 handleResult: function resultListener_handleResult(aResult) { | |
| 16 feed = {}; | |
| 17 var nsIFeed = aResult.doc; | |
| 18 var Ci = Components.interfaces; | |
| 19 nsIFeed.QueryInterface(Ci.nsIFeed); | |
| 20 feed.link = nsIFeed.link; | |
| 21 feed.title = nsIFeed.title; | |
| 22 feed.entries = []; | |
| 23 for (var i = 0; i < nsIFeed.items.length; i++) { | |
| 24 var item = nsIFeed.items.queryElementAt(i, Ci.nsIFeedEntry); | |
| 25 feed.entries.push(item); | |
| 26 } | |
| 27 } | |
| 28 }; | |
| 29 var fp = AmbNews.__getFeedProcessor(); | |
| 30 fp.listener = resultListener; | |
| 31 fp.parseFromString(text, AmbNews.url(url)); | |
| 32 } | |
| 33 callback(feed); | |
| 34 } | |
| 35 AmbNews.__getXml(url, onXml); | |
| 36 }, | |
| 37 __getXml: function AmbNews_getXml(url, callback) { | |
| 38 var feedUrl = AmbNews.url(url); | |
| 39 var annSvc = AmbNews.__getAnnSvc(); | |
| 40 | |
|
5
8cafc4c42c29
Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents:
4
diff
changeset
|
41 if (annSvc.pageHasAnnotation(feedUrl, "ambnews/feed-xml")) { |
|
8cafc4c42c29
Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents:
4
diff
changeset
|
42 var xml = annSvc.getPageAnnotation(feedUrl, "ambnews/feed-xml"); |
| 1 | 43 // TODO: Perhaps re-enable this, but only let it live for a |
| 44 // few minutes? | |
| 45 //callback(xml); | |
| 46 //return; | |
| 47 } | |
| 48 | |
| 49 var request = new XMLHttpRequest(); | |
| 50 request.open("GET", url, true); | |
| 51 | |
| 52 var onRscFunc = function getXml_onReadyStateChange() { | |
| 53 if (request.readyState == 4) { | |
| 54 if (request.status == 200) { | |
| 55 if (request.responseText) { | |
| 56 annSvc.setPageAnnotation(feedUrl, | |
|
5
8cafc4c42c29
Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents:
4
diff
changeset
|
57 "ambnews/feed-xml", |
| 1 | 58 request.responseText, |
| 59 0, | |
| 60 annSvc.EXPIRE_DAYS); | |
| 61 callback(request.responseText); | |
| 62 } else | |
| 63 callback(""); | |
| 64 } else | |
| 65 callback(""); | |
| 66 } | |
| 67 }; | |
| 68 | |
| 69 request.onreadystatechange = onRscFunc; | |
| 70 request.send(null); | |
| 71 }, | |
| 72 __getFeedProcessor: function AmbNews_getFeedProcessor() { | |
| 73 var Cc = Components.classes; | |
| 74 var Ci = Components.interfaces; | |
| 75 var fp = Cc["@mozilla.org/feed-processor;1"] | |
| 76 .createInstance(Ci.nsIFeedProcessor); | |
| 77 return fp; | |
| 78 }, | |
| 79 __getAnnSvc: function AmbNews_getAnnSvc() { | |
| 80 var Cc = Components.classes; | |
| 81 var annSvc = Cc["@mozilla.org/browser/annotation-service;1"] | |
| 82 .getService(Components.interfaces.nsIAnnotationService); | |
| 83 return annSvc; | |
| 84 }, | |
| 85 onLinkAdded: function AmbNews_onLinkAdded(aEvent) { | |
| 86 if (aEvent.target.rel == "alternate" && | |
| 87 (aEvent.target.type == "application/rss+xml" || | |
| 88 aEvent.target.type == "application/atom+xml")) { | |
| 89 var annSvc = AmbNews.__getAnnSvc(); | |
| 90 var page = AmbNews.url(aEvent.target.baseURI); | |
| 91 var feed = AmbNews.url(aEvent.target.href); | |
|
5
8cafc4c42c29
Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents:
4
diff
changeset
|
92 annSvc.setPageAnnotation(page, "ambnews/feed", |
| 1 | 93 feed.spec, 0, annSvc.EXPIRE_WEEKS); |
| 94 } | |
|
2
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
95 }, |
|
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
96 onLoad: function AmbNews_onLoad(aEvent) { |
|
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
97 if (aEvent.target.baseURI == "about:blank") { |
|
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
98 var doc = aEvent.target; |
|
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
99 doc.defaultView.location = "about:news"; |
|
4
f4b6208eadd5
Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
100 // TODO: The delay here only works most of the time; |
|
f4b6208eadd5
Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
101 // its effectiveness is a race condition and we should |
|
f4b6208eadd5
Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
102 // figure out what even to listen for to actually select |
|
f4b6208eadd5
Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
103 // the URL bar text consistently |
|
f4b6208eadd5
Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents:
3
diff
changeset
|
104 window.setTimeout(function() { gURLBar.select(); }, 50); |
|
2
88b12596346d
Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents:
1
diff
changeset
|
105 } |
| 1 | 106 } |
| 107 }; |
