// 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.

interface H5vccAccessibility {
  // True if the host operating system's "high contrast text" option
  // has been enabled.
  readonly attribute boolean highContrastText;
  void addHighContrastTextListener(H5vccAccessibilityCallback callback);

  // True if the host operating system's "text to speech" accessibility
  // option is enabled.
  readonly attribute boolean textToSpeech;

  // This callback is invoked when text-to-speech settings have changed. It
  // may also be invoked if other accessibility settings (ones not related to
  // text-to-speech) have changed.
  void addTextToSpeechListener(H5vccAccessibilityCallback callback);

  // True if the built-in screen reader is enabled.
  // Setting it to false disables the built-in screen reader.
  attribute boolean builtInScreenReader;
};

callback H5vccAccessibilityCallback = void();
