| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 <!DOCTYPE html> | 
|  | 2 <title>cssom-view - elementFromPoint</title> | 
|  | 3 <script src="../../../resources/testharness.js"></script> | 
|  | 4 <script src="../../../resources/testharnessreport.js"></script> | 
|  | 5 <style> | 
|  | 6   .size { | 
|  | 7     width:100px; | 
|  | 8     height:100px; | 
|  | 9   } | 
|  | 10   .overlay { | 
|  | 11     position:absolute; | 
|  | 12     top:109px; | 
|  | 13     pointer-events:none; | 
|  | 14   } | 
|  | 15   .purple { | 
|  | 16     background-color: rebeccapurple; | 
|  | 17   } | 
|  | 18   .yellow { | 
|  | 19     background-color: yellow; | 
|  | 20   } | 
|  | 21   .teal { | 
|  | 22     background-color: teal; | 
|  | 23   } | 
|  | 24   .pink { | 
|  | 25     background-color: pink; | 
|  | 26   } | 
|  | 27 </style> | 
|  | 28 <body> | 
|  | 29   <div id='purple' class="size purple" > </div> | 
|  | 30   <div id='yellow' class="size yellow"> </div> | 
|  | 31   <div id='teal' class="size overlay teal"> </div> | 
|  | 32   <iframe id=iframe-1 src="iframe.html" style='display:none;position:absolute; l
     eft:300px;'></iframe> | 
|  | 33   <iframe id=iframe-2 src="iframe.html" width="" height=""></iframe> | 
|  | 34   <iframe id=iframe-3 width="" height=""></iframe> | 
|  | 35   <svg id=squiggle xmlns="http://www.w3.org/2000/svg" height="98" width="581" vi
     ewBox="0 0 581 98"> | 
|  | 36     <path stroke-dashoffset="0.00" stroke-dasharray="" d="M62.9 14.9c-25-7.74-56
     .6 4.8-60.4 24.3-3.73 19.6 21.6 35 39.6 37.6 42.8 6.2 72.9-53.4 116-58.9 65-18.2
      191 101 215 28.8 5-16.7-7-49.1-34-44-34 11.5-31 46.5-14 69.3 9.38 12.6 24.2 20.
     6 39.8 22.9 91.4 9.05 102-98.9 176-86.7 18.8 3.81 33 17.3 36.7 34.6 2.01 10.2.12
     4 21.1-5.18 30.1" stroke="#000" stroke-width="4.3" fill="none"> | 
|  | 37     </path> | 
|  | 38   </svg> | 
|  | 39   <svg id=svg-transform width="180" height="200" | 
|  | 40   xmlns="http://www.w3.org/2000/svg" | 
|  | 41   xmlns:xlink="http://www.w3.org/1999/xlink"> | 
|  | 42 | 
|  | 43   <!--  Now we add a text element and apply rotate and translate to both  --> | 
|  | 44   <rect x="50" y="50" height="100" width="100" style="stroke:#000; fill: #0086B2
     " transform="translate(30) rotate(45 50 50)"></rect> | 
|  | 45   <text x="60" y="105" transform="translate(30) rotate(45 50 50)"> Hello WPT! </
     text> | 
|  | 46 | 
|  | 47 </svg> | 
|  | 48   <div id='pink' class='size pink' style='transform: translate(10px)'> </di
     v> | 
|  | 49   <div id='anotherteal' class='size teal' style='pointer-events:none'>Another te
     al</div> | 
|  | 50   <script> | 
|  | 51     setup({explicit_done:true}); | 
|  | 52     window.onload = function () { | 
|  | 53       test(function () { | 
|  | 54               assert_equals(document.elementFromPoint(-1, -1), null, | 
|  | 55                 "both co-ordinates passed in are negative so should have returne
     d a null"); | 
|  | 56               assert_equals(document.elementFromPoint(-1, -1), null, | 
|  | 57                 "x co-ordinates passed in are negative so should have returned a
      null"); | 
|  | 58               assert_equals(document.elementFromPoint(-1, -1), null, | 
|  | 59                 "y co-ordinates passed in are negative so should have returned a
      null"); | 
|  | 60                   }, "Negative co-ordinates"); | 
|  | 61 | 
|  | 62       test(function () { | 
|  | 63               var viewportX = window.innerWidth; | 
|  | 64               var viewportY = window.innerHeight; | 
|  | 65               assert_equals(document.elementFromPoint(viewportX + 100, 10), null
     , | 
|  | 66                 "X co-ordinates larger than viewport"); | 
|  | 67               assert_equals(document.elementFromPoint(10, viewportY + 100), null
     , | 
|  | 68                 "Y co-ordinates larger than viewport"); | 
|  | 69               assert_equals(document.elementFromPoint(viewportX + 100, viewportY
      + 100), null, | 
|  | 70                 "X, Y co-ordinates larger than viewport"); | 
|  | 71       }, "co-ordinates larger than the viewport"); | 
|  | 72 | 
|  | 73       test(function () { | 
|  | 74               var viewportX = window.frames[1].innerWidth; | 
|  | 75               var viewportY = window.frames[1].innerHeight; | 
|  | 76               var iframeRect = document.getElementById('iframe-2').getBoundingCl
     ientRect(); | 
|  | 77               assert_equals(null, window.frames[1].document.elementFromPoint(ifr
     ameRect.right + viewportX + 100, 10), | 
|  | 78                 "X co-ordinates larger than viewport"); | 
|  | 79               assert_equals(null, window.frames[1].document.elementFromPoint(10,
      iframeRect.bottom + viewportY + 100), | 
|  | 80                 "Y co-ordinates larger than viewport"); | 
|  | 81               assert_equals(null, window.frames[1].document.elementFromPoint(ifr
     ameRect.right + viewportX + 100, | 
|  | 82                                                                              ifr
     ameRect.bottom + viewportY + 100), | 
|  | 83                 "X, Y co-ordinates larger than viewport"); | 
|  | 84       }, "co-ordinates larger than the viewport from in iframe"); | 
|  | 85 | 
|  | 86       test(function () { | 
|  | 87               assert_equals(document.elementFromPoint(10, 10), document.getEleme
     ntById('purple'), | 
|  | 88                 "Should have returned the element with id `purple`"); | 
|  | 89             }, "Return first element that is the target for hit testing"); | 
|  | 90 | 
|  | 91       test(function () { | 
|  | 92               assert_equals(document.elementFromPoint(10, 120), document.getElem
     entById('yellow'), | 
|  | 93                 "Should have returned the element with id `yellow` as element wi
     th `teal` has `pointer-events:none`"); | 
|  | 94             }, "First element to get mouse events with pointer-events css"); | 
|  | 95 | 
|  | 96       test(function () { | 
|  | 97              var svg = document.getElementById('squiggle'); | 
|  | 98              var svgRect = svg.getBoundingClientRect(); | 
|  | 99              assert_equals(document.elementFromPoint(svgRect.left + Math.round(s
     vgRect.width/2), | 
|  | 100                                                      svgRect.top + Math.round(sv
     gRect.height/2)), | 
|  | 101                            svg, | 
|  | 102                            "Should have returned the line SVG"); | 
|  | 103       }, "SVG element at x,y"); | 
|  | 104 | 
|  | 105       test(function () { | 
|  | 106               var svg = document.getElementById('svg-transform'); | 
|  | 107               var svgRect = svg.getBoundingClientRect(); | 
|  | 108               assert_equals(document.elementFromPoint(svgRect.left + Math.round(
     svgRect.width/2), | 
|  | 109                                                       svgRect.top + Math.round(s
     vgRect.height/2)), | 
|  | 110                             svg.querySelector("rect"), | 
|  | 111                             "Should have returned SVG with Hello WPT! that has a
      transform"); | 
|  | 112 | 
|  | 113               var pink = document.getElementById('pink'); | 
|  | 114               var pinkRect = pink.getBoundingClientRect(); | 
|  | 115               assert_equals(document.elementFromPoint(pinkRect.left + Math.round
     (pinkRect.width/2), | 
|  | 116                                                       pinkRect.top + Math.round(
     pinkRect.height/2)), | 
|  | 117                             pink, | 
|  | 118                             "Should have returned pink element that has a transf
     orm"); | 
|  | 119 | 
|  | 120       }, "transformed element at x,y"); | 
|  | 121 | 
|  | 122       test(function () { | 
|  | 123             var anotherteal = document.getElementById('anotherteal'); | 
|  | 124             var anothertealRect = anotherteal.getBoundingClientRect(); | 
|  | 125             assert_equals(document.elementFromPoint(anothertealRect.left + Math.
     round(anothertealRect.width/2), | 
|  | 126                                                     anothertealRect.top + Math.r
     ound(anothertealRect.height/2)), | 
|  | 127                           document.body, | 
|  | 128                           "Should have returned the root"); | 
|  | 129 | 
|  | 130             var doc = frames[2].document; | 
|  | 131             doc.removeChild(doc.documentElement); | 
|  | 132             assert_equals(doc.elementFromPoint(0, 0), null, | 
|  | 133                           "Should have returned null as no root element"); | 
|  | 134       }, "no hit target at x,y"); | 
|  | 135 | 
|  | 136       test(function () { | 
|  | 137             var doc = document.implementation.createHTMLDocument('foo'); | 
|  | 138             assert_equals(doc.elementFromPoint(0, 0), null, | 
|  | 139                           "Should have returned the documentElement for the docu
     ment") | 
|  | 140       }, "No viewport available"); | 
|  | 141       done(); | 
|  | 142     } | 
|  | 143  </script> | 
| OLD | NEW | 
|---|