// 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/webappapis.html#globaleventhandlers

[NoInterfaceObject]
interface GlobalEventHandlers {
  attribute EventHandler onblur;
  attribute EventHandler onclick;
  attribute OnErrorEventHandler onerror;
  attribute EventHandler onfocus;

  attribute EventHandler onkeydown;
  attribute EventHandler onkeypress;
  attribute EventHandler onkeyup;

  attribute EventHandler onload;
  attribute EventHandler onloadeddata;
  attribute EventHandler onloadedmetadata;
  attribute EventHandler onloadstart;

  attribute EventHandler onmousedown;
  attribute EventHandler onmouseenter;
  attribute EventHandler onmouseleave;
  attribute EventHandler onmousemove;
  attribute EventHandler onmouseout;
  attribute EventHandler onmouseover;
  attribute EventHandler onmouseup;

  attribute EventHandler onpause;
  attribute EventHandler onplay;
  attribute EventHandler onplaying;

  attribute EventHandler onresize;

  attribute EventHandler ontransitionend;

  // Extensions for the Pointer Events recommendation.
  //  https://www.w3.org/TR/2015/REC-pointerevents-20150224/#extensions-to-the-globaleventhandlers-interface
  attribute EventHandler ongotpointercapture;
  attribute EventHandler onlostpointercapture;
  attribute EventHandler onpointerdown;
  attribute EventHandler onpointerenter;
  attribute EventHandler onpointerleave;
  attribute EventHandler onpointermove;
  attribute EventHandler onpointerout;
  attribute EventHandler onpointerover;
  attribute EventHandler onpointerup;

  attribute EventHandler onprogress;
  attribute EventHandler onratechange;
  attribute EventHandler onseeked;
  attribute EventHandler onseeking;
  attribute EventHandler ontimeupdate;
  attribute EventHandler onvolumechange;
  attribute EventHandler onwaiting;
  attribute EventHandler onwheel;
};

// TODO: The IDL defines EventHandler as a nullable callback
// function. Define it as a nullable EventListener for now until we can do
// some refactoring to accept both in the EventTarget implementation.
typedef EventListener? EventHandler;
typedef OnErrorEventListener? OnErrorEventHandler;
