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

  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;
