From 93bec1ec2d7bca6a6df6bb0391d1b6a0d6562f33 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Sun, 17 Oct 2010 16:26:08 +0100 Subject: [PATCH] DO NOT MERGE : Fix Webkit comments for document.createTouch Cherry pick to GingerBread. See WebKit bug https://bugs.webkit.org/show_bug.cgi?id=47676 for details. Bug: 3101402 Change-Id: I8e2b0fc54468cd0827229243716c7d6bb62c7b3c --- .../fast/events/touch/document-create-touch-expected.txt | 7 +++++++ .../fast/events/touch/script-tests/document-create-touch.js | 10 ++++++++++ WebCore/dom/Document.cpp | 7 ++++++- WebCore/dom/Document.h | 2 +- WebCore/dom/Document.idl | 8 ++++++-- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/LayoutTests/fast/events/touch/document-create-touch-expected.txt b/LayoutTests/fast/events/touch/document-create-touch-expected.txt index c1c647f62..2bf33cbf3 100644 --- a/LayoutTests/fast/events/touch/document-create-touch-expected.txt +++ b/LayoutTests/fast/events/touch/document-create-touch-expected.txt @@ -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 diff --git a/LayoutTests/fast/events/touch/script-tests/document-create-touch.js b/LayoutTests/fast/events/touch/script-tests/document-create-touch.js index dd383acb3..c51c7e30b 100644 --- a/LayoutTests/fast/events/touch/script-tests/document-create-touch.js +++ b/LayoutTests/fast/events/touch/script-tests/document-create-touch.js @@ -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(); diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp index dca1187ca..c63195661 100644 --- a/WebCore/dom/Document.cpp +++ b/WebCore/dom/Document.cpp @@ -4891,8 +4891,13 @@ InspectorTimelineAgent* Document::inspectorTimelineAgent() const #endif #if ENABLE(TOUCH_EVENTS) -PassRefPtr Document::createTouch(DOMWindow* window, Node* target, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const +PassRefPtr 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); } diff --git a/WebCore/dom/Document.h b/WebCore/dom/Document.h index 68e3ac576..b56bf01f7 100644 --- a/WebCore/dom/Document.h +++ b/WebCore/dom/Document.h @@ -952,7 +952,7 @@ public: void setContainsValidityStyleRules() { m_containsValidityStyleRules = true; } #if ENABLE(TOUCH_EVENTS) - PassRefPtr createTouch(DOMWindow*, Node*, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const; + PassRefPtr createTouch(DOMWindow*, EventTarget*, int identifier, int pageX, int pageY, int screenX, int screenY, ExceptionCode&) const; PassRefPtr createTouchList(ExceptionCode&) const; #endif diff --git a/WebCore/dom/Document.idl b/WebCore/dom/Document.idl index c8cc45d4b..13d9d1b98 100644 --- a/WebCore/dom/Document.idl +++ b/WebCore/dom/Document.idl @@ -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 + }; } -- 2.11.0