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
Raw File
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>
back to top