-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.html
117 lines (107 loc) · 4.05 KB
/
background.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<script>
var lastUsed = '';
var action;
var musicTabs = [];
var currPlayer;
///////////////////////////////////////////////////////////////////////////////
// *player specific information*
// Regex to filter out the tabs that have supported media players
///////////////////////////////////////////////////////////////////////////////
var playerPatterns = [
{name:"grooveshark", pattern: new RegExp("grooveshark.com", "i")},
{name:"googleMusic", pattern: new RegExp("music.google.com", "i")}
];
///////////////////////////////////////////////////////////////////////////////
// Creates an array, musicTabs[], which includes
// all the tabs that match the playerPatterns:
///////////////////////////////////////////////////////////////////////////////
function updateMusicTabs(tab){
musicTabs = [];
for(i in tab){
var tab_url= tab[i].url;
for( var j in playerPatterns){
if ( tab_url.match( playerPatterns[j].pattern) ){
musicTabs.push({tab: tab[i], name: playerPatterns[j].name});
}
}
}
// The last used tab will be the one that we want to
// take action on first. It is added to the end of musicTabs[]
// so that if the tab still exists currPlaying will find it first
// and that is where actions will be directed untill there
// is a new current player or the lastUsed tab is closed.
if(lastUsed){
musicTabs.push(lastUsed);
}
}
///////////////////////////////////////////////////////////////////////////////
// The last step: send the action to the tab and
// let contentScript.js handle the rest
///////////////////////////////////////////////////////////////////////////////
function takeAction(index){
if(currPlayer){
chrome.tabs.sendRequest(currPlayer.tab.id, {action: action, name: currPlayer.name} );
lastUsed = {tab:currPlayer.tab, name: currPlayer.name};
}
else{
chrome.tabs.sendRequest(
musicTabs[musicTabs.length-1].tab.id,
{action: action, name: musicTabs[musicTabs.length-1].name}
);
}
}
///////////////////////////////////////////////////////////////////////////////
// Check if a tab is currently playing music:
///////////////////////////////////////////////////////////////////////////////
function currPlaying(i, callback){
if(i==-1){
callback('');
return;
}
else{
chrome.tabs.sendRequest(musicTabs[i].tab.id, {checkPlaying: true, name: musicTabs[i].name},function (response){
if( response ){
callback(musicTabs[i]);
return;
}else{
currPlaying(i-1, callback);
return;
}
});
}
}
///////////////////////////////////////////////////////////////////////////////
// listen for an action request from contentScript.js
///////////////////////////////////////////////////////////////////////////////
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
chrome.tabs.query( {} , function (tab) {
updateMusicTabs(tab);
action = request.action;
if(musicTabs.length == 0){
alert('No supported media tabs open! -With Love, from your Shorty Player...');
return;
}
//currPlaying will call takeAction so this is where the magic happens...
currPlaying( musicTabs.length - 1, function(result){
currPlayer = result;
takeAction();
} );
});
});
</script>
<body>
<h1>
Shorty Player's Background.html
</h1>
<p>
Thanks for checking me out!
</p>
<p>
This may be the address of this page: <br/>
chrome-extension://dnjohbofccjbkcmbfkbopdleiobfgaoc/background.html
</p>
<p>
Don't keep this page open while using shortyplayer. It will mess us up!
</p>
</body>