Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / common / input / web_input_event_traits.cc
index fa9f433..4de53c7 100644 (file)
@@ -8,13 +8,17 @@
 #include <limits>
 
 #include "base/logging.h"
+#include "base/strings/stringprintf.h"
 
+using base::StringAppendF;
+using base::SStringPrintf;
 using blink::WebGestureEvent;
 using blink::WebInputEvent;
 using blink::WebKeyboardEvent;
 using blink::WebMouseEvent;
 using blink::WebMouseWheelEvent;
 using blink::WebTouchEvent;
+using blink::WebTouchPoint;
 using std::numeric_limits;
 
 namespace content {
@@ -22,6 +26,94 @@ namespace {
 
 const int kInvalidTouchIndex = -1;
 
+void ApppendEventDetails(const WebKeyboardEvent& event, std::string* result) {
+  StringAppendF(result,
+                "{\n WinCode: %d\n NativeCode: %d\n IsSystem: %d\n"
+                " Text: %s\n UnmodifiedText: %s\n KeyIdentifier: %s\n}",
+                event.windowsKeyCode,
+                event.nativeKeyCode,
+                event.isSystemKey,
+                reinterpret_cast<const char*>(event.text),
+                reinterpret_cast<const char*>(event.unmodifiedText),
+                reinterpret_cast<const char*>(event.keyIdentifier));
+}
+
+void ApppendEventDetails(const WebMouseEvent& event, std::string* result) {
+  StringAppendF(result,
+                "{\n Button: %d\n Pos: (%d, %d)\n WindowPos: (%d, %d)\n"
+                " GlobalPos: (%d, %d)\n Movement: (%d, %d)\n Clicks: %d\n}",
+                event.button,
+                event.x,
+                event.y,
+                event.windowX,
+                event.windowY,
+                event.globalX,
+                event.globalY,
+                event.movementX,
+                event.movementY,
+                event.clickCount);
+}
+
+void ApppendEventDetails(const WebMouseWheelEvent& event, std::string* result) {
+  StringAppendF(result,
+                "{\n Delta: (%f, %f)\n WheelTicks: (%f, %f)\n Accel: (%f, %f)\n"
+                " ScrollByPage: %d\n HasPreciseScrollingDeltas: %d\n"
+                " Phase: (%d, %d)\n CanRubberband: (%d, %d)\n}",
+                event.deltaX,
+                event.deltaY,
+                event.wheelTicksX,
+                event.wheelTicksY,
+                event.accelerationRatioX,
+                event.accelerationRatioY,
+                event.scrollByPage,
+                event.hasPreciseScrollingDeltas,
+                event.phase,
+                event.momentumPhase,
+                event.canRubberbandLeft,
+                event.canRubberbandRight);
+}
+
+void ApppendEventDetails(const WebGestureEvent& event, std::string* result) {
+  StringAppendF(result,
+                "{\n Pos: (%d, %d)\n GlobalPos: (%d, %d)\n SourceDevice: %d\n"
+                " RawData: (%f, %f, %f, %f)\n}",
+                event.x,
+                event.y,
+                event.globalX,
+                event.globalY,
+                event.sourceDevice,
+                event.data.scrollUpdate.deltaX,
+                event.data.scrollUpdate.deltaY,
+                event.data.scrollUpdate.velocityX,
+                event.data.scrollUpdate.velocityY);
+}
+
+void ApppendTouchPointDetails(const WebTouchPoint& point, std::string* result) {
+  StringAppendF(result,
+                 "  (ID: %d, State: %d, ScreenPos: (%f, %f), Pos: (%f, %f),"
+                     " Radius: (%f, %f), Rot: %f, Force: %f),\n",
+  point.id,
+  point.state,
+  point.screenPosition.x,
+  point.screenPosition.y,
+  point.position.x,
+  point.position.y,
+  point.radiusX,
+  point.radiusY,
+  point.rotationAngle,
+  point.force);
+}
+
+void ApppendEventDetails(const WebTouchEvent& event, std::string* result) {
+  StringAppendF(result,
+                "{\n Touches: %u, Cancelable: %d,\n[\n",
+                event.touchesLength,
+                event.cancelable);
+  for (unsigned i = 0; i < event.touchesLength; ++i)
+    ApppendTouchPointDetails(event.touches[i], result);
+  result->append(" ]\n}");
+}
+
 bool CanCoalesce(const WebKeyboardEvent& event_to_coalesce,
                  const WebKeyboardEvent& event) {
   return false;
@@ -184,6 +276,19 @@ void Coalesce(const WebGestureEvent& event_to_coalesce,
   }
 }
 
+struct WebInputEventToString {
+  template <class EventType>
+  bool Execute(const WebInputEvent& event, std::string* result) const {
+    SStringPrintf(result, "%s (Time: %lf, Modifiers: %d)\n",
+                  WebInputEventTraits::GetName(event.type),
+                  event.timeStampSeconds,
+                  event.modifiers);
+    const EventType& typed_event = static_cast<const EventType&>(event);
+    ApppendEventDetails(typed_event, result);
+    return true;
+  }
+};
+
 struct WebInputEventSize {
   template <class EventType>
   bool Execute(WebInputEvent::Type /* type */, size_t* type_size) const {
@@ -306,6 +411,12 @@ const char* WebInputEventTraits::GetName(WebInputEvent::Type type) {
   return "";
 }
 
+std::string WebInputEventTraits::ToString(const WebInputEvent& event) {
+  std::string result;
+  Apply(WebInputEventToString(), event.type, event, &result);
+  return result;
+}
+
 size_t WebInputEventTraits::GetSize(WebInputEvent::Type type) {
   size_t size = 0;
   Apply(WebInputEventSize(), type, type, &size);