annotate ambnews/content/ambnews.js @ 11:f259d52d361e

Added tri-license headers to JS files.
author Atul Varma <varmaa@toolness.com>
date Fri, 22 Aug 2008 11:09:56 -0700
parents f07bf657f483
children fe30d1d71ee5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
1 /* ***** BEGIN LICENSE BLOCK *****
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
3 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
4 * The contents of this file are subject to the Mozilla Public License Version
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
5 * 1.1 (the "License"); you may not use this file except in compliance with
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
6 * the License. You may obtain a copy of the License at
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
7 * http://www.mozilla.org/MPL/
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
8 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
9 * Software distributed under the License is distributed on an "AS IS" basis,
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
11 * for the specific language governing rights and limitations under the
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
12 * License.
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
13 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
14 * The Original Code is Ambient News.
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
15 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
16 * The Initial Developer of the Original Code is Mozilla.
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
17 * Portions created by the Initial Developer are Copyright (C) 2007
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
18 * the Initial Developer. All Rights Reserved.
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
19 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
20 * Contributor(s):
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
21 * Atul Varma <avarma@mozilla.com>
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
22 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
23 * Alternatively, the contents of this file may be used under the terms of
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
26 * in which case the provisions of the GPL or the LGPL are applicable instead
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
27 * of those above. If you wish to allow use of your version of this file only
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
28 * under the terms of either the GPL or the LGPL, and not to allow others to
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
29 * use your version of this file under the terms of the MPL, indicate your
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
30 * decision by deleting the provisions above and replace them with the notice
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
31 * and other provisions required by the GPL or the LGPL. If you do not delete
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
32 * the provisions above, a recipient may use your version of this file under
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
33 * the terms of any one of the MPL, the GPL or the LGPL.
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
34 *
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
35 * ***** END LICENSE BLOCK ***** */
f259d52d361e Added tri-license headers to JS files.
Atul Varma <varmaa@toolness.com>
parents: 10
diff changeset
36
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 var AmbNews = {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 url: function url(spec) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 if (typeof(spec) != "string")
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 // Assume that a URI object was passed in, so just return it back.
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 return spec;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 var classObj = Components.classes["@mozilla.org/network/io-service;1"];
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 var ios = classObj.getService(Components.interfaces.nsIIOService);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 return ios.newURI(spec, null, null);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 getFeed: function AmbNews_getFeed(url, callback) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 function onXml(text) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 var feed = null;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 if (text) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 var resultListener = {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 handleResult: function resultListener_handleResult(aResult) {
10
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
52 var nsIFeed = aResult.doc;
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
53 if (!nsIFeed)
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
54 return;
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 feed = {};
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 var Ci = Components.interfaces;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 nsIFeed.QueryInterface(Ci.nsIFeed);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 feed.link = nsIFeed.link;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 feed.title = nsIFeed.title;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 feed.entries = [];
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 for (var i = 0; i < nsIFeed.items.length; i++) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 var item = nsIFeed.items.queryElementAt(i, Ci.nsIFeedEntry);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 feed.entries.push(item);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 };
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 var fp = AmbNews.__getFeedProcessor();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 fp.listener = resultListener;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 fp.parseFromString(text, AmbNews.url(url));
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 callback(feed);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73 AmbNews.__getXml(url, onXml);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 __getXml: function AmbNews_getXml(url, callback) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76 var feedUrl = AmbNews.url(url);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77 var annSvc = AmbNews.__getAnnSvc();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78
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
79 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
80 var xml = annSvc.getPageAnnotation(feedUrl, "ambnews/feed-xml");
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 // TODO: Perhaps re-enable this, but only let it live for a
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 // few minutes?
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 //callback(xml);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 //return;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 var request = new XMLHttpRequest();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 request.open("GET", url, true);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 var onRscFunc = function getXml_onReadyStateChange() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 if (request.readyState == 4) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 if (request.status == 200) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
93 if (request.responseText) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
94 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
95 "ambnews/feed-xml",
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 request.responseText,
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
97 0,
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
98 annSvc.EXPIRE_DAYS);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
99 callback(request.responseText);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
100 } else
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
101 callback("");
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
102 } else
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
103 callback("");
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
104 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105 };
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
106
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107 request.onreadystatechange = onRscFunc;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 request.send(null);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
110 __getFeedProcessor: function AmbNews_getFeedProcessor() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
111 var Cc = Components.classes;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
112 var Ci = Components.interfaces;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113 var fp = Cc["@mozilla.org/feed-processor;1"]
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
114 .createInstance(Ci.nsIFeedProcessor);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
115 return fp;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
116 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 __getAnnSvc: function AmbNews_getAnnSvc() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 var Cc = Components.classes;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119 var annSvc = Cc["@mozilla.org/browser/annotation-service;1"]
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120 .getService(Components.interfaces.nsIAnnotationService);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
121 return annSvc;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
122 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
123 onLinkAdded: function AmbNews_onLinkAdded(aEvent) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
124 if (aEvent.target.rel == "alternate" &&
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
125 (aEvent.target.type == "application/rss+xml" ||
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
126 aEvent.target.type == "application/atom+xml")) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
127 var annSvc = AmbNews.__getAnnSvc();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
128 var page = AmbNews.url(aEvent.target.baseURI);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
129 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
130 annSvc.setPageAnnotation(page, "ambnews/feed",
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
131 feed.spec, 0, annSvc.EXPIRE_WEEKS);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
132 }
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
133 },
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
134 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
135 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
136 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
137 doc.defaultView.location = "about:news";
4
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
138 // 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
139 // 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
140 // 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
141 // the URL bar text consistently
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
142 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
143 }
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
144 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
145 };