blob: 42edb432b2de6361da4e92c7f8d55441c3082a7b [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview A TTS engine that writes to globalThis.console.
*/
import {SpeechLog} from '../common/log_types.js';
import {TtsInterface} from '../common/tts_interface.js';
import {QueueMode, TtsCategory} from '../common/tts_types.js';
import {LogStore} from './logging/log_store.js';
import {ChromeVoxPrefs} from './prefs.js';
/** @implements {TtsInterface} */
export class ConsoleTts {
constructor() {
/**
* True if the console TTS is enabled by the user.
* @private {boolean}
*/
this.enabled_ =
ChromeVoxPrefs.instance.getPrefs()['enableSpeechLogging'] ===
String(true);
}
/**
* @param {string} textString
* @param {!QueueMode} queueMode
* @param {Object=} properties
* @return {!ConsoleTts}
*/
speak(textString, queueMode, properties) {
if (this.enabled_ && window['console']) {
let category = TtsCategory.NAV;
if (properties && properties.category) {
category = properties.category;
}
const speechLog = new SpeechLog(textString, queueMode, category);
LogStore.instance.writeLog(speechLog);
console.log(speechLog.toString());
}
return this;
}
/** @override */
isSpeaking() {
return false;
}
/** @override */
stop() {
if (this.enabled_) {
console.log('Stop');
}
}
/** @override */
addCapturingEventListener(listener) {}
/** @override */
removeCapturingEventListener(listener) {}
/** @override */
increaseOrDecreaseProperty() {}
/**
* @param {string} property
* @return {number}
* @override
*/
propertyToPercentage(property) {}
/**
* Sets the enabled bit.
* @param {boolean} enabled The new enabled bit.
*/
setEnabled(enabled) {
this.enabled_ = enabled;
}
/**
* @param {string} property
* @return {number}
* @override
*/
getDefaultProperty(property) {}
/**
* @return {boolean}
* @override
*/
toggleSpeechOnOrOff() {}
/** @override */
resetTextToSpeechSettings() {}
}
/** @private {ConsoleTts} */
ConsoleTts.instance_;