JSValuePtr toJS(ExecState* exec, HTMLCollection* collection) { if (!collection) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), collection); if (wrapper) return wrapper; switch (collection->type()) { case HTMLCollection::SelectOptions: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLOptionsCollection, collection); break; case HTMLCollection::DocAll: typedef HTMLCollection HTMLAllCollection; wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLAllCollection, collection); break; default: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLCollection, collection); break; } return wrapper; }
JSValuePtr toJS(ExecState* exec, Document* document) { if (!document) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), document); if (wrapper) return wrapper; if (document->isHTMLDocument()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLDocument, document); #if ENABLE(SVG) else if (document->isSVGDocument()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, SVGDocument, document); #endif else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, Document, document); // Make sure the document is kept around by the window object, and works right with the // back/forward cache. if (!document->frame()) { size_t nodeCount = 0; for (Node* n = document; n; n = n->traverseNextNode()) nodeCount++; exec->heap()->reportExtraMemoryCost(nodeCount * sizeof(Node)); } return wrapper; }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, StyleSheet* styleSheet) { if (!styleSheet) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec, styleSheet); if (wrapper) return wrapper; if (styleSheet->isCSSStyleSheet()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSStyleSheet, styleSheet); else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, StyleSheet, styleSheet); return wrapper; }
JSValuePtr toJS(ExecState* exec, CSSRule* rule) { if (!rule) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), rule); if (wrapper) return wrapper; switch (rule->type()) { case CSSRule::STYLE_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSStyleRule, rule); break; case CSSRule::MEDIA_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSMediaRule, rule); break; case CSSRule::FONT_FACE_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSFontFaceRule, rule); break; case CSSRule::PAGE_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSPageRule, rule); break; case CSSRule::IMPORT_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSImportRule, rule); break; case CSSRule::CHARSET_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSCharsetRule, rule); break; case CSSRule::VARIABLES_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSVariablesRule, rule); break; case CSSRule::WEBKIT_KEYFRAME_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, WebKitCSSKeyframeRule, rule); break; case CSSRule::WEBKIT_KEYFRAMES_RULE: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, WebKitCSSKeyframesRule, rule); break; default: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, CSSRule, rule); } return wrapper; }
EncodedJSValue JSC_HOST_CALL JSXMLHttpRequestConstructor::constructJSXMLHttpRequest(ExecState* exec) { JSXMLHttpRequestConstructor* jsConstructor = static_cast<JSXMLHttpRequestConstructor*>(exec->callee()); ScriptExecutionContext* context = jsConstructor->scriptExecutionContext(); if (!context) return throwVMError(exec, createReferenceError(exec, "XMLHttpRequest constructor associated document is unavailable")); RefPtr<XMLHttpRequest> xmlHttpRequest = XMLHttpRequest::create(context); return JSValue::encode(CREATE_DOM_OBJECT_WRAPPER(exec, jsConstructor->globalObject(), XMLHttpRequest, xmlHttpRequest.get())); }
static JSObject* constructWebKitCSSMatrix(ExecState* exec, JSObject*, const ArgList& args) { String s; if (args.size() >= 1) s = args.at(0).toString(exec); ExceptionCode ec = 0; RefPtr<WebKitCSSMatrix> matrix = WebKitCSSMatrix::create(s, ec); setDOMException(exec, ec); return CREATE_DOM_OBJECT_WRAPPER(exec, WebKitCSSMatrix, matrix.get()); }
EncodedJSValue JSC_HOST_CALL JSWebKitCSSMatrixConstructor::constructJSWebKitCSSMatrix(ExecState* exec) { JSWebKitCSSMatrixConstructor* jsConstructor = static_cast<JSWebKitCSSMatrixConstructor*>(exec->callee()); String s; if (exec->argumentCount() >= 1) s = ustringToString(exec->argument(0).toString(exec)); ExceptionCode ec = 0; RefPtr<WebKitCSSMatrix> matrix = WebKitCSSMatrix::create(s, ec); setDOMException(exec, ec); return JSValue::encode(CREATE_DOM_OBJECT_WRAPPER(exec, jsConstructor->globalObject(), WebKitCSSMatrix, matrix.get())); }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, CSSValue* value) { if (!value) return jsNull(); JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), value); if (wrapper) return wrapper; if (value->isWebKitCSSTransformValue()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitCSSTransformValue, value); else if (value->isValueList()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSValueList, value); #if ENABLE(SVG) else if (value->isSVGPaint()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPaint, value); else if (value->isSVGColor()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGColor, value); #endif else if (value->isPrimitiveValue()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSPrimitiveValue, value); else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CSSValue, value); return wrapper; }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, HTMLCollection* collection) { if (!collection) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec, collection); if (wrapper) return wrapper; switch (collection->type()) { case SelectOptions: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, HTMLOptionsCollection, collection); break; case DocAll: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, HTMLAllCollection, collection); break; default: wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, HTMLCollection, collection); break; } return wrapper; }
JSValue* toJS(ExecState* exec, ImageData* imageData) { if (!imageData) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), imageData); if (wrapper) return wrapper; wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, ImageData, imageData); exec->heap()->reportExtraMemoryCost(imageData->data()->length()); return wrapper; }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, ImageData* imageData) { if (!imageData) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec, imageData); if (wrapper) return wrapper; wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, ImageData, imageData); Identifier dataName(exec, "data"); DEFINE_STATIC_LOCAL(RefPtr<Structure>, cpaStructure, (JSByteArray::createStructure(jsNull()))); static const ClassInfo cpaClassInfo = { "CanvasPixelArray", 0, 0, 0 }; wrapper->putDirect(dataName, new (exec) JSByteArray(exec, cpaStructure, imageData->data()->data(), &cpaClassInfo), DontDelete | ReadOnly); exec->heap()->reportExtraMemoryCost(imageData->data()->length()); return wrapper; }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, Event* event) { JSLock lock(SilenceAssertionsOnly); if (!event) return jsNull(); JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), event); if (wrapper) return wrapper; if (event->isUIEvent()) { if (event->isKeyboardEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, KeyboardEvent, event); else if (event->isTextEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, TextEvent, event); else if (event->isMouseEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MouseEvent, event); else if (event->isWheelEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WheelEvent, event); #if ENABLE(SVG) else if (event->isSVGZoomEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGZoomEvent, event); #endif else if (event->isCompositionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CompositionEvent, event); #if ENABLE(TOUCH_EVENTS) else if (event->isTouchEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, TouchEvent, event); #endif else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, UIEvent, event); } else if (event->isMutationEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MutationEvent, event); else if (event->isOverflowEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, OverflowEvent, event); else if (event->isMessageEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MessageEvent, event); else if (event->isPageTransitionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, PageTransitionEvent, event); else if (event->isProgressEvent()) { if (event->isXMLHttpRequestProgressEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, XMLHttpRequestProgressEvent, event); else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, ProgressEvent, event); } else if (event->isBeforeLoadEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, BeforeLoadEvent, event); #if ENABLE(DOM_STORAGE) else if (event->isStorageEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, StorageEvent, event); #endif #if ENABLE(INDEXED_DATABASE) else if (event->isIDBVersionChangeEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, IDBVersionChangeEvent, event); #endif else if (event->isWebKitAnimationEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitAnimationEvent, event); else if (event->isWebKitTransitionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitTransitionEvent, event); #if ENABLE(WORKERS) else if (event->isErrorEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, ErrorEvent, event); #endif else if (event->isHashChangeEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, HashChangeEvent, event); else if (event->isPopStateEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, PopStateEvent, event); else if (event->isCustomEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CustomEvent, event); #if ENABLE(DEVICE_ORIENTATION) else if (event->isDeviceMotionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, DeviceMotionEvent, event); else if (event->isDeviceOrientationEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, DeviceOrientationEvent, event); #endif #if ENABLE(WEB_AUDIO) else if (event->isAudioProcessingEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, AudioProcessingEvent, event); else if (event->isOfflineAudioCompletionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, OfflineAudioCompletionEvent, event); #endif #if ENABLE(INPUT_SPEECH) else if (event->isSpeechInputEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SpeechInputEvent, event); #endif else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, Event, event); return wrapper; }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, Event* event) { JSLock lock(SilenceAssertionsOnly); if (!event) return jsNull(); DOMObject* wrapper = getCachedDOMObjectWrapper(exec, event); if (wrapper) return wrapper; if (event->isUIEvent()) { if (event->isKeyboardEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, KeyboardEvent, event); else if (event->isTextEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, TextEvent, event); else if (event->isMouseEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MouseEvent, event); else if (event->isWheelEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WheelEvent, event); #if ENABLE(SVG) else if (event->isSVGZoomEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGZoomEvent, event); #endif else if (event->isCompositionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, CompositionEvent, event); #if ENABLE(TOUCH_EVENTS) else if (event->isTouchEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, TouchEvent, event); #endif else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, UIEvent, event); } else if (event->isMutationEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MutationEvent, event); else if (event->isOverflowEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, OverflowEvent, event); else if (event->isMessageEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, MessageEvent, event); else if (event->isPageTransitionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, PageTransitionEvent, event); else if (event->isProgressEvent()) { if (event->isXMLHttpRequestProgressEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, XMLHttpRequestProgressEvent, event); else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, ProgressEvent, event); } else if (event->isBeforeLoadEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, BeforeLoadEvent, event); #if ENABLE(DOM_STORAGE) else if (event->isStorageEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, StorageEvent, event); #endif else if (event->isWebKitAnimationEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitAnimationEvent, event); else if (event->isWebKitTransitionEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, WebKitTransitionEvent, event); #if ENABLE(WORKERS) else if (event->isErrorEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, ErrorEvent, event); #endif else if (event->isPopStateEvent()) wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, PopStateEvent, event); else wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, Event, event); return wrapper; }
static JSObject* constructXSLTProcessor(ExecState* exec, JSObject* constructor, const ArgList&) { JSXSLTProcessorConstructor* jsConstructor = static_cast<JSXSLTProcessorConstructor*>(constructor); return CREATE_DOM_OBJECT_WRAPPER(exec, jsConstructor->globalObject(), XSLTProcessor, XSLTProcessor::create().get()); }
JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, SVGPathSeg* object) { if (!object) return jsNull(); if (JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), object)) return wrapper; switch (object->pathSegType()) { case SVGPathSeg::PATHSEG_CLOSEPATH: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegClosePath, object); case SVGPathSeg::PATHSEG_MOVETO_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoAbs, object); case SVGPathSeg::PATHSEG_MOVETO_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoRel, object); case SVGPathSeg::PATHSEG_LINETO_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoAbs, object); case SVGPathSeg::PATHSEG_LINETO_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoRel, object); case SVGPathSeg::PATHSEG_CURVETO_CUBIC_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicAbs, object); case SVGPathSeg::PATHSEG_CURVETO_CUBIC_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicRel, object); case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticAbs, object); case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticRel, object); case SVGPathSeg::PATHSEG_ARC_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcAbs, object); case SVGPathSeg::PATHSEG_ARC_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcRel, object); case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalAbs, object); case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalRel, object); case SVGPathSeg::PATHSEG_LINETO_VERTICAL_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalAbs, object); case SVGPathSeg::PATHSEG_LINETO_VERTICAL_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalRel, object); case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothAbs, object); case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothRel, object); case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothAbs, object); case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothRel, object); case SVGPathSeg::PATHSEG_UNKNOWN: default: return CREATE_DOM_OBJECT_WRAPPER(exec, globalObject, SVGPathSeg, object); } }