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

  // 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();
