OSDN Git Service

DO NOT MERGE : Fix Webkit comments for document.createTouch
authorBen Murdoch <benm@google.com>
Sun, 17 Oct 2010 15:26:08 +0000 (16:26 +0100)
committerBen Murdoch <benm@google.com>
Tue, 19 Oct 2010 13:42:20 +0000 (14:42 +0100)
Cherry pick to GingerBread.

See WebKit bug https://bugs.webkit.org/show_bug.cgi?id=47676
for details.

Bug: 3101402
Change-Id: I8e2b0fc54468cd0827229243716c7d6bb62c7b3c

LayoutTests/fast/events/touch/document-create-touch-expected.txt
LayoutTests/fast/events/touch/script-tests/document-create-touch.js
WebCore/dom/Document.cpp
WebCore/dom/Document.h
WebCore/dom/Document.idl

index c1c647f..2bf33cb 100644 (file)
@@ -18,6 +18,13 @@ PASS emptyTouch.pageX is 0
 PASS emptyTouch.pageY is 0
 PASS emptyTouch.screenX is 0
 PASS emptyTouch.screenY is 0
+PASS badParamsTouch is non-null.
+PASS badParamsTouch.target is null
+PASS badParamsTouch.identifier is 0
+PASS badParamsTouch.pageX is 0
+PASS badParamsTouch.pageY is 0
+PASS badParamsTouch.screenX is 0
+PASS badParamsTouch.screenY is 104
 PASS successfullyParsed is true
 
 TEST COMPLETE
index dd383ac..c51c7e3 100644 (file)
@@ -27,5 +27,15 @@ shouldBe("emptyTouch.pageY", "0");
 shouldBe("emptyTouch.screenX", "0");
 shouldBe("emptyTouch.screenY", "0");
 
+// Try invoking with incorrect parameter types.
+var badParamsTouch = document.createTouch(function(x) { return x; }, 12, 'a', 'b', 'c', function(x) { return x; }, 104);
+shouldBeNonNull("badParamsTouch");
+shouldBeNull("badParamsTouch.target");
+shouldBe("badParamsTouch.identifier", "0");
+shouldBe("badParamsTouch.pageX", "0");
+shouldBe("badParamsTouch.pageY", "0");
+shouldBe("badParamsTouch.screenX", "0");
+shouldBe("badParamsTouch.screenY", "104");
+
 successfullyParsed = true;
 isSuccessfullyParsed();
index dca1187..c631956 100644 (file)
@@ -4891,8 +4891,13 @@ InspectorTimelineAgent* Document::inspectorTimelineAgent() const
 #endif
 
 #if ENABLE(TOUCH_EVENTS)
-PassRefPtr<Touch> Document::createTouch(DOMWindow* window, Node* target, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const
+PassRefPtr<Touch> Document::createTouch(DOMWindow* window, EventTarget* target, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const
 {
+    // FIXME: It's not clear from the documentation at
+    // http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html
+    // when this method should throw and nor is it by inspection of iOS behavior. It would be nice to verify any cases where it throws under iOS
+    // 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);
 }
index 68e3ac5..b56bf01 100644 (file)
@@ -952,7 +952,7 @@ public:
     void setContainsValidityStyleRules() { m_containsValidityStyleRules = true; }
 
 #if ENABLE(TOUCH_EVENTS)
-    PassRefPtr<Touch> createTouch(DOMWindow*, Node*, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const;
+    PassRefPtr<Touch> createTouch(DOMWindow*, EventTarget*, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const;
     PassRefPtr<TouchList> createTouchList(ExceptionCode&) const;
 #endif
 
index c8cc45d..13d9d1b 100644 (file)
@@ -311,8 +311,12 @@ module core {
         attribute [DontEnum] EventListener ontouchmove;
         attribute [DontEnum] EventListener ontouchend;
         attribute [DontEnum] EventListener ontouchcancel;
+#endif
+#endif
+
+#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
         [ReturnsNew] Touch createTouch(in DOMWindow window,
-                                       in Node target,
+                                       in EventTarget target,
                                        in long identifier,
                                        in long pageX,
                                        in long pageY,
@@ -322,7 +326,7 @@ module core {
         [ReturnsNew] TouchList createTouchList()
             raises (DOMException);
 #endif
-#endif
+
     };
 
 }