173 lines
6.3 KiB
HTML
173 lines
6.3 KiB
HTML
<html>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<style>
|
|
#iframe1 {
|
|
width: 200px;
|
|
height: 200px;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 1px solid black;
|
|
position:absolute;
|
|
left:50px;
|
|
top:50px;
|
|
background: red;
|
|
}
|
|
|
|
#output
|
|
{
|
|
position:absolute;
|
|
top:250px;
|
|
}
|
|
|
|
</style>
|
|
<body onload="runTest()">
|
|
<iframe id="iframe1" src="./resources/multi-touch-inside-nested-iframes2.html"></iframe>
|
|
<div id="output">
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
description('Test multi-touch is sent to the same iframe.');
|
|
|
|
var touchEventCount = 0;
|
|
var title = 0;
|
|
|
|
function onTouch(event, receiver)
|
|
{
|
|
ev = event;
|
|
touchreceiver = receiver;
|
|
switch (touchEventCount) {
|
|
case 0:
|
|
shouldBeEqualToString('ev.type', 'touchstart');
|
|
shouldBeEqualToString('touchreceiver', 'iframe1');
|
|
shouldBe("ev.changedTouches.length", "1");
|
|
shouldBe("ev.touches.length", "1");
|
|
shouldBe("ev.targetTouches.length", "1");
|
|
shouldBe("ev.touches[0].pageX", "50");
|
|
shouldBe("ev.touches[0].pageY", "50");
|
|
shouldBeEqualToString('ev.touches[0].target.ownerDocument.title', 'iframe1');
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe1');
|
|
shouldBeEqualToString('ev.targetTouches[0].target.ownerDocument.title', 'iframe1');
|
|
break;
|
|
case 1:
|
|
shouldBeEqualToString('ev.type', 'touchmove');
|
|
shouldBeEqualToString('touchreceiver', 'iframe1');
|
|
shouldBe("ev.changedTouches.length", "1");
|
|
shouldBe("ev.touches.length", "1");
|
|
shouldBe("ev.targetTouches.length", "1");
|
|
shouldBe("ev.touches[0].pageX", "200");
|
|
shouldBe("ev.touches[0].pageY", "200");
|
|
shouldBeEqualToString('ev.touches[0].target.ownerDocument.title', 'iframe1');
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe1');
|
|
shouldBeEqualToString('ev.targetTouches[0].target.ownerDocument.title', 'iframe1');
|
|
break;
|
|
case 2:
|
|
shouldBeEqualToString('ev.type', 'touchend');
|
|
shouldBeEqualToString('touchreceiver', 'iframe1');
|
|
shouldBe("ev.changedTouches.length", "1");
|
|
shouldBe("ev.touches.length", "0");
|
|
shouldBe("ev.targetTouches.length", "0");
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe1');
|
|
break;
|
|
case 3:
|
|
shouldBeEqualToString('ev.type', 'touchstart');
|
|
shouldBeEqualToString('touchreceiver', 'iframe2');
|
|
shouldBe("ev.changedTouches.length", "1");
|
|
shouldBe("ev.touches.length", "1");
|
|
shouldBe("ev.targetTouches.length", "1");
|
|
shouldBe("ev.touches[0].pageX", "30");
|
|
shouldBe("ev.touches[0].pageY", "30");
|
|
shouldBeEqualToString('ev.touches[0].target.ownerDocument.title', 'iframe2');
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe2');
|
|
shouldBeEqualToString('ev.targetTouches[0].target.ownerDocument.title', 'iframe2');
|
|
break;
|
|
case 4:
|
|
shouldBeEqualToString('ev.type', 'touchstart');
|
|
shouldBeEqualToString('touchreceiver', 'iframe2');
|
|
shouldBe("ev.changedTouches.length", "1");
|
|
shouldBe("ev.touches.length", "2");
|
|
shouldBe("ev.targetTouches.length", "1");
|
|
shouldBe("ev.touches[0].pageX", "30");
|
|
shouldBe("ev.touches[0].pageY", "30");
|
|
shouldBeEqualToString('ev.touches[0].target.ownerDocument.title', 'iframe2');
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe2');
|
|
shouldBeEqualToString('ev.targetTouches[0].target.ownerDocument.title', 'iframe2');
|
|
break;
|
|
case 5:
|
|
shouldBeEqualToString('ev.type', 'touchend');
|
|
shouldBeEqualToString('touchreceiver', 'iframe2');
|
|
shouldBe("ev.changedTouches.length", "2");
|
|
shouldBe("ev.touches.length", "0");
|
|
shouldBe("ev.targetTouches.length", "0");
|
|
shouldBeEqualToString('ev.changedTouches[0].target.ownerDocument.title', 'iframe2');
|
|
shouldBeEqualToString('ev.changedTouches[1].target.ownerDocument.title', 'iframe2');
|
|
isSuccessfullyParsed();
|
|
testRunner.notifyDone();
|
|
}
|
|
touchEventCount++;
|
|
}
|
|
|
|
function runTest() {
|
|
if (window.eventSender) {
|
|
eventSender.clearTouchPoints();
|
|
// Touch the center of innter iframe. 50px is offset to outer iframe in main frame,
|
|
// 2px for the iframe borders, 100px to get to centre.
|
|
debug('First touch is on inner iframe.');
|
|
eventSender.addTouchPoint(152, 152);
|
|
eventSender.touchStart();
|
|
debug('');
|
|
|
|
debug('Second touch is on outer iframe, nothing should happen.');
|
|
eventSender.addTouchPoint(71, 71);
|
|
eventSender.touchStart();
|
|
debug('');
|
|
|
|
debug('Moves the first touch outside inner iframe.');
|
|
eventSender.updateTouchPoint(0, 302, 302);
|
|
eventSender.touchMove();
|
|
debug('');
|
|
|
|
debug('Release the first touch.');
|
|
eventSender.releaseTouchPoint(0);
|
|
eventSender.touchEnd();
|
|
debug('');
|
|
|
|
debug('Third touch is on outer iframe, nothing should happen.');
|
|
eventSender.addTouchPoint(81, 81);
|
|
eventSender.touchStart();
|
|
debug('');
|
|
|
|
debug('Release all touches on outer iframe, and touch outer iframe again.');
|
|
eventSender.releaseTouchPoint(0);
|
|
eventSender.releaseTouchPoint(1);
|
|
eventSender.touchEnd();
|
|
eventSender.addTouchPoint(81, 81);
|
|
eventSender.touchStart();
|
|
debug('');
|
|
|
|
debug('Touch inner iframe, this will trigger onTouch as it is inside outer iframe.');
|
|
eventSender.addTouchPoint(152, 152);
|
|
eventSender.touchStart();
|
|
debug('');
|
|
|
|
debug('Release all touches.');
|
|
eventSender.releaseTouchPoint(0);
|
|
eventSender.releaseTouchPoint(1);
|
|
eventSender.touchEnd();
|
|
} else {
|
|
debug('This test requires DRT.');
|
|
}
|
|
}
|
|
|
|
if (window.testRunner) {
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
function getTitle() {
|
|
title++;
|
|
return 'iframe' + title;
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|