1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @fileoverview A TTS engine that writes to window.console.
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.ConsoleTts');
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.AbstractTts');
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.TtsInterface');
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @constructor
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @implements {cvox.TtsInterface}
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts = function() {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  /**
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)   * True if the console TTS is enabled by the user.
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)   * @type {boolean}
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)   * @private
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)   */
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  this.enabled_ = false;
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.addSingletonGetter(cvox.ConsoleTts);
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.speak = function(textString, queueMode, properties) {
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (this.enabled_ && window['console']) {
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    var logStr = 'Speak';
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (queueMode == cvox.AbstractTts.QUEUE_MODE_FLUSH) {
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      logStr += ' (I)';
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    } else if (queueMode == cvox.AbstractTts.QUEUE_MODE_CATEGORY_FLUSH) {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      logStr += ' (C)';
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      logStr += ' (Q)';
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    if (properties && properties.category) {
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      logStr += ' category=' + properties.category;
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    logStr += ' "' + textString + '"';
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    window['console']['log'](logStr);
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (properties && properties['startCallback'] != undefined) {
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      window.console.log('  using startCallback');
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (properties && properties['endCallback'] != undefined) {
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      window.console.log('  using endCallback');
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return this;
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.isSpeaking = function() { return false; };
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.stop = function() {
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (this.enabled_) {
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    window['console']['log']('Stop');
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.addCapturingEventListener = function(listener) { };
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.increaseOrDecreaseProperty = function() { };
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Sets the enabled bit.
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {boolean} enabled The new enabled bit.
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.setEnabled = function(enabled) {
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  this.enabled_ = enabled;
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** @override */
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.ConsoleTts.prototype.getDefaultProperty = function(property) { };
83