[go: nahoru, domu]

blob: ea6f5106596b8c8a719ad898aefe4dcdc7687e01 [file] [log] [blame]
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Custom binding for the ttsEngine API.
bindingUtil.registerEventArgumentMassager('ttsEngine.onSpeak',
function(args, dispatch) {
var text = args[0];
var options = args[1];
var requestId = args[2];
if (args.length !== 3) {
throw new Error('Unexpected number of args: ' + args.length);
}
var sendTtsEvent = function(event) {
chrome.ttsEngine.sendTtsEvent(requestId, event);
};
dispatch([text, options, sendTtsEvent]);
});
let currentRequestId;
bindingUtil.registerEventArgumentMassager('ttsEngine.onSpeakWithAudioStream',
function(args, dispatch) {
let text = args[0];
let options = args[1];
let requestId = args[2];
let audioStreamOptions = args[3];
if (args.length !== 4) {
throw new Error('Unexpected number of args: ' + args.length);
}
currentRequestId = requestId;
const sendTtsAudio = function(audioBufferParams) {
const {audioBuffer, charIndex, isLastBuffer} = audioBufferParams;
if (currentRequestId == requestId) {
if (!audioBuffer) {
throw new Error('Invalid audio buffer: ' + audioBuffer);
}
if (audioBuffer.length !== audioStreamOptions.bufferSize) {
throw new Error(
`Invalid audio buffer size ` +
`${audioBuffer.length}; expected == ${
audioStreamOptions.length}`);
}
chrome.ttsEngine.sendTtsAudio(requestId, {
audioBuffer,
charIndex: charIndex !== undefined ? charIndex : -1,
isLastBuffer: !!isLastBuffer
});
}
};
const sendError = function(errorMessage = '') {
chrome.ttsEngine.sendTtsEvent(requestId, {type: 'error', errorMessage});
};
dispatch([text, options, audioStreamOptions, sendTtsAudio, sendError]);
});