| <!doctype html> |
| <!-- |
| Tests that screen taps when using Cardboard are translated into WebXR input, and |
| that Daydream controller input is registered when using Daydream View. |
| --> |
| <html> |
| <head> |
| <link rel="stylesheet" type="text/css" href="../resources/webxr_e2e.css"> |
| </head> |
| <body> |
| <canvas id="webgl-canvas"></canvas> |
| <script src="../../../../../../third_party/blink/web_tests/resources/testharness.js"></script> |
| <script src="../resources/webxr_e2e.js"></script> |
| <script src="../resources/webxr_boilerplate.js"></script> |
| <script> |
| var t = async_test("Screen taps/clicks registered as input when in WebXR immersive session"); |
| |
| var selectStartCount = 0; |
| var selectEndCount = 0; |
| var selectCount = 0; |
| var iterations; |
| var currentIteration = 0; |
| var finishAfterEachInput = true; |
| |
| function onSelectStart() { |
| // selectstart should always be fired first, so check that |
| t.step( () => { |
| assert_true(selectStartCount == selectEndCount, |
| 'selectstart fired before selectend'); |
| assert_true(selectStartCount == selectCount, |
| 'selectstart fired before select'); |
| }); |
| selectStartCount++; |
| } |
| |
| function onSelectEnd() { |
| // selectend should always be fired between selectstart and select |
| t.step( () => { |
| assert_true(selectEndCount + 1 == selectStartCount, |
| 'selectend fired after selectstart'); |
| assert_true(selectEndCount == selectCount, |
| 'selectend fired before select'); |
| }); |
| selectEndCount++; |
| } |
| |
| function onSelect() { |
| // select should always be fired last |
| selectCount++; |
| t.step( () => { |
| assert_true(selectCount == selectStartCount, |
| 'select fired after selectstart'); |
| assert_true(selectCount == selectEndCount, |
| 'select fired after selectend'); |
| }); |
| currentIteration++; |
| if (currentIteration == iterations) { |
| t.done(); |
| } else if (finishAfterEachInput) { |
| finishJavaScriptStep(); |
| } |
| } |
| |
| function stepSetupListeners(numIterations) { |
| iterations = numIterations; |
| let currentSession = sessionInfos[sessionTypes.IMMERSIVE].currentSession; |
| currentSession.addEventListener('selectstart', onSelectStart, false); |
| currentSession.addEventListener('selectend', onSelectEnd, false); |
| currentSession.addEventListener('select', onSelect, false); |
| } |
| </script> |
| </body> |
| </html> |