summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/JSEventCustom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/js/JSEventCustom.cpp')
-rw-r--r--WebCore/bindings/js/JSEventCustom.cpp95
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