| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="UTF-8" /> |
| <title>window.performance User Timing clearMeasures() method is working properly</title> |
| <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> |
| <link rel="help" href="http://www.w3.org/TR/user-timing/#dom-performance-clearmeasures"/> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/webperftestharness.js"></script> |
| |
| <script type="text/javascript"> |
| // test measures |
| var measureName1 = "measure1"; |
| var measureName2 = "measure2"; |
| var measureName3 = "measureUndefined"; |
| var measureTestDelay = 200; |
| var measureEntryNames; |
| var entries; |
| |
| setup({explicit_done: true}); |
| |
| test_namespace(); |
| |
| function onload_test() |
| { |
| // test for existance of User Timing and Performance Timeline interface |
| if (window.performance.mark == undefined || |
| window.performance.clearMarks == undefined || |
| window.performance.measure == undefined || |
| window.performance.clearMeasures == undefined || |
| window.performance.getEntriesByName == undefined || |
| window.performance.getEntriesByType == undefined || |
| window.performance.getEntries == undefined) |
| { |
| test_true(false, |
| "The User Timing and Performance Timeline interfaces, which are required for this test, " + |
| "are defined."); |
| |
| done(); |
| } |
| else |
| { |
| // create measures using the test delay |
| setTimeout(measure_test_cb, measureTestDelay); |
| } |
| } |
| |
| function measure_test_cb() |
| { |
| // create the test measures; only create "measure1" and "measure2", "measureUndefined" is a non-existent |
| // measure; give "measure1" a startMark of "navigationStart" and "measure2" a startMark of |
| // "responseEnd", this way, "measure1" always come first in a PerformanceEntryList returned from a |
| // Performance Timeline accessor |
| window.performance.measure(measureName1, "navigationStart"); |
| window.performance.measure(measureName2, "responseEnd"); |
| |
| // test that two measures have been created |
| entries = window.performance.getEntriesByType("measure"); |
| test_equals(entries.length, 2, "Two measures have been created for this test."); |
| |
| // clear non-existent measure |
| window.performance.clearMeasures(measureName3); |
| |
| // test that "measure1" still exists |
| entries = window.performance.getEntriesByName(measureName1); |
| test_true(entries[0].name == measureName1, |
| "After a call to window.performance.clearMeasures(\"" + measureName3 + "\"), where \"" + measureName3 + |
| "\" is a non-existent measure, window.performance.getEntriesByName(\"" + measureName1 + "\") " + |
| "returns an object containing the \"" + measureName1 + "\" measure."); |
| |
| // test that "measure2" still exists |
| entries = window.performance.getEntriesByName(measureName2); |
| test_true(entries[0].name == measureName2, |
| "After a call to window.performance.clearMeasures(\"" + measureName3 + "\"), where \"" + measureName3 + |
| "\" is a non-existent measure, window.performance.getEntriesByName(\"" + measureName2 + "\") " + |
| "returns an object containing the \"" + measureName2 + "\" measure."); |
| |
| // clear existent measure |
| window.performance.clearMeasures(measureName1); |
| |
| // test that "measure1" was cleared |
| entries = window.performance.getEntriesByName(measureName1); |
| pass = true; |
| for (var i in entries) |
| { |
| pass = false; |
| } |
| test_true(pass, |
| "After a call to window.performance.clearMeasures(\"" + measureName1 + "\"), " + |
| "window.performance.getEntriesByName(\"" + measureName1 + "\") returns an empty object."); |
| |
| // test that "measure2" still exists |
| entries = window.performance.getEntriesByName(measureName2); |
| test_true(entries[0].name == measureName2, |
| "After a call to window.performance.clearMeasures(\"" + measureName1 + "\"), " + |
| "window.performance.getEntriesByName(\"" + measureName2 + "\") returns an object containing the " + |
| "\"" + measureName2 + "\" measure."); |
| |
| // clear all measures |
| window.performance.clearMeasures(); |
| |
| // test that all measures were cleared |
| entries = window.performance.getEntriesByType("measure"); |
| pass = true; |
| for (var i in entries) |
| { |
| pass = false; |
| } |
| test_true(pass, |
| "After a call to window.performance.clearMeasures(), " + |
| "window.performance.getEntriesByType(\"measure\") returns an empty object."); |
| |
| done(); |
| } |
| </script> |
| </head> |
| <body onload="onload_test();"> |
| <h1>Description</h1> |
| <p>This test validates that the performance.clearMeasures() method is working properly. This test creates the |
| following measures to test this method: |
| <ul> |
| <li>"measure1"</li> |
| <li>"measure2"</li> |
| </ul> |
| After creating each measure, performance.clearMeasures() is called three times. First, it is provided with a |
| name of "measureUndefined", a non-existent measure, which shouldn't change the state of the Performance |
| Timeline. Next, it is provided with a name of "measure2", after which, this measure should no longer be |
| present in the Performance Timeline. Finally, performance.clearMeasures() is called without any name |
| provided. After this call, no measures should be present in the Performance Timeline. The state of the |
| Performance Timeline is tested with the performance.getEntriesByType() and performance.getEntries() methods. |
| </p> |
| |
| <div id="log"></div> |
| </body> |
| </html> |