// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://html.spec.whatwg.org/#the-canvas-element

typedef (CanvasRenderingContext2D or
         WebGLRenderingContext or
         WebGL2RenderingContext or
         ImageBitmapRenderingContext) RenderingContext;

partial interface HTMLCanvasElement
{
    // The PermissiveDictionaryConversion extended attribute is needed to allow the
    // autogenerated code to match the behavior of the custom binding. Web IDL
    // requires throwing TypeError if the incoming argument is not an object type
    // (and is not undefined or null). The binding must ignore this.
    // Related spec issue: https://github.com/whatwg/html/issues/595
    [RaisesException] RenderingContext? getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributes attributes);
    [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException, MeasureAs=OffscreenCanvas] OffscreenCanvas transferControlToOffscreen();
};
