diff options
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/audio.js | 9 | ||||
| -rw-r--r-- | ext/mixed/js/display.js | 11 | 
2 files changed, 12 insertions, 8 deletions
| diff --git a/ext/mixed/js/audio.js b/ext/mixed/js/audio.js index d2feae04..1da5d48c 100644 --- a/ext/mixed/js/audio.js +++ b/ext/mixed/js/audio.js @@ -16,8 +16,6 @@   * along with this program.  If not, see <https://www.gnu.org/licenses/>.   */ -/*global apiAudioGetUrl*/ -  class TextToSpeechAudio {      constructor(text, voice) {          this.text = text; @@ -69,9 +67,10 @@ class TextToSpeechAudio {  }  class AudioSystem { -    constructor() { +    constructor({getAudioUri}) {          this._cache = new Map();          this._cacheSizeMaximum = 32; +        this._getAudioUri = getAudioUri;          if (typeof speechSynthesis !== 'undefined') {              // speechSynthesis.getVoices() will not be populated unless some API call is made. @@ -79,7 +78,7 @@ class AudioSystem {          }      } -    async getExpressionAudio(expression, sources, optionsContext, details) { +    async getExpressionAudio(expression, sources, details) {          const key = `${expression.expression}:${expression.reading}`;          const cacheValue = this._cache.get(expression);          if (typeof cacheValue !== 'undefined') { @@ -88,7 +87,7 @@ class AudioSystem {          }          for (const source of sources) { -            const uri = await apiAudioGetUrl(expression, source, optionsContext); +            const uri = await this._getAudioUri(expression, source, details);              if (uri === null) { continue; }              try { diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index e0b12f7d..9d2746fd 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -18,7 +18,7 @@  /*global docRangeFromPoint, docSentenceExtract  apiKanjiFind, apiTermsFind, apiNoteView, apiOptionsGet, apiDefinitionsAddable, apiDefinitionAdd -apiScreenshotGet, apiForward +apiScreenshotGet, apiForward, apiAudioGetUrl  AudioSystem, DisplayGenerator, WindowScroll, DisplayContext, DOM*/  class Display { @@ -31,7 +31,7 @@ class Display {          this.index = 0;          this.audioPlaying = null;          this.audioFallback = null; -        this.audioSystem = new AudioSystem(); +        this.audioSystem = new AudioSystem({getAudioUri: this._getAudioUri.bind(this)});          this.styleNode = null;          this.eventListeners = new EventListenerCollection(); @@ -775,7 +775,7 @@ class Display {              const sources = this.options.audio.sources;              let audio, source, info;              try { -                ({audio, source} = await this.audioSystem.getExpressionAudio(expression, sources, this.getOptionsContext())); +                ({audio, source} = await this.audioSystem.getExpressionAudio(expression, sources));                  info = `From source ${1 + sources.indexOf(source)}: ${source}`;              } catch (e) {                  if (this.audioFallback === null) { @@ -916,4 +916,9 @@ class Display {          const key = event.key;          return (typeof key === 'string' ? (key.length === 1 ? key.toUpperCase() : key) : '');      } + +    async _getAudioUri(definition, source) { +        const optionsContext = this.getOptionsContext(); +        return await apiAudioGetUrl(definition, source, optionsContext); +    }  } |