| // 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. |
| |
| // Custom, not a standard. |
| |
| // This is an API for accessing system-level closed caption settings and |
| // exposing them to HTML5 apps. It supports detecting if captions are enabled at |
| // a system level, and retrieving values of various captioning style |
| // properties assigned by the system. |
| |
| // For each captioning style property that this API supports, there are two |
| // attributes. The first accesses the system-level setting for a property, and |
| // the second determines the state of that property. For possible states, see |
| // ./caption_state.idl. To use a particular property, you should check its |
| // state first to ensure that the property is properly supported. |
| // For example, if you want to get your system's font size, you would first |
| // check the value of the "fontSizeState" attribute. If it contains |
| // "unsupported", then the system does not support font size settings, so use |
| // your application's font size settings instead. If it contains "unset", then |
| // the user has not set the property in their system, so you should also use |
| // your application settings instead. If it contains another value, then you |
| // can safely access the corresponding "fontSize" attribute. If you attempt |
| // to access a property that is unsupported or unset, it will return null. |
| |
| // One property which behaves a bit differently is the one that determines |
| // whether captions are enabled or disabled at a system level. It is important |
| // to note that this property can both be read from and written to, and if using |
| // either of these behaviors, you should use the corresponding check to ensure |
| // that it is supported. If you try to read from the property and doing so is |
| // not supported, it will return false. If you try to write to it and doing so |
| // is not supported, the value will silently not change. |
| |
| interface SystemCaptionSettings : EventTarget { |
| |
| // TODO: Make the functions for style properties return nullable enum types |
| // instead of nullable DOMStrings. |
| // It seems that Cobalt's bindings generation code does not support |
| // nullable enums in IDL. To handle this, the attributes for style properties |
| // return nullable DOMStrings instead. The underlying Cobalt implementation |
| // ensures that a string corresponding to the proper enum value is returned |
| // by each attribute. |
| |
| readonly attribute DOMString? backgroundColor; |
| readonly attribute CaptionState backgroundColorState; |
| |
| readonly attribute DOMString? backgroundOpacity; |
| readonly attribute CaptionState backgroundOpacityState; |
| |
| readonly attribute DOMString? characterEdgeStyle; |
| readonly attribute CaptionState characterEdgeStyleState; |
| |
| readonly attribute DOMString? fontColor; |
| readonly attribute CaptionState fontColorState; |
| |
| readonly attribute DOMString? fontFamily; |
| readonly attribute CaptionState fontFamilyState; |
| |
| readonly attribute DOMString? fontOpacity; |
| readonly attribute CaptionState fontOpacityState; |
| |
| readonly attribute DOMString? fontSize; |
| readonly attribute CaptionState fontSizeState; |
| |
| readonly attribute DOMString? windowColor; |
| readonly attribute CaptionState windowColorState; |
| |
| readonly attribute DOMString? windowOpacity; |
| readonly attribute CaptionState windowOpacityState; |
| |
| // "enabled" means that the user has chosen to enable closed captions |
| // on the system. |
| attribute boolean isEnabled; |
| |
| // There are separate checks for reading and writing to the enabled attribute, |
| // as some systems allow the value to be queried but not written to. Setting |
| // the enabled attribute will change the system-wide enabled setting. |
| // Attempting to read isEnabled when supportsIsEnabled is false will |
| // always return false. Attempting to set isEnabled when supportsSetEnabled is |
| // false will fail silently. |
| readonly attribute boolean supportsIsEnabled; |
| readonly attribute boolean supportsSetEnabled; |
| |
| // Some platforms may specify that when setting a property, it should override |
| // data from video streams and application settings (unless the application |
| // has its own overrides). Depending on whether this attribute contains true |
| // or false, the CaptionState return value should be interpreted differently. |
| // Refer to the documentation in ./caption_state.idl for details. |
| readonly attribute boolean supportsOverride; |
| |
| attribute EventHandler onchanged; |
| |
| }; |