// Copyright 2017 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// https://dvcs.w3.org/hg/speech-api/raw-file/4f41ea1126bb/webspeechapi.html#tts-section

[
  Constructor,
  Constructor(DOMString text)
]
interface SpeechSynthesisUtterance : EventTarget {
  attribute DOMString text;
  attribute DOMString lang;
  attribute SpeechSynthesisVoice voice;
  attribute float volume;
  attribute float rate;
  attribute float pitch;

  attribute EventHandler onstart;
  attribute EventHandler onend;
  attribute EventHandler onerror;
  attribute EventHandler onpause;
  attribute EventHandler onresume;
  attribute EventHandler onmark;
  attribute EventHandler onboundary;
};

typedef EventListener? EventHandler;
