| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="resources/model-utils.js"></script> |
| <style> |
| |
| model { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 400px; |
| height: 400px; |
| } |
| |
| </style> |
| <script> |
| |
| const dragModel = async (model) => { |
| const bounds = model.getBoundingClientRect(); |
| const startPoint = new DOMPoint( |
| bounds.x + bounds.width / 2, |
| bounds.y + bounds.height / 2 |
| ); |
| const endPoint = new DOMPoint( |
| startPoint.x + bounds.width / 4, |
| startPoint.y + bounds.height / 4 |
| ); |
| return new Promise((resolve, reject) => { |
| if (!("eventSender" in window)) { |
| reject(); |
| return; |
| } |
| |
| eventSender.mouseMoveTo(startPoint.x, startPoint.y); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(endPoint.x, endPoint.y); |
| eventSender.mouseUp(); |
| resolve(); |
| }); |
| }; |
| |
| promise_test(async test => { |
| const model = await readyModel(test); |
| model.interactive = false; |
| const cameraBeforeDrag = await model.getCamera(); |
| await dragModel(model); |
| const cameraAfterDrag = await model.getCamera(); |
| assert_cameras_are_equal(cameraAfterDrag, cameraBeforeDrag, "cameras before and after drag match"); |
| }, "Dragging over a <model> has no effect on the camera when interactive is false"); |
| |
| promise_test(async test => { |
| const model = await readyModel(test); |
| model.interactive = true; |
| const cameraBeforeDrag = await model.getCamera(); |
| await dragModel(model); |
| const cameraAfterDrag = await model.getCamera(); |
| assert_cameras_are_not_equal(cameraAfterDrag, cameraBeforeDrag, "cameras before and after drag are different"); |
| }, "Dragging over a <model> affects the camera when interactive is true"); |
| |
| promise_test(async test => { |
| const model = await readyModel(test, { interactive: true }); |
| const cameraBeforeDrag = await model.getCamera(); |
| await dragModel(model); |
| const cameraAfterDrag = await model.getCamera(); |
| assert_cameras_are_not_equal(cameraAfterDrag, cameraBeforeDrag, "cameras before and after drag are different"); |
| }, "Dragging over a <model> affects the camera when interactive is set to true using the HTML attribute as the element is created"); |
| |
| </script> |
| </body> |
| </html> |