The getContext(contextId, options) method of an object, when invoked, must run these steps:

  1. "2d"
    1. Let context be the result of running the offscreen 2D context creation algorithm given this and options.

    2. Set this's context mode to 2d.

    3. Return context.

    Return the same object as was returned the last time the method was invoked with this same first argument. Return null. Return null. Return null. Throw an "InvalidStateError" DOMException.
    "bitmaprenderer"
    1. Let context be the result of running the ImageBitmapRenderingContext creation algorithm given this and options.

    2. Set this's context mode to bitmaprenderer.

    3. Return context.

    Return null. Return the same object as was returned the last time the method was invoked with this same first argument. Return null. Return null. Throw an "InvalidStateError" DOMException.
    "webgl" or "webgl2"
    1. Let context be the result of following the instructions given in the WebGL specifications' Context Creation sections. [WEBGL]

    2. If context is null, then return null; otherwise set this's context mode to webgl or webgl2.

    3. Return context.

    Return null. Return null. Return the same value as was returned the last time the method was invoked with this same first argument. Return null. Throw an "InvalidStateError" DOMException.
    "webgpu"
    1. Let context be the result of following the instructions given in WebGPU's Canvas Rendering section. [WEBGPU]

    2. If context is null, then return null; otherwise set this's context mode to webgpu.

    3. Return context.

    Return null. Return null. Return null. Return the same value as was returned the last time the method was invoked with this same first argument. Throw an "InvalidStateError" DOMException.