| <!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> |