| <!doctype html> |
| <!-- |
| A collection of helper functions and listeners to confirm the state of input |
| sources for the same object tests. |
| --> |
| <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> |
| let inputChangeEvents = 0; |
| let lastAdded = null; |
| let lastRemoved = null; |
| function onInputSourcesChange(event) { |
| lastAdded = event.added; |
| lastRemoved = event.removed; |
| inputChangeEvents++; |
| } |
| |
| onSessionStartedCallback = function(session) { |
| if (session.mode.startsWith("immersive")) { |
| session.addEventListener('inputsourceschange', onInputSourcesChange, false); |
| } |
| } |
| |
| function getCurrentInputSources() { |
| let currentSession = sessionInfos[sessionTypes.IMMERSIVE].currentSession; |
| return currentSession.getInputSources(); |
| } |
| |
| let cached_input_source = null; |
| function updateCachedInputSource(id) { |
| let input_sources = getCurrentInputSources(); |
| assert_less_than(id, input_sources.length); |
| cached_input_source = input_sources[id]; |
| } |
| |
| function validateAdded(length) { |
| assert_not_equals(lastAdded, null); |
| assert_equals(lastAdded.length, length, |
| "Added length matches expectations"); |
| |
| let currentSources = getCurrentInputSources(); |
| lastAdded.forEach((source) => { |
| assert_true(currentSources.includes(source), |
| "Every element in added should be in the input source list"); |
| }); |
| } |
| |
| function validateRemoved(length) { |
| assert_not_equals(lastRemoved, null); |
| assert_equals(lastRemoved.length, length, |
| "Removed length matches expectations"); |
| |
| let currentSources = getCurrentInputSources(); |
| lastRemoved.forEach((source) => { |
| assert_false(currentSources.includes(source), |
| "No element in removed should be in the input source list"); |
| }); |
| } |
| |
| function validateCachedAddedPresence(presence) { |
| assert_not_equals(lastAdded, null); |
| assert_not_equals(cached_input_source, null); |
| assert_equals(lastAdded.includes(cached_input_source), presence, |
| "Presence of cached input in lastAdded matches expectation"); |
| } |
| |
| function validateCachedRemovedPresence(presence) { |
| assert_not_equals(lastRemoved, null); |
| assert_not_equals(cached_input_source, null); |
| assert_equals(lastRemoved.includes(cached_input_source), presence, |
| "Presence of cached input in lastRemoved matches expectation"); |
| } |
| |
| |
| </script> |
| </body> |
| </html> |