1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 chrome
.extension
.onMessage
.addListener(function(request
, sender
) {
6 if (request
.msg
== "feedIcon") {
7 // First validate that all the URLs have the right schema.
9 for (var i
= 0; i
< request
.feeds
.length
; ++i
) {
10 var a
= document
.createElement('a');
11 a
.href
= request
.feeds
[i
].href
;
12 if (a
.protocol
== "http:" || a
.protocol
== "https:") {
13 input
.push(request
.feeds
[i
]);
15 console
.log('Warning: feed source rejected (wrong protocol): ' +
16 request
.feeds
[i
].href
);
20 if (input
.length
== 0)
21 return; // We've rejected all the input, so abort.
23 // We have received a list of feed urls found on the page.
25 feeds
[sender
.tab
.id
] = input
;
26 chrome
.storage
.local
.set(feeds
, function() {
27 // Enable the page action icon.
28 chrome
.pageAction
.setTitle(
29 { tabId
: sender
.tab
.id
,
30 title
: chrome
.i18n
.getMessage("rss_subscription_action_title")
32 chrome
.pageAction
.show(sender
.tab
.id
);
34 } else if (request
.msg
== "feedDocument") {
35 // We received word from the content script that this document
36 // is an RSS feed (not just a document linking to the feed).
37 // So, we go straight to the subscribe page in a new tab and
38 // navigate back on the current page (to get out of the xml page).
39 // We don't want to navigate in-place because trying to go back
40 // from the subscribe page takes us back to the xml page, which
41 // will redirect to the subscribe page again (we don't support a
42 // location.replace equivalant in the Tab navigation system).
43 chrome
.tabs
.executeScript(sender
.tab
.id
,
44 { code
: "if (history.length > 1) " +
45 "history.go(-1); else window.close();"
47 var url
= "subscribe.html?" + encodeURIComponent(request
.href
);
48 url
= chrome
.extension
.getURL(url
);
49 chrome
.tabs
.create({ url
: url
, index
: sender
.tab
.index
});
53 chrome
.tabs
.onRemoved
.addListener(function(tabId
) {
54 chrome
.storage
.local
.remove(tabId
.toString());