#include "config.h"
#include "V8Event.h"
#include "Clipboard.h"
#include "ClipboardEvent.h"
#include "Event.h"
#include "EventHeaders.h"
#include "EventInterfaces.h"
#include "EventNames.h"
#include "V8Binding.h"
#include "V8Clipboard.h"
#include "V8Proxy.h"
namespace WebCore {
void V8Event::valueAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
{
Event* event = V8Event::toNative(info.Holder());
event->setDefaultPrevented(!value->BooleanValue());
}
v8::Handle<v8::Value> V8Event::dataTransferAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
Event* event = V8Event::toNative(info.Holder());
if (event->isDragEvent())
return toV8(static_cast<MouseEvent*>(event)->clipboard(), info.GetIsolate());
return v8::Undefined();
}
v8::Handle<v8::Value> V8Event::clipboardDataAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
{
Event* event = V8Event::toNative(info.Holder());
if (event->isClipboardEvent())
return toV8(static_cast<ClipboardEvent*>(event)->clipboard(), info.GetIsolate());
return v8::Undefined();
}
#define TRY_TO_WRAP_WITH_INTERFACE(interfaceName) \
if (eventNames().interfaceFor##interfaceName == desiredInterface) \
return toV8(static_cast<interfaceName*>(event), isolate);
v8::Handle<v8::Value> toV8(Event* event, v8::Isolate *isolate)
{
if (!event)
return v8::Null();
String desiredInterface = event->interfaceName();
if (eventNames().interfaceForEvent == desiredInterface)
return V8Event::wrap(event, isolate);
DOM_EVENT_INTERFACES_FOR_EACH(TRY_TO_WRAP_WITH_INTERFACE)
return V8Event::wrap(event, isolate);
}
}