Closed Bug 1637933 Opened 5 months ago Closed 4 months ago

[wpt-sync] Sync PR 23595 - device orientation: Ensure new reading values are available in tests.

Categories

(Testing :: web-platform-tests, task, P4)

task

Tracking

(firefox78 fixed)

RESOLVED FIXED
mozilla78
Tracking Status
firefox78 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 23595 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/23595
Details from upstream follow.

Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> wrote:

device orientation: Ensure new reading values are available in tests.

Several tests in external/wpt/orientation-event/ have been flaky, especially
the Device Orientation ones.

The Device Orientation spec implementation in Blink uses its own timer at
60Hz to read from the shared memory buffer updated by the platform sensors,
rather than relying on OnSensorReadingChanged() being called by the platform
side. The MockSensor implementation in WPT uses window.setInterval() to
update the shared memory buffer and simulate a real platform sensor.

For some reason, the Mac bots in particular seem to cause those two timers
to get out of sync quite often, in which case the Device Orientation
implementation might end up reading an older value even though a test has
already called setMock{Motion,Orientation}Data() again.

Fix it by adding a workaround: in the Device Orientation tests (but not the
Generic Sensors ones), we immediately update the shared memory buffer when
changing a mock sensor's reading so that the value will always be available
to the Device Orientation code.

Bug: 1081633
Change-Id: Id12bbfc5c2b2f9dca6127797a95982b208fc4b5b
Reviewed-on: https://chromium-review.googlesource.com/2199066
WPT-Export-Revision: 1bada52ed619d7cd9c37fa4fff53aa1f58ec93aa

CI Results

Ran 0 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 14 tests and 1 subtests

Status Summary

Firefox

OK : 14
FAIL: 19

Chrome

OK : 14
PASS: 1
FAIL: 18

Safari

OK : 14
PASS: 1
FAIL: 18

Links

GitHub PR Head
GitHub PR Base

Details

Firefox-only Failures

/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html
Event interfaces and event handlers are not exposed on window.: FAIL

New Tests That Don't Pass

/orientation-event/orientation/absolute-fallback.https.html
Tests that deviceorientation falls back to using absolute orientation data if relative is unavailable.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/multiple-event-listeners.https.html
Tests using multiple event handlers for the Device Orientation API.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/no-synchronous-events.https.html
Tests that events are never fired synchronously from a call to window.addEventListener().: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/add-listener-from-callback.https.html
Tests that adding a new deviceorientation event listener from a callback works as expected.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/motion/add-during-dispatch.https.html
Test no fire listeners added during event dispatch.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/basic-operation.https.html
If UA can never provide orientation information, the event should be fired as a null event.: FAIL (Chrome: FAIL, Safari: FAIL)
Tests basic operation of deviceorientation event using mock data.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/device-orientation-events-of-detached-documents.https.html
Adding an event listener on the window of a detached document does not crash.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html
Event interfaces and event handlers are not exposed on window.: FAIL (Chrome: PASS, Safari: PASS)
addEventListener() for deviceorientationabsolute does not crash but the handler never fires.: FAIL (Chrome: FAIL, Safari: FAIL)
addEventListener() for devicemotion does not crash but the handler never fires.: FAIL (Chrome: FAIL, Safari: FAIL)
addEventListener() for deviceorientation does not crash but the handler never fires.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/basic-operation-absolute.https.html
Tests basic operation of deviceorientationabsolute event using mock data.: FAIL (Chrome: FAIL, Safari: FAIL)
If UA can never provide absolute information, the event should be fired as a null event.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/motion/multiple-event-listeners.https.html
Tests using multiple event handlers for the Device Motion API.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/updates.https.html
Tests that updates to the orientation causes new events to fire.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/motion/null-values.https.html
Tests using null values for some or all of the event properties.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/motion/add-listener-from-callback.https.html
Tests that adding a new devicemotion event listener from a callback works as expected.: FAIL (Chrome: FAIL, Safari: FAIL)
/orientation-event/orientation/null-values.https.html
Tests using null values for some of the event properties.: FAIL (Chrome: FAIL, Safari: FAIL)

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/cc33048a727f
[wpt PR 23595] - device orientation: Ensure new reading values are available in tests., a=testonly
Status: NEW → RESOLVED
Closed: 4 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla78
You need to log in before you can comment on or make changes to this bug.