Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Unified Diff: LayoutTests/fast/events/touch/touch-fractional-coordinates.html

Issue 298133003: Expose fractional TouchEvent coordinates (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Make layout test output stable across platforms Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/events/touch/touch-fractional-coordinates.html
diff --git a/LayoutTests/fast/events/touch/touch-fractional-coordinates.html b/LayoutTests/fast/events/touch/touch-fractional-coordinates.html
new file mode 100644
index 0000000000000000000000000000000000000000..32d4d952955f4ca8b5bdf6b48254ff2ee595d99e
--- /dev/null
+++ b/LayoutTests/fast/events/touch/touch-fractional-coordinates.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<script src='../../../resources/js-test.js'></script>
+<style>
+#spacer {
+ height: 1000px;
+ width: 1000px;
+}
+iframe {
+ width: 100px;
+ height: 100px;
+ border: 0;
+}
+#rotatedFrame {
+ transform: rotate(180deg);
+}
+#scaledFrame {
+ transform: scale(2);
+ width: 50px;
+ height: 50px;
+ margin-left: 50px;
+ margin-bottom: 20px;
+}
+#container {
+ /* Want this at a stable place across platforms so the output co-ords are stable */
+ position: absolute;
+ top: 100px;
+ left: 10px;
+}
+#console {
+ margin-top: 200px;
+}
+</style>
+<p id='description'></p>
+<div id='container'>
+ <iframe id=simpleFrame src='resources/frame-touchevent-forwarder.html'></iframe>
+ <iframe id=rotatedFrame src='resources/frame-touchevent-forwarder.html'></iframe>
+ <iframe id=scaledFrame src='resources/frame-touchevent-forwarder.html'></iframe>
+</div>
+<div id='console'></div>
+<div id='spacer'></div>
+<script>
+ description('Tests non-integer TouchEvent co-ordinates and radii');
+
+ var scrollX = 3;
+ var scrollY = 10;
+ scrollTo(scrollX, scrollY);
+
+ eventCount = 0;
+ function onTouchStart(e) {
+ eventCount++;
+ lastEvent = e;
+ }
+ function expectEvent(eventName) {
+ shouldBeEqualToNumber('eventCount', 1);
+ var origEventCount = eventCount;
+ eventCount = 0;
+ if (origEventCount > 0) {
+ shouldBeEqualToString('lastEvent.type', eventName);
+ return true;
+ }
+ return false;
+ }
+
+ document.addEventListener('touchstart', onTouchStart);
+ var floatPrecision = 0.00001;
+
+ function runTest() {
+ if (!eventSender) {
+ debug('This test requires eventSender.');
+ return;
+ }
+
+ debug('Testing simple fractional touch');
+ eventSender.addTouchPoint(30.33, 4.5, 5.2, 6.3);
+ eventSender.touchStart();
+ if (expectEvent('touchstart')) {
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenX', 30.33, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenY', 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientX', 30.33, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientY', 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageX', 30.33 + scrollX, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageY', 4.5 + scrollY, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].webkitRadiusX', 5.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].webkitRadiusY', 6.3, floatPrecision);
+ }
+ eventSender.releaseTouchPoint(0);
+ eventSender.touchEnd();
+ debug('');
+
+ debug('Testing fractional touch inside simple iframe');
+ frameRect = document.getElementById('simpleFrame').getBoundingClientRect();
+ eventSender.addTouchPoint(frameRect.left + 4.5, frameRect.top + 2.2);
+ eventSender.touchStart();
+ if (expectEvent('touchstart')) {
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenX', frameRect.left + 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenY', frameRect.top + 2.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientX', 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientY', 2.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageX', 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageY', 2.2, floatPrecision);
+ }
+ eventSender.releaseTouchPoint(0);
+ eventSender.touchEnd();
+ debug('');
+
+ debug('Testing fractional touch inside rotated iframe');
+ frameRect = document.getElementById('rotatedFrame').getBoundingClientRect();
+ eventSender.addTouchPoint(frameRect.left + 4.5, frameRect.top + 2.2);
+ eventSender.touchStart();
+ if (expectEvent('touchstart')) {
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenX', frameRect.left + 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenY', frameRect.top + 2.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientX', 100 - 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientY', 100 - 2.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageX', 100 - 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageY', 100 - 2.2, floatPrecision);
+ }
+ eventSender.releaseTouchPoint(0);
+ eventSender.touchEnd();
+ debug('');
+
+ debug('Testing fractional touch inside scaled iframe');
+ frameRect = document.getElementById('scaledFrame').getBoundingClientRect();
+ eventSender.addTouchPoint(frameRect.left + 4.5, frameRect.top + 2.2);
+ eventSender.touchStart();
+ if (expectEvent('touchstart')) {
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenX', frameRect.left + 4.5, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].screenY', frameRect.top + 2.2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientX', 4.5 / 2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].clientY', 2.2 / 2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageX', 4.5 / 2, floatPrecision);
+ shouldBeCloseTo('lastEvent.changedTouches[0].pageY', 2.2 / 2, floatPrecision);
+ }
+ eventSender.releaseTouchPoint(0);
+ eventSender.touchEnd();
+ debug('');
+ }
+
+ addEventListener('load', runTest);
+</script>

Powered by Google App Engine
This is Rietveld 408576698