// Copyright 2015 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://www.w3.org/TR/html5/embedded-content-0.html#the-video-element

interface HTMLVideoElement : HTMLMediaElement {
  attribute unsigned long width;
  attribute unsigned long height;
  readonly attribute unsigned long videoWidth;
  readonly attribute unsigned long videoHeight;

  // https://www.w3.org/TR/media-source/#widl-HTMLVideoElement-getVideoPlaybackQuality-VideoPlaybackQuality
  [CallWith=EnvironmentSettings] VideoPlaybackQuality getVideoPlaybackQuality();

  // Sets a maximum video features contract. This communicates to the platform
  // that the web app will not provide a video stream with features exceeding the
  // maximums described by this function.  This can enable the platform to optimize
  // playback pipeline for, say, a low quality video stream if it knows that it
  // will never adapt to a higher quality stream. This function must be called
  // *before* the src attribute is set on the element, otherwise an
  // INVALID_STATE_ERR exception is raised. The format of the string passed in
  // is the same as the format for the string passed in to
  // HTMLMediaElement.canPlayType().
  [Conditional=COBALT_ENABLE_SET_MAX_VIDEO_CAPABILITIES, RaisesException] void setMaxVideoCapabilities(DOMString max_video_capabilities);
};
