blob: 01b66317aaa2cf1fcbc795bf001cb705f5a15e56 [file] [log] [blame]
<!DOCTYPE HTML>
<script src='../../../resources/js-test.js'></script>
<style>
iframe {
width: 300px;
height: 300px;
top: 100px;
left: 50px;
border: 0;
position: absolute;
background: green;
}
</style>
<iframe id='target' srcdoc="
<body style='height:500px; width: 500px; padding: 0; margin: 0;'>
<script>
window.name = 'innerFrame';
var testEventList = ['pointerup', 'pointerdown', 'pointermove',
'touchstart', 'touchmove', 'touchend',
'mouseup', 'mousedown', 'mousemove'];
testEventList.forEach(function(eventName) {
document.documentElement.addEventListener(eventName, function(event) {
top.document.events.push(event);
});
});
</script>
</body>">
</iframe>
<div id='console'></div>
<script>
window.name = 'outerFrame';
var attributes = [
'clientX',
'clientY'
];
document.events = [];
function testScenario(scrollX, scrollY, zoomFactor) {
debug('===== scrollX=' + scrollX + ', scrollY=' + scrollY + ', zoomFactor=' + zoomFactor);
document.getElementById('target').contentWindow.scrollTo(scrollX, scrollY);
window.internals.setZoomFactor(zoomFactor);
debug(' *** Mouse events inside iframe ***');
// mouse events inside iframe
eventSender.mouseMoveTo(200, 200);
eventSender.mouseDown(0);
eventSender.mouseUp(0);
dumpEvents();
debug(' *** Touch events inside iframe ***');
// touch events inside iframe
eventSender.addTouchPoint(200, 200)
eventSender.touchStart();
eventSender.updateTouchPoint(0, 200, 200);
eventSender.touchMove();
eventSender.releaseTouchPoint(0);
eventSender.touchEnd();
dumpEvents();
debug('');
}
function runTests() {
testScenario(25, 100, 1);
testScenario(40, 140, 1);
testScenario(40, 140, 2);
testRunner.notifyDone();
}
function dumpEvents()
{
document.events.forEach(function(event) {
if (event.type.startsWith('pointer')) {
debug(event.type + " of " + event.pointerType + " is recieved:");
attributes.forEach(function(att) {
debug(att + " = " + event[att]);
});
debug("view.name = " + event.view.name);
} else if (event.type.startsWith('touch')) {
debug(event.type + " is recieved:");
attributes.forEach(function(att) {
debug(att + " = " + event.changedTouches[0][att]);
});
} else {
debug(event.type + " is recieved:");
attributes.forEach(function(att) {
debug(att + " = " + event[att]);
});
}
});
document.events = [];
}
if (window.eventSender) {
testRunner.waitUntilDone();
window.onload = runTests;
} else
debug('This test requires eventSender');
description("This test verifies clientX/Y of pointer events inside iframe.");
</script>