Skip to content

Commit

Permalink
Don't listen to tab events when not speaking
Browse files Browse the repository at this point in the history
  • Loading branch information
joelpurra committed May 21, 2017
1 parent e9cbc4d commit 45a1ea2
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
13 changes: 10 additions & 3 deletions src/background/background.js
Expand Up @@ -208,6 +208,10 @@ function main() {
}
}());

// NOTE: cache listeners so they can be added and removed by reference before/after speaking.
const onTabRemovedListener = loggedPromise("onRemoved", () => talkieBackground.onTabRemovedHandler());
const onTabUpdatedListener = loggedPromise("onUpdated", () => talkieBackground.onTabUpdatedHandler());

// TODO: put initialization promise on the root chain?
return Promise.resolve()
.then(() => suspensionManager.initialize())
Expand Down Expand Up @@ -260,6 +264,12 @@ function main() {
broadcaster.registerListeningAction(knownEvents.beforeSpeaking, () => suspensionManager.preventExtensionSuspend()),
broadcaster.registerListeningAction(knownEvents.afterSpeaking, () => suspensionManager.allowExtensionSuspend()),

broadcaster.registerListeningAction(knownEvents.beforeSpeaking, () => browser.tabs.onRemoved.addListener(onTabRemovedListener)),
broadcaster.registerListeningAction(knownEvents.afterSpeaking, () => browser.tabs.onRemoved.removeListener(onTabRemovedListener)),

broadcaster.registerListeningAction(knownEvents.beforeSpeaking, () => browser.tabs.onUpdated.addListener(onTabUpdatedListener)),
broadcaster.registerListeningAction(knownEvents.afterSpeaking, () => browser.tabs.onUpdated.removeListener(onTabUpdatedListener)),

broadcaster.registerListeningAction(knownEvents.beforeSpeaking, (/* eslint-disable no-unused-vars*/actionName/* eslint-enable no-unused-vars*/, actionData) => progress.resetProgress(0, actionData.text.length, 0)),
broadcaster.registerListeningAction(knownEvents.beforeSpeakingPart, (/* eslint-disable no-unused-vars*/actionName/* eslint-enable no-unused-vars*/, actionData) => progress.startSegment(actionData.textPart.length)),
broadcaster.registerListeningAction(knownEvents.afterSpeakingPart, () => progress.endSegment()),
Expand All @@ -273,9 +283,6 @@ function main() {
});
})
.then(() => {
browser.tabs.onRemoved.addListener(loggedPromise("onRemoved", () => talkieBackground.onTabRemovedHandler()));
browser.tabs.onUpdated.addListener(loggedPromise("onUpdated", () => talkieBackground.onTabUpdatedHandler()));

// NOTE: not supported in Firefox (2017-04-28).
// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/onSuspend#Browser_compatibility
if (browser.runtime.onSuspend) {
Expand Down
6 changes: 2 additions & 4 deletions src/background/talkie-background.js
Expand Up @@ -226,8 +226,7 @@ export default class TalkieBackground {
return this.speakingStatus.isSpeakingTabId(tabId)
.then((isTabSpeaking) => {
if (isTabSpeaking) {
return this.talkieSpeaker.stopSpeaking()
.then(() => this.speakingStatus.setTabIsDoneSpeaking(tabId));
return this.talkieSpeaker.stopSpeaking();
}

return undefined;
Expand All @@ -240,8 +239,7 @@ export default class TalkieBackground {
// NOTE: changeInfo only has properties which have changed.
// https://developer.browser.com/extensions/tabs#event-onUpdated
if (isTabSpeaking && changeInfo.url) {
return this.talkieSpeaker.stopSpeaking()
.then(() => this.speakingStatus.setTabIsDoneSpeaking(tabId));
return this.talkieSpeaker.stopSpeaking();
}

return undefined;
Expand Down

0 comments on commit 45a1ea2

Please sign in to comment.