Index: Source/WebCore/bindings/dart/custom/DartEventCustom.cpp |
diff --git a/Source/WebCore/bindings/dart/custom/DartEventCustom.cpp b/Source/WebCore/bindings/dart/custom/DartEventCustom.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..73e4faab7226ec564048f2551caea60ab04eb35e |
--- /dev/null |
+++ b/Source/WebCore/bindings/dart/custom/DartEventCustom.cpp |
@@ -0,0 +1,102 @@ |
+// Copyright 2011, Google Inc. |
+// All rights reserved. |
+// |
+// Redistribution and use in source and binary forms, with or without |
+// modification, are permitted provided that the following conditions are |
+// met: |
+// |
+// * Redistributions of source code must retain the above copyright |
+// notice, this list of conditions and the following disclaimer. |
+// * Redistributions in binary form must reproduce the above |
+// copyright notice, this list of conditions and the following disclaimer |
+// in the documentation and/or other materials provided with the |
+// distribution. |
+// * Neither the name of Google Inc. nor the names of its |
+// contributors may be used to endorse or promote products derived from |
+// this software without specific prior written permission. |
+// |
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ |
+#include "config.h" |
+#include "DartEvent.h" |
+ |
+#include "DartAudioProcessingEvent.h" |
+#include "DartBeforeLoadEvent.h" |
+#include "DartCloseEvent.h" |
+#include "DartCompositionEvent.h" |
+#include "DartCustomEvent.h" |
+#include "DartDeviceMotionEvent.h" |
+#include "DartDeviceOrientationEvent.h" |
+#include "DartErrorEvent.h" |
+#include "DartEvent.h" |
+#include "DartHashChangeEvent.h" |
+#include "DartIDBVersionChangeEvent.h" |
+#include "DartKeyboardEvent.h" |
+#include "DartMediaStreamEvent.h" |
+#include "DartMessageEvent.h" |
+#include "DartMouseEvent.h" |
+#include "DartMutationEvent.h" |
+#include "DartOfflineAudioCompletionEvent.h" |
+#include "DartOverflowEvent.h" |
+#include "DartPageTransitionEvent.h" |
+#include "DartPopStateEvent.h" |
+#include "DartProgressEvent.h" |
+#include "DartSVGZoomEvent.h" |
+#include "DartSpeechInputEvent.h" |
+#include "DartStorageEvent.h" |
+#include "DartTextEvent.h" |
+#include "DartTouchEvent.h" |
+#include "DartUIEvent.h" |
+#include "DartWebKitAnimationEvent.h" |
+#include "DartWebKitTransitionEvent.h" |
+#include "DartWebGLContextEvent.h" |
+#include "DartWheelEvent.h" |
+#include "DartXMLHttpRequestProgressEvent.h" |
+#include "EventHeaders.h" |
+#include "EventInterfaces.h" |
+ |
+#include <dart_api.h> |
+ |
+namespace WebCore { |
+ |
+#define TRY_TO_WRAP_WITH_INTERFACE(interfaceName) \ |
+ if (eventNames().interfaceFor##interfaceName == desiredInterface) \ |
+ return toDartValue(static_cast<interfaceName*>(event)); |
+ |
+Dart_Handle toDartValue(Event* event) |
+{ |
+ if (!event) |
+ return 0; |
+ |
+ String desiredInterface = event->interfaceName(); |
+ |
+ // We need to check Event first to avoid infinite recursion. |
+ if (eventNames().interfaceForEvent == desiredInterface) |
+ return DartDOMWrapper::toDart<DartEvent>(event); |
+ |
+ DOM_EVENT_INTERFACES_FOR_EACH(TRY_TO_WRAP_WITH_INTERFACE) |
+ |
+ return DartDOMWrapper::toDart<DartEvent>(event); |
+} |
+ |
+namespace DartEventInternal { |
+ |
+void clipboardDataGetter(Dart_NativeArguments) |
+{ |
+ // FIXME: proper implementation. |
+ DART_UNIMPLEMENTED(); |
+} |
+ |
+} |
+ |
+} |