JSValue JSHTMLCanvasElement::supportsContext(ExecState* exec)
{
    HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(impl());
    if (!exec->argumentCount())
        return jsBoolean(false);
    const String& contextId = exec->argument(0).toString(exec)->value(exec);
    if (exec->hadException())
        return jsUndefined();
    
    RefPtr<CanvasContextAttributes> attrs;
#if ENABLE(WEBGL)
    if (HTMLCanvasElement::is3dType(contextId)) {
        get3DContextAttributes(exec, attrs);
        if (exec->hadException())
            return jsUndefined();
    }
#endif
    
    return jsBoolean(canvas->supportsContext(contextId, attrs.get()));
}