Update web-platform-tests to revision 8a2ceb5f18911302b7a5c1cd2791f4ab50ad4326

This commit is contained in:
Josh Matthews 2017-10-12 09:25:50 -04:00
parent 462c272380
commit 1f531f66ea
5377 changed files with 174916 additions and 84369 deletions

View file

@ -1,5 +1,6 @@
@zqzhang
@dontcallmedom
@tobie
@riju
@Honry
@alexshalamov
@pozdnyakov

View file

@ -0,0 +1,103 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>OrientationSensor Test</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/orientation-sensor/">
<link rel="help" href="https://w3c.github.io/sensors/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/generic-sensor/generic-sensor-tests.js"></script>
<div id="log"></div>
<script>
//IEEE 754: single precision retricts to 7 decimal digits
const float_precision = 1e-7;
function create_matrix(quat) {
let X = quat[0];
let Y = quat[1];
let Z = quat[2];
let W = quat[3];
let mat = new Array(
1-2*Y*Y-2*Z*Z, 2*X*Y-2*Z*W, 2*X*Z+2*Y*W, 0,
2*X*Y+2*Z*W, 1-2*X*X-2*Z*Z, 2*Y*Z-2*X*W, 0,
2*X*Z-2*Y*W, 2*Y*Z+2*W*X, 1-2*X*X-2*Y*Y, 0,
0, 0, 0, 1
);
return mat;
}
function checkQuaternion(t, sensorType) {
let sensor = new sensorType();
sensor.onreading = t.step_func_done(() => {
assert_equals(sensor.quaternion.length, 4);
assert_true(sensor.quaternion instanceof Array);
sensor.stop();
});
sensor.onerror = t.step_func_done(unreached);
sensor.start();
};
function checkPopulateMatrix(t, sensorType) {
let sensor = new sensorType();
sensor.onerror = t.step_func_done(unreached);
//Throws with insufficient buffer space.
assert_throws({ name: 'TypeError' }, () => sensor.populateMatrix(new Float32Array(15)));
//Throws if no orientation data available.
assert_throws({ name: 'NotReadableError' }, () => sensor.populateMatrix(new Float32Array(16)));
if (window.SharedArrayBuffer) {
// Throws if passed SharedArrayBuffer view.
assert_throws({ name: 'TypeError' }, () => sensor.populateMatrix(new Float32Array(new SharedArrayBuffer(16))));
}
sensor.onreading = t.step_func_done(() => {
let quat = sensor.quaternion;
let mat_expect = create_matrix(quat);
// Works for all supported types.
let mat_32 = new Float32Array(16);
sensor.populateMatrix(mat_32);
assert_array_approx_equals(mat_32, mat_expect, float_precision);
let mat_64 = new Float64Array(16);
sensor.populateMatrix(mat_64);
assert_array_equals(mat_64, mat_expect);
let mat_dom = new DOMMatrix();
sensor.populateMatrix(mat_dom);
assert_array_equals(mat_dom.toFloat64Array(), mat_expect);
// Sets every matrix element.
mat_64.fill(123);
sensor.populateMatrix(mat_64);
assert_array_equals(mat_64, mat_expect);
sensor.stop();
});
sensor.start();
}
async_test(t => {
checkQuaternion(t, AbsoluteOrientationSensor);
}, "Test AbsoluteOrientationSensor.quaternion return a four-element FrozenArray.");
async_test(t => {
checkQuaternion(t, RelativeOrientationSensor);
}, "Test RelativeOrientationSensor.quaternion return a four-element FrozenArray.");
async_test(t => {
checkPopulateMatrix(t, AbsoluteOrientationSensor);
}, "Test AbsoluteOrientationSensor.populateMatrix() method works correctly.");
async_test(t => {
checkPopulateMatrix(t, RelativeOrientationSensor);
}, "Test RelativeOrientationSensor.populateMatrix() method works correctly.");
runGenericSensorTests(AbsoluteOrientationSensor);
runGenericSensorTests(RelativeOrientationSensor);
</script>

View file

@ -0,0 +1,21 @@
<meta charset="utf-8">
<title>AbsoluteOrientationSensor Test: insecure context</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/orientation-sensor/">
<link rel="help" href="https://w3c.github.io/sensors/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/generic-sensor/generic-sensor-tests.js"></script>
<div id="log"></div>
<h2>Note:</h2>
<ol>
<li>
Run test in an insecure context, e.g. http://example.com/.
</li>
</ol>
<script>
runGenericSensorInsecureContext(AbsoluteOrientationSensor);
runGenericSensorInsecureContext(RelativeOrientationSensor);
</script>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AbsoluteOrientationSensor Test: onerror</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/orientation-sensor/">
<link rel="help" href="https://w3c.github.io/sensors/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/generic-sensor/generic-sensor-tests.js"></script>
<div id="log"></div>
<h2>Precondition</h2>
<ol>
<li>
Disable the motion sensors which the underlying physical sensors include Accelerometer, Magnetometer, and (when present) Gyroscope or run test on a device without the motion sensors.
</li>
</ol>
<script>
runGenericSensorOnerror(AbsoluteOrientationSensor);
runGenericSensorOnerror(RelativeOrientationSensor);
</script>

View file

@ -8,82 +8,59 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<style>
pre {
display: none;
}
</style>
<div id="log"></div>
<pre id="idl">
interface Event {
};
interface Error {
};
dictionary EventInit {
};
<script id="idl" type="text/plain">
interface EventTarget {
};
interface EventHandler {
};
</pre>
</script>
<pre id="generic-idl">
[SecureContext]
<script id="orientation-idl" type="text/plain">
// The interface of Sensor is defined in
// https://www.w3.org/TR/generic-sensor/#idl-index
[SecureContext, Exposed=Window]
interface Sensor : EventTarget {
readonly attribute boolean activated;
readonly attribute DOMHighResTimeStamp? timestamp;
void start();
void stop();
attribute EventHandler onchange;
attribute EventHandler onreading;
attribute EventHandler onactivate;
attribute EventHandler onerror;
};
dictionary SensorOptions {
double? frequency;
};
[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
interface SensorErrorEvent : Event {
readonly attribute Error error;
};
dictionary SensorErrorEventInit : EventInit {
required Error error;
};
</pre>
<pre id="orientation-idl">
typedef (Float32Array or Float64Array or DOMMatrix) RotationMatrixType;
[Exposed=Window]
interface OrientationSensor : Sensor {
readonly attribute FrozenArray<double>? quaternion;
void populateMatrix(RotationMatrixType targetMatrix);
};
[Constructor(optional SensorOptions sensorOptions)]
[Constructor(optional SensorOptions sensorOptions), Exposed=Window]
interface AbsoluteOrientationSensor : OrientationSensor {
};
</pre>
[Constructor(optional SensorOptions sensorOptions), Exposed=Window]
interface RelativeOrientationSensor : OrientationSensor {
};
</script>
<script>
(() => {
"use strict";
let idl_array = new IdlArray();
idl_array.add_untested_idls(document.getElementById('idl').textContent);
idl_array.add_untested_idls(document.getElementById('generic-idl').textContent);
idl_array.add_idls(document.getElementById('orientation-idl').textContent);
idl_array.add_objects({
AbsoluteOrientationSensor: ['new AbsoluteOrientationSensor();']
AbsoluteOrientationSensor: ['new AbsoluteOrientationSensor();'],
RelativeOrientationSensor: ['new RelativeOrientationSensor();']
});
idl_array.test();
})();
</script>