Skip to content

Commit 34a60f7

Browse files
authored
Merge pull request #76 from StoPlay/issue-44
Issue #44
2 parents d2cf04c + f486c84 commit 34a60f7

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

background.js

+16-10
Original file line numberDiff line numberDiff line change
@@ -158,26 +158,29 @@ chrome.storage.onChanged.addListener(function(changes, namespace) {
158158

159159
chrome.browserAction.onClicked.addListener(function(e) {
160160
var lastPlayingTabId = parseInt(DataStorage.get('lastPlayingTabId')),
161+
lastPlayingFrameId = parseInt(DataStorage.get('lastPlayingFrameId')) || 0,
161162
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId')),
163+
lastPausedFrameId = parseInt(DataStorage.get('lastPausedFrameId')) || 0,
162164
status = DataStorage.get('status');
163165

164166
switch(status) {
165167
case "playing":
166168
if(lastPlayingTabId) {
167-
chrome.tabs.sendMessage(lastPlayingTabId, {action: 'pause'});
169+
chrome.tabs.sendMessage(lastPlayingTabId, {action: 'pause'}, {frameId: lastPlayingFrameId});
168170
}
169171
break;
170172

171173
case "paused":
172174
if(lastPlayingTabId) {
173-
chrome.tabs.sendMessage(lastPlayingTabId, {action: 'play'});
175+
chrome.tabs.sendMessage(lastPausedTabId, {action: 'play'}, {frameId: lastPausedFrameId});
174176
}
175177
break;
176178
}
177179
})
178180

179181
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
180182
var lastPlayingTabId = parseInt(DataStorage.get('lastPlayingTabId')),
183+
lastPlayingFrameId = parseInt(DataStorage.get('lastPlayingFrameId')) || 0,
181184
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId')),
182185
status = DataStorage.get('status');
183186

@@ -191,23 +194,24 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
191194
break;
192195

193196
case 'started':
194-
if(lastPlayingTabId && sender.tab.id != lastPlayingTabId) {
195-
chrome.tabs.sendMessage(lastPlayingTabId, {action: 'pause'});
197+
var isFrameIdChanged = (lastPlayingTabId && sender.frameId != lastPlayingFrameId);
198+
if(lastPlayingTabId && sender.tab.id != lastPlayingTabId || isFrameIdChanged) {
199+
chrome.tabs.sendMessage(lastPlayingTabId, {action: 'pause'}, {frameId: lastPlayingFrameId});
196200
}
197201
DataStorage.set('lastPlayingTabId', sender.tab.id);
202+
DataStorage.set('lastPlayingFrameId', sender.frameId);
198203
DataStorage.set('status', 'playing');
199204
chrome.browserAction.setIcon({path: STOP_ICON});
200-
201205
if (request.title) {
202206
chrome.browserAction.setTitle({title: "Playing: " + request.title});
203207
} else {
204208
chrome.browserAction.setTitle({title: "Playing: " + sender.tab.title});
205209
}
206-
207210
break;
208211

209212
case 'paused':
210213
DataStorage.set('lastPausedTabId', sender.tab.id);
214+
DataStorage.set('lastPausedFrameId', sender.frameId);
211215
DataStorage.set('status', 'paused');
212216
chrome.browserAction.setIcon({path: PLAY_ICON});
213217
chrome.browserAction.setTitle({title: "StoPlay" });
@@ -226,20 +230,22 @@ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
226230
chrome.commands.onCommand.addListener(function(command) {
227231
var lastPlayingTabId = parseInt(DataStorage.get('lastPlayingTabId')),
228232
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId')),
233+
lastPausedFrameId = parseInt(DataStorage.get('lastPausedFrameId')) || 0,
229234
status = DataStorage.get('status');
230235
if(lastPlayingTabId) {
231236
var action = (status == 'playing') ? 'pause' : 'play';
232-
chrome.tabs.sendMessage(lastPlayingTabId, {action: action});
237+
chrome.tabs.sendMessage(lastPlayingTabId, {action: action}, {frameId: lastPausedFrameId});
233238
}
234239
});
235240
chrome.tabs.onRemoved.addListener(function(tabId){
236241
var lastPlayingTabId = parseInt(DataStorage.get('lastPlayingTabId')),
237-
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId'));
238-
242+
lastPausedTabId = parseInt(DataStorage.get('lastPausedTabId')),
243+
lastPausedFrameId = parseInt(DataStorage.get('lastPausedFrameId')) || 0;
239244
if(tabId == lastPlayingTabId) {
240245
DataStorage.set('lastPlayingTabId', null);
241246
if(lastPausedTabId != tabId) {
242-
chrome.tabs.sendMessage(lastPausedTabId, {action: 'play'});
247+
chrome.tabs.sendMessage(lastPausedTabId, {action: 'play'}, {frameId: lastPausedFrameId});
243248
}
244249
}
245250
});
251+

0 commit comments

Comments
 (0)