| <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> |