diff options
Diffstat (limited to 'WebCore/bindings/js/JSEventCustom.cpp')
-rw-r--r-- | WebCore/bindings/js/JSEventCustom.cpp | 95 |
1 files changed, 67 insertions, 28 deletions
diff --git a/WebCore/bindings/js/JSEventCustom.cpp b/WebCore/bindings/js/JSEventCustom.cpp index 4ba7f96..9c7d7a0 100644 --- a/WebCore/bindings/js/JSEventCustom.cpp +++ b/WebCore/bindings/js/JSEventCustom.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -31,6 +31,7 @@ #include "Clipboard.h" #include "Event.h" +#include "JSClipboard.h" #include "JSKeyboardEvent.h" #include "JSMessageEvent.h" #include "JSMouseEvent.h" @@ -39,7 +40,10 @@ #include "JSProgressEvent.h" #include "JSTextEvent.h" #include "JSUIEvent.h" +#include "JSWebKitAnimationEvent.h" +#include "JSWebKitTransitionEvent.h" #include "JSWheelEvent.h" +#include "JSXMLHttpRequestProgressEvent.h" #include "KeyboardEvent.h" #include "MessageEvent.h" #include "MouseEvent.h" @@ -48,10 +52,28 @@ #include "ProgressEvent.h" #include "TextEvent.h" #include "UIEvent.h" +#include "WebKitAnimationEvent.h" +#include "WebKitTransitionEvent.h" #include "WheelEvent.h" -#include "kjs_events.h" +#include "XMLHttpRequestProgressEvent.h" +#include <runtime/JSLock.h> -using namespace KJS; +#if ENABLE(DOM_STORAGE) +#include "JSStorageEvent.h" +#include "StorageEvent.h" +#endif + +#if ENABLE(SVG) +#include "JSSVGZoomEvent.h" +#include "SVGZoomEvent.h" +#endif + +#if ENABLE(TOUCH_EVENTS) // Android +#include "JSTouchEvent.h" +#include "TouchEvent.h" +#endif + +using namespace JSC; namespace WebCore { @@ -62,41 +84,58 @@ JSValue* JSEvent::clipboardData(ExecState* exec) const JSValue* toJS(ExecState* exec, Event* event) { - JSLock lock; + JSLock lock(false); if (!event) return jsNull(); + DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), event); + if (wrapper) + return wrapper; - DOMObject* ret = ScriptInterpreter::getDOMObject(event); - if (ret) - return ret; - - if (event->isKeyboardEvent()) - ret = new JSKeyboardEvent(JSKeyboardEventPrototype::self(exec), static_cast<KeyboardEvent*>(event)); - else if (event->isTextEvent()) - ret = new JSTextEvent(JSTextEventPrototype::self(exec), static_cast<TextEvent*>(event)); - else if (event->isMouseEvent()) - ret = new JSMouseEvent(JSMouseEventPrototype::self(exec), static_cast<MouseEvent*>(event)); - else if (event->isWheelEvent()) - ret = new JSWheelEvent(JSWheelEventPrototype::self(exec), static_cast<WheelEvent*>(event)); - else if (event->isUIEvent()) - ret = new JSUIEvent(JSUIEventPrototype::self(exec), static_cast<UIEvent*>(event)); - else if (event->isMutationEvent()) - ret = new JSMutationEvent(JSMutationEventPrototype::self(exec), static_cast<MutationEvent*>(event)); + if (event->isUIEvent()) { + if (event->isKeyboardEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, KeyboardEvent, event); + else if (event->isTextEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, TextEvent, event); + else if (event->isMouseEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, MouseEvent, event); + else if (event->isWheelEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, WheelEvent, event); +#if ENABLE(SVG) + else if (event->isSVGZoomEvent()) + wrapper = CREATE_SVG_OBJECT_WRAPPER(exec, SVGZoomEvent, event, 0); +#endif +#if ENABLE(TOUCH_EVENTS) // Android + else if (event->isTouchEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, TouchEvent, event); +#endif + else + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, UIEvent, event); + } else if (event->isMutationEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, MutationEvent, event); else if (event->isOverflowEvent()) - ret = new JSOverflowEvent(JSOverflowEventPrototype::self(exec), static_cast<OverflowEvent*>(event)); -#if ENABLE(CROSS_DOCUMENT_MESSAGING) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, OverflowEvent, event); else if (event->isMessageEvent()) - ret = new JSMessageEvent(JSMessageEventPrototype::self(exec), static_cast<MessageEvent*>(event)); + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, MessageEvent, event); + else if (event->isProgressEvent()) { + if (event->isXMLHttpRequestProgressEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, XMLHttpRequestProgressEvent, event); + else + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, ProgressEvent, event); + } +#if ENABLE(DOM_STORAGE) + else if (event->isStorageEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, StorageEvent, event); #endif - else if (event->isProgressEvent()) - ret = new JSProgressEvent(JSProgressEventPrototype::self(exec), static_cast<ProgressEvent*>(event)); + else if (event->isWebKitAnimationEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, WebKitAnimationEvent, event); + else if (event->isWebKitTransitionEvent()) + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, WebKitTransitionEvent, event); else - ret = new JSEvent(JSEventPrototype::self(exec), event); + wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, Event, event); - ScriptInterpreter::putDOMObject(event, ret); - return ret; + return wrapper; } } // namespace WebCore |