Revision 6668ff3716086d3f8efead0f5db2d8d2864c3563 authored by Robert Ma on 21 March 2018, 17:35:46 UTC, committed by Robert Ma on 21 March 2018, 17:35:46 UTC
1. Check the HTTP port of wptserve instead of HTTPS to avoid the unnecessary complexities of setting up SSL context (which may fail in some environments). 2. Use exponential backoff when waiting for wptserve and specify a maximum retry to avoid indefinite hang. 3. Use `terminate` instead of `kill` to give wptserve a chance to clean up, which is especially useful when running locally.
1 parent dbb38a6
measure_exceptions_navigation_timing.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>window.performance User Timing measure() method is throwing the proper exceptions</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="https://w3c.github.io/user-timing/#dom-performance-measure"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/webperftestharness.js"></script>
<script>
// test data
var zeroedNavTimingAtt = undefined;
setup(function () {
// for testing the INVALID_ACCESS_ERR exception, find a navigation timing attribute with a value of zero
for (var i in timingAttributes) {
if (window.performance.timing[timingAttributes[i]] == 0) {
zeroedNavTimingAtt = timingAttributes[i];
}
}
if (zeroedNavTimingAtt == undefined) {
throw new Error("A navigation timing attribute with a value of 0 was not found to test for the " +
"INVALID_ACCESS_ERR exception thrown by window.performance.measure().")
}
});
test(function () {
assert_throws("InvalidAccessError", function () {
window.performance.measure("measure", zeroedNavTimingAtt);
});
}, "window.performance.measure(\"measure\", \"" + zeroedNavTimingAtt + "\"), where \"" +
zeroedNavTimingAtt + "\" is a navigation timing attribute with a value of 0, throws a " +
"InvalidAccessError exception.");
test(function () {
assert_throws("InvalidAccessError", function () {
window.performance.measure("measure", zeroedNavTimingAtt, "responseEnd");
});
}, "window.performance.measure(\"measure\", \"" + zeroedNavTimingAtt + "\", " +
"\"responseEnd\"), where \"" + zeroedNavTimingAtt + "\" is a navigation timing " +
"attribute with a value of 0, throws a InvalidAccessError exception.");
test(function () {
assert_throws("InvalidAccessError", function () {
window.performance.measure("measure", "navigationStart", zeroedNavTimingAtt);
});
}, "window.performance.measure(\"measure\", \"navigationStart\", \"" + zeroedNavTimingAtt +
"\"), where \"" + zeroedNavTimingAtt + "\" is a navigation timing attribute with a " +
"value of 0, throws a InvalidAccessError exception.");
test(function () {
assert_throws("InvalidAccessError", function () {
window.performance.measure("measure", zeroedNavTimingAtt, zeroedNavTimingAtt);
});
}, "window.performance.measure(\"measure\", \"" + zeroedNavTimingAtt + "\", \"" +
zeroedNavTimingAtt + "\"), where \"" + zeroedNavTimingAtt + "\" is a navigation timing " +
"attribute with a value of 0, throws a InvalidAccessError exception.");
</script>
</head>
<body>
<h1>Description</h1>
<p><code>window.performance.measure()</code> method throws a InvalidAccessError
whenever a navigation timing attribute with a value of zero is provided as the startMark or endMark.
</p>
<div id="log"></div>
</body>
</html>
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...