| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Touch Adjustment : Adjust context-menu to text-node subtargets - bug 94449</title> |
| <script src="../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 div { |
| padding: 10px; |
| font: 20px Ahem; |
| white-space: pre-wrap; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div id=sandbox> |
| <!-- The layout of the two words should be: (10,10)x(80,20) and (170,10)x(80,20). --> |
| <div id=div1><span id=span1>Text text</span></div> |
| </div> |
| |
| <p id='description'></p> |
| <div id='console'></div> |
| |
| <script> |
| // Set up shortcut access to elements |
| var e = {}; |
| ['sandbox', 'div1', 'span1'].forEach(function(a) { |
| e[a] = document.getElementById(a); |
| }); |
| |
| function testAdjustedTouches() |
| { |
| var adjustedPoint; |
| var word1Bounds = { left: 10, top: 10, width: 80, height: 20 }; |
| var word2Bounds = { left: 170, top: 10, width: 80, height: 20 }; |
| |
| // Set editing-behaviour mac, so context-menu gesture triggers selections. |
| internals.settings.setEditingBehavior('mac'); |
| // Check the context-menu is adjusted to the individual words. |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(5, 5, 20, 10)); |
| shouldBeWithin(adjustedPoint, word1Bounds); |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(100, 15, 20, 10)); |
| shouldBeWithin(adjustedPoint, word1Bounds); |
| |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(150, 15, 30, 10)); |
| shouldBeWithin(adjustedPoint, word2Bounds); |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(260, 35, 20, 10)); |
| shouldBeWithin(adjustedPoint, word2Bounds); |
| |
| // Set editing-behaviour to win, so context-menu gesture does not trigger selections. |
| internals.settings.setEditingBehavior('win'); |
| var range = document.createRange(); |
| range.setStart(e.span1.firstChild, 2); |
| range.setEnd(e.span1.firstChild, 6); |
| window.getSelection().addRange(range); |
| var selectionBounds = { left: 50, top: 10, width: 80, height: 20 }; |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(25, 5, 30, 20)); |
| shouldBeWithin(adjustedPoint, selectionBounds); |
| adjustedPoint = adjustTouchPointContextMenu(touchPoint(140, 10, 20, 10)); |
| shouldBeWithin(adjustedPoint, selectionBounds); |
| } |
| |
| function runTests() |
| { |
| if (window.testRunner && window.internals && internals.touchNodeAdjustedToBestContextMenuNode) { |
| description('Test touch-adjustment to individual words or active selection.'); |
| testAdjustedTouches(); |
| e.sandbox.style.display = 'none'; |
| } |
| } |
| runTests(); |
| </script> |
| |
| <script src="../resources/js-test-post.js"></script> |
| |
| </body> |
| </html> |