Commit 2bc068e4 authored by David Tseng's avatar David Tseng Committed by Commit Bot

Add progress tones on initial ChromeVox startup

Bug: 1046430
Change-Id: I583b0ac6928a1c209368507f427c0c40dbd22c04
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2026110
Commit-Queue: David Tseng <dtseng@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737441}
parent fdb4fa0c
......@@ -154,6 +154,29 @@ Background = class extends ChromeVoxState {
// Set the darkScreen state to false, since the display will be on whenever
// ChromeVox starts.
sessionStorage.setItem('darkScreen', 'false');
// A self-contained class to start and stop progress sounds before any
// speech has been generated on startup. This is important in cases where
// speech is severely delayed.
/** @implements {TtsCapturingEventListener} */
const ProgressPlayer = class {
constructor() {
ChromeVox.tts.addCapturingEventListener(this);
ChromeVox.earcons.playEarcon(Earcon.PAGE_START_LOADING);
}
/** @override */
onTtsStart() {
ChromeVox.earcons.playEarcon(Earcon.PAGE_FINISH_LOADING);
ChromeVox.tts.removeCapturingEventListener(this);
}
/** @override */
onTtsEnd() {}
/** @override */
onTtsInterrupted() {}
};
new ProgressPlayer();
}
/**
......
......@@ -88,6 +88,9 @@ AbstractTts = class {
/** @override */
addCapturingEventListener(listener) {}
/** @override */
removeCapturingEventListener(listener) {}
/** @override */
increaseOrDecreaseProperty(propertyName, increase) {
const min = this.propertyMin[propertyName];
......
......@@ -64,15 +64,20 @@ CompositeTts = class {
});
}
/**
* @override
*/
/** @override */
addCapturingEventListener(listener) {
this.ttsEngines_.forEach(function(engine) {
engine.addCapturingEventListener(listener);
});
}
/** @override */
removeCapturingEventListener(listener) {
this.ttsEngines_.forEach(function(engine) {
engine.removeCapturingEventListener(listener);
});
}
/**
* @override
*/
......
......@@ -55,6 +55,9 @@ ConsoleTts = class {
/** @override */
addCapturingEventListener(listener) {}
/** @override */
removeCapturingEventListener(listener) {}
/** @override */
increaseOrDecreaseProperty() {}
......
......@@ -511,6 +511,14 @@ TtsBackground = class extends ChromeTtsBase {
this.capturingTtsEventListeners_.push(listener);
}
/** @override */
removeCapturingEventListener(listener) {
this.capturingTtsEventListeners_ =
this.capturingTtsEventListeners_.filter((item) => {
return item != listener;
});
}
/**
* An error handler passed as a callback to chrome.tts.speak.
* @param {string} errorMessage Describes the error (set by onEvent).
......
......@@ -48,13 +48,11 @@ QueueMode = {
};
/**
* @interface
* An interface for clients who want to get notified when an utterance
* starts or ends from any source.
* @interface
*/
TtsCapturingEventListener = class {
constructor() {}
/**
* Called when any utterance starts.
*/
......@@ -102,6 +100,12 @@ TtsInterface = class {
*/
addCapturingEventListener(listener) {}
/**
* Removes a listener to get called whenever any utterance starts or ends.
* @param {TtsCapturingEventListener} listener Listener to get called.
*/
removeCapturingEventListener(listener) {}
/**
* Increases a TTS speech property.
* @param {string} propertyName The name of the property to change.
......
......@@ -7,7 +7,7 @@
"version": "{{set_version}}",
"description": "__MSG_CHROMEVOX_DESCRIPTION__",
{% if is_guest_manifest == '1' %}
"incognito": "split",
"incognito": "spanning",
{% endif %}
"background": {
"page": "background/background.html"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment