2011-06-18 Yufeng Shen <miletus@chromium.org>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 19 Jun 2011 04:13:49 +0000 (04:13 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 19 Jun 2011 04:13:49 +0000 (04:13 +0000)
        Reviewed by Darin Fisher.

        Adding "force" filed to Touch Event
        https://bugs.webkit.org/show_bug.cgi?id=62766

        * fast/events/touch/document-create-touch-expected.txt:
        * fast/events/touch/script-tests/document-create-touch.js:
2011-06-18  Yufeng Shen  <miletus@chromium.org>

        Reviewed by Darin Fisher.

        Adding "force" filed to Touch Event
        https://bugs.webkit.org/show_bug.cgi?id=62766

        * dom/Document.cpp:
        (WebCore::Document::createTouch):
        * dom/Document.h:
        * dom/Document.idl:
        * dom/Touch.cpp:
        (WebCore::Touch::Touch):
        * dom/Touch.h:
        (WebCore::Touch::create):
        (WebCore::Touch::webkitForce):
        * dom/Touch.idl:
        * page/EventHandler.cpp:
        (WebCore::EventHandler::handleTouchEvent):
        * platform/PlatformTouchPoint.h:
        (WebCore::PlatformTouchPoint::force):
2011-06-18  Yufeng Shen  <miletus@chromium.org>

        Reviewed by Darin Fisher.

        Adding "force" filed to Touch Event
        https://bugs.webkit.org/show_bug.cgi?id=62766

        * public/WebTouchPoint.h:
        (WebKit::WebTouchPoint::WebTouchPoint):
        * src/WebInputEventConversion.cpp:
        (WebKit::PlatformTouchPointBuilder::PlatformTouchPointBuilder):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@89212 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/events/touch/document-create-touch-expected.txt
LayoutTests/fast/events/touch/script-tests/document-create-touch.js
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Document.h
Source/WebCore/dom/Document.idl
Source/WebCore/dom/Touch.cpp
Source/WebCore/dom/Touch.h
Source/WebCore/dom/Touch.idl
Source/WebCore/page/EventHandler.cpp
Source/WebCore/platform/PlatformTouchPoint.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/public/WebTouchPoint.h
Source/WebKit/chromium/src/WebInputEventConversion.cpp

index 2ed65dc..bb40630 100644 (file)
@@ -1,3 +1,13 @@
+2011-06-18  Yufeng Shen  <miletus@chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Adding "force" filed to Touch Event
+        https://bugs.webkit.org/show_bug.cgi?id=62766
+
+        * fast/events/touch/document-create-touch-expected.txt:
+        * fast/events/touch/script-tests/document-create-touch.js:
+
 2011-06-18  Alice Boxhall  <aboxhall@chromium.org>
 
         Reviewed by Chris Fleizach.
index 3e9c518..9ed1f16 100644 (file)
@@ -14,6 +14,7 @@ PASS touch.screenY is 103
 PASS touch.webkitRadiusX is 5
 PASS touch.webkitRadiusY is 3
 PASS touch.webkitRotationAngle is 10
+PASS touch.webkitForce is 10
 PASS emptyTouch is non-null.
 PASS emptyTouch.target is null
 PASS emptyTouch.identifier is 0
@@ -24,6 +25,7 @@ PASS emptyTouch.screenY is 0
 PASS emptyTouch.webkitRadiusX is 0
 PASS emptyTouch.webkitRadiusY is 0
 PASS emptyTouch.webkitRotationAngle is NaN
+PASS emptyTouch.webkitForce is NaN
 PASS badParamsTouch is non-null.
 PASS badParamsTouch.target is null
 PASS badParamsTouch.identifier is 0
@@ -34,6 +36,7 @@ PASS badParamsTouch.screenY is 104
 PASS badParamsTouch.webkitRadiusX is 0
 PASS badParamsTouch.webkitRadiusY is 0
 PASS badParamsTouch.webkitRotationAngle is NaN
+PASS badParamsTouch.webkitForce is NaN
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 3c405b2..7c8ef87 100644 (file)
@@ -9,7 +9,7 @@ box.style.height = "100px";
 document.body.appendChild(box);
 
 var target = document.getElementById("box");
-var touch = document.createTouch(window, target, 1, 100, 101, 102, 103, 5, 3, 10);
+var touch = document.createTouch(window, target, 1, 100, 101, 102, 103, 5, 3, 10, 10);
 shouldBeNonNull("touch");
 shouldBe("touch.target", "box");
 shouldBe("touch.identifier", "1");
@@ -20,6 +20,7 @@ shouldBe("touch.screenY", "103");
 shouldBe("touch.webkitRadiusX", "5");
 shouldBe("touch.webkitRadiusY", "3");
 shouldBe("touch.webkitRotationAngle", "10");
+shouldBe("touch.webkitForce", "10");
 
 var emptyTouch = document.createTouch();
 shouldBeNonNull("emptyTouch");
@@ -32,9 +33,10 @@ shouldBe("emptyTouch.screenY", "0");
 shouldBe("emptyTouch.webkitRadiusX", "0");
 shouldBe("emptyTouch.webkitRadiusY", "0");
 shouldBeNaN("emptyTouch.webkitRotationAngle");
+shouldBeNaN("emptyTouch.webkitForce");
 
 // Try invoking with incorrect parameter types.
-var badParamsTouch = document.createTouch(function(x) { return x; }, 12, 'a', 'b', 'c', function(x) { return x; }, 104, 'a', 'b', 'c');
+var badParamsTouch = document.createTouch(function(x) { return x; }, 12, 'a', 'b', 'c', function(x) { return x; }, 104, 'a', 'b', 'c', 'd');
 shouldBeNonNull("badParamsTouch");
 shouldBeNull("badParamsTouch.target");
 shouldBe("badParamsTouch.identifier", "0");
@@ -45,6 +47,7 @@ shouldBe("badParamsTouch.screenY", "104");
 shouldBe("badParamsTouch.webkitRadiusX", "0");
 shouldBe("badParamsTouch.webkitRadiusY", "0");
 shouldBeNaN("badParamsTouch.webkitRotationAngle");
+shouldBeNaN("badParamsTouch.webkitForce");
 
 successfullyParsed = true;
 isSuccessfullyParsed();
index a5d3b66..9dc9781 100644 (file)
@@ -1,3 +1,25 @@
+2011-06-18  Yufeng Shen  <miletus@chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Adding "force" filed to Touch Event
+        https://bugs.webkit.org/show_bug.cgi?id=62766
+
+        * dom/Document.cpp:
+        (WebCore::Document::createTouch):
+        * dom/Document.h:
+        * dom/Document.idl:
+        * dom/Touch.cpp:
+        (WebCore::Touch::Touch):
+        * dom/Touch.h:
+        (WebCore::Touch::create):
+        (WebCore::Touch::webkitForce):
+        * dom/Touch.idl:
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::handleTouchEvent):
+        * platform/PlatformTouchPoint.h:
+        (WebCore::PlatformTouchPoint::force):
+
 2011-06-18  Jer Noble  <jer.noble@apple.com>
 
         Reviewed by Darin Adler.
index a3bf0f2..b8665ec 100644 (file)
@@ -4986,7 +4986,7 @@ void Document::serviceScriptedAnimations(DOMTimeStamp time)
 #endif
 
 #if ENABLE(TOUCH_EVENTS)
-PassRefPtr<Touch> Document::createTouch(DOMWindow* window, EventTarget* target, int identifier, int pageX, int pageY, int screenX, int screenY, int radiusX, int radiusY, float rotationAngle, ExceptionCode&) const
+PassRefPtr<Touch> Document::createTouch(DOMWindow* window, EventTarget* target, int identifier, int pageX, int pageY, int screenX, int screenY, int radiusX, int radiusY, float rotationAngle, float force, ExceptionCode&) const
 {
     // FIXME: It's not clear from the documentation at
     // http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html
@@ -4994,7 +4994,7 @@ PassRefPtr<Touch> Document::createTouch(DOMWindow* window, EventTarget* target,
     // and implement them here. See https://bugs.webkit.org/show_bug.cgi?id=47819
     // Ditto for the createTouchList method below.
     Frame* frame = window ? window->frame() : this->frame();
-    return Touch::create(frame, target, identifier, screenX, screenY, pageX, pageY, radiusX, radiusY, rotationAngle);
+    return Touch::create(frame, target, identifier, screenX, screenY, pageX, pageY, radiusX, radiusY, rotationAngle, force);
 }
 
 PassRefPtr<TouchList> Document::createTouchList(ExceptionCode&) const
index fec16c2..6e50037 100644 (file)
@@ -1064,7 +1064,7 @@ public:
     bool isDelayingLoadEvent() const { return m_loadEventDelayCount; }
 
 #if ENABLE(TOUCH_EVENTS)
-    PassRefPtr<Touch> createTouch(DOMWindow*, EventTarget*, int identifier, int pageX, int pageY, int screenX, int screenY, int radiusX, int radiusY, float rotationAngle, ExceptionCode&) const;
+    PassRefPtr<Touch> createTouch(DOMWindow*, EventTarget*, int identifier, int pageX, int pageY, int screenX, int screenY, int radiusX, int radiusY, float rotationAngle, float force, ExceptionCode&) const;
     PassRefPtr<TouchList> createTouchList(ExceptionCode&) const;
 #endif
 
index 89a552f..3d704ac 100644 (file)
@@ -327,7 +327,8 @@ module core {
                                                          in long screenY,
                                                          in long webkitRadiusX,
                                                          in long webkitRadiusY,
-                                                         in float webkitRotationAngle)
+                                                         in float webkitRotationAngle,
+                                                         in float webkitForce)
             raises (DOMException);
         [ReturnsNew, EnabledAtRuntime, Custom] TouchList createTouchList()
             raises (DOMException);
index 376b6bd..cf721df 100644 (file)
@@ -54,7 +54,7 @@ static int contentsY(Frame* frame)
     return frameView->scrollY() / frame->pageZoomFactor();
 }
 
-Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle)
+Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force)
     : m_target(target)
     , m_identifier(identifier)
     , m_clientX(pageX - contentsX(frame))
@@ -66,6 +66,7 @@ Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX
     , m_radiusX(radiusX)
     , m_radiusY(radiusY)
     , m_rotationAngle(rotationAngle)
+    , m_force(force)
 {
 }
 
index cc51218..f4c9e80 100644 (file)
@@ -41,10 +41,10 @@ class Touch : public RefCounted<Touch> {
 public:
     static PassRefPtr<Touch> create(Frame* frame, EventTarget* target,
             unsigned identifier, int screenX, int screenY, int pageX, int pageY,
-            int radiusX, int radiusY, float rotationAngle)
+            int radiusX, int radiusY, float rotationAngle, float force)
     {
         return adoptRef(new Touch(frame, target, identifier, screenX, 
-                screenY, pageX, pageY, radiusX, radiusY, rotationAngle));
+                screenY, pageX, pageY, radiusX, radiusY, rotationAngle, force));
     }
 
     EventTarget* target() const { return m_target.get(); }
@@ -58,11 +58,12 @@ public:
     int webkitRadiusX() const { return m_radiusX; }
     int webkitRadiusY() const { return m_radiusY; }
     float webkitRotationAngle() const { return m_rotationAngle; }
+    float webkitForce() const { return m_force; }
 
 private:
     Touch(Frame* frame, EventTarget* target, unsigned identifier,
             int screenX, int screenY, int pageX, int pageY,
-            int radiusX, int radiusY, float rotationAngle);
+            int radiusX, int radiusY, float rotationAngle, float force);
 
     RefPtr<EventTarget> m_target;
     unsigned m_identifier;
@@ -75,6 +76,7 @@ private:
     int m_radiusX;
     int m_radiusY;
     float m_rotationAngle;
+    float m_force;
 };
 
 } // namespace WebCore
index 6d47ebc..172da09 100644 (file)
@@ -40,5 +40,6 @@ module events {
         readonly attribute int              webkitRadiusX;
         readonly attribute int              webkitRadiusY;
         readonly attribute float            webkitRotationAngle;
+        readonly attribute float            webkitForce;
     };
 }
index 2775b41..948b386 100644 (file)
@@ -3227,7 +3227,7 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event)
         RefPtr<Touch> touch = Touch::create(doc->frame(), touchTarget.get(), point.id(),
                                             point.screenPos().x(), point.screenPos().y(),
                                             adjustedPageX, adjustedPageY,
-                                            point.radiusX(), point.radiusY(), point.rotationAngle());
+                                            point.radiusX(), point.radiusY(), point.rotationAngle(), point.force());
 
         // Ensure this target's touch list exists, even if it ends up empty, so it can always be passed to TouchEvent::Create below.
         TargetTouchesMap::iterator targetTouchesIterator = touchesByTarget.find(touchTarget.get());
index 9d9b4fc..2d81445 100644 (file)
@@ -62,6 +62,7 @@ public:
     int radiusX() const { return m_radiusX; }
     int radiusY() const { return m_radiusY; }
     float rotationAngle() const { return m_rotationAngle; }
+    float force() const { return m_force; }
 
 protected:
     unsigned m_id;
@@ -71,6 +72,7 @@ protected:
     int m_radiusY;
     int m_radiusX;
     float m_rotationAngle;
+    float m_force;
 };
 
 }
index da7040a..f177637 100644 (file)
@@ -1,3 +1,15 @@
+2011-06-18  Yufeng Shen  <miletus@chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Adding "force" filed to Touch Event
+        https://bugs.webkit.org/show_bug.cgi?id=62766
+
+        * public/WebTouchPoint.h:
+        (WebKit::WebTouchPoint::WebTouchPoint):
+        * src/WebInputEventConversion.cpp:
+        (WebKit::PlatformTouchPointBuilder::PlatformTouchPointBuilder):
+
 2011-06-17  Chris Rogers  <crogers@google.com>
 
         Unreviewed build fix.
index 62e5769..558c37c 100644 (file)
@@ -50,6 +50,7 @@ public:
         , radiusX(0)
         , radiusY(0)
         , rotationAngle(0)
+        , force(0)
     {
     }
 
@@ -70,6 +71,7 @@ public:
     int radiusX;
     int radiusY;
     float rotationAngle;
+    float force;
 };
 
 } // namespace WebKit
index d3db9cf..dc4442d 100644 (file)
@@ -215,6 +215,7 @@ PlatformTouchPointBuilder::PlatformTouchPointBuilder(Widget* widget, const WebTo
     m_radiusY = point.radiusY;
     m_radiusX = point.radiusX;
     m_rotationAngle = point.rotationAngle;
+    m_force = point.force;
 }
 
 PlatformTouchEventBuilder::PlatformTouchEventBuilder(Widget* widget, const WebTouchEvent& event)