| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Touch Adjustment : Adjust to context menu providers - bug 94101</title> |
| <script src="../fast/js/resources/js-test-pre.js"></script> |
| <script src="resources/touchadjustment.js"></script> |
| <style> |
| #sandbox { |
| position: absolute; |
| top: 0px; |
| left: 0px; |
| width: 400px; |
| height: 200px; |
| } |
| #sandbox p { |
| padding: 5px; |
| font: 20px Ahem; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <script> |
| function onClick() {} |
| </script> |
| |
| <div id=sandbox> |
| <p id=p0><a id=a0 href="#a0">Link with URL.</a> |
| <p id=p1><span id=span0 onclick=onClick>Text with onclick handler.</span> |
| <p id=p2><img id=img0 height=20 width=100 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPAQMAAAABGAcJAAAAA1BMVEUAgACc+aWRAAAADElEQVR42mNgIAEAAAAtAAH7KhMqAAAAAElFTkSuQmCC"></img> |
| </div> |
| |
| <p id='description'></p> |
| <div id='console'></div> |
| |
| <script> |
| // Set up shortcut access to elements |
| var e = {}; |
| ['sandbox', 'a0', 'span0', 'img0', 'p0', 'p1', 'p2'].forEach(function(a) { |
| e[a] = document.getElementById(a); |
| }); |
| |
| function testDirectTouches() |
| { |
| // Check links can be targeted with context menu gesture. |
| testTouchPointContextMenu(touchPoint(100, 35, 10), e.a0); |
| // Check onclick can be targeted with activate gesture. |
| testTouchPoint(touchPoint(100, 100, 10), e.span0); |
| // Check onclick can not be targeted with context menu. |
| testTouchPointContextMenu(touchPoint(100, 100, 10), null); |
| // But that the adjusted point still hits it, if no better target is available |
| var adjustedPoint = adjustTouchPointContextMenu(touchPoint(100, 100, 10)); |
| if (adjustedPoint) { |
| shouldBeNode(document.elementFromPoint(adjustedPoint.x, adjustedPoint.y), e.span0); |
| } |
| // Check images can be targeted with context menu. |
| testTouchPointContextMenu(offsetTouchPoint(findAbsoluteBounds(e.img0), 'center', 0, 5, 5), e.img0); |
| } |
| |
| function testAdjustedTouches() |
| { |
| // Check we if we adjust the context menu onto the link. |
| testTouchPointContextMenu(touchPoint(100, 50, 10), e.a0); |
| // Check we if we do not adjust the context menu onto the onclick element. |
| testTouchPointContextMenu(touchPoint(100, 70, 10), null); |
| // Check the link is strongly preferred. |
| testTouchPointContextMenu(touchPoint(100, 60, 20), e.a0); |
| // Check adjustment onto the image. |
| testTouchPointContextMenu(touchPoint(20, 140, 10), e.img0); |
| // Check the image is strongly preferred for context menu gestures. |
| testTouchPointContextMenu(touchPoint(20, 120, 30), e.img0); |
| // But the onclick handler would be preferred for activate gestures. |
| testTouchPoint(touchPoint(20, 120, 30), e.span0); |
| } |
| |
| function runTests() |
| { |
| if (window.testRunner && window.internals && internals.touchNodeAdjustedToBestContextMenuNode) { |
| description('Test touch adjustment for context-menu gestures.'); |
| // Set editing-behaviour to win, so context-menu gesture does not trigger selections. |
| internals.settings.setEditingBehavior('win'); |
| testDirectTouches(); |
| testAdjustedTouches(); |
| e.sandbox.style.display = 'none'; |
| } |
| } |
| runTests(); |
| </script> |
| |
| <script src="../fast/js/resources/js-test-post.js"></script> |
| |
| </body> |
| </html> |