| <!DOCTYPE html> |
| <!-- |
| | Test CSSOM View extensions to the Element Interface, verifying that |
| | getBoundingClientRect() works properly with transforms. |
| --> |
| <html> |
| <head> |
| <style> |
| body { |
| background-color: #FFFFFF; |
| margin: 0px; |
| font-family: Roboto; |
| font-size: 20px; |
| } |
| .absolute_container { |
| position: absolute; |
| top: 20px; |
| left: 20px; |
| } |
| .absolutely-positioned-1 { |
| position: absolute; |
| transform: translate(20px, 10px); |
| margin: 3px; |
| border: 5px solid #000000; |
| padding: 7px; |
| top: 120px; |
| left: 120px; |
| width: 200px; |
| height: 200px; |
| } |
| .absolutely-positioned-2 { |
| position: absolute; |
| margin: 3px; |
| border: 5px solid #800000; |
| padding: 7px; |
| width: 160px; |
| height: 160px; |
| } |
| .absolutely-positioned-3 { |
| position: absolute; |
| transform: scale(0.5, 2.0); |
| transform-origin: top left; |
| margin: 3px; |
| border: 5px solid #008000; |
| padding: 7px; |
| width: 250px; |
| height: 50px; |
| } |
| .unpositioned-1 { |
| margin: 4px; |
| border: 6px solid #000080; |
| padding: 10px; |
| width: 200px; |
| height: 20px; |
| } |
| </style> |
| <script> |
| if (window.testRunner) { |
| window.testRunner.waitUntilDone(); |
| } |
| |
| function verifyGetBoundingClientRectAttributesAreCorrect(id, x, y, w, h) { |
| var element = document.getElementById(id); |
| if (!element) { |
| document.body.style.backgroundColor = "#F44336"; |
| } else { |
| bounding_rect = element.getBoundingClientRect(); |
| if (bounding_rect["left"] != x) { |
| console.log("getElementById(\'" + id + |
| "\').getBoundingClientRect()." + "left" + " == " + |
| bounding_rect["left"] + " != " + x); |
| element.style.backgroundColor = "#F44336"; |
| } |
| |
| if (bounding_rect["top"] != y) { |
| console.log("getElementById(\'" + id + |
| "\').getBoundingClientRect()." + "top" + " == " + |
| bounding_rect["top"] + " != " + y); |
| element.style.backgroundColor = "#F44336"; |
| } |
| |
| bounding_rect = element.getBoundingClientRect(); |
| if (bounding_rect["width"] != w) { |
| console.log("getElementById(\'" + id + |
| "\').getBoundingClientRect()." + "width" + " == " + |
| bounding_rect["width"] + " != " + w); |
| element.style.backgroundColor = "#F44336"; |
| } |
| |
| bounding_rect = element.getBoundingClientRect(); |
| if (bounding_rect["height"] != h) { |
| console.log("getElementById(\'" + id + |
| "\').getBoundingClientRect()." + "height" + " == " + |
| bounding_rect["height"] + " != " + h); |
| element.style.backgroundColor = "#F44336"; |
| } |
| } |
| } |
| |
| function runTest() { |
| verifyGetBoundingClientRectAttributesAreCorrect( |
| "div-1", 163, 153, 224, 224); |
| verifyGetBoundingClientRectAttributesAreCorrect( |
| "div-2", 178, 168, 184, 184); |
| verifyGetBoundingClientRectAttributesAreCorrect( |
| "div-3", 193, 183, 137, 148); |
| verifyGetBoundingClientRectAttributesAreCorrect( |
| "div-4", 201, 215, 116, 104); |
| } |
| |
| window.onload = function() { |
| runTest(); |
| |
| if (window.testRunner) { |
| window.testRunner.notifyDone(); |
| } |
| } |
| </script> |
| </head> |
| <body> |
| <div class="absolute_container"> |
| <div id="div-1" class="absolutely-positioned-1"> |
| <div id="div-2" class="absolutely-positioned-2"> |
| <div id="div-3" class="absolutely-positioned-3"> |
| <div id="div-4" class="unpositioned-1"> |
| <span>Yes</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |