<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>functionality test of window.performance.clearMarks</title> <link rel="author" title="Intel" href="http://www.intel.com/" /> <link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/performance-timeline-utils.js"></script> <script src="resources/webperftestharness.js"></script> <script src="resources/webperftestharnessextension.js"></script> <script> setup({ explicit_done: true }); function onload_test() { const entrylist_checker = new performance_entrylist_checker('mark'); const string_mark_names = mark_names.map(function (x) { return String(x)}); mark_names.forEach(function(name) { performance.mark(name); }); for (let i = 0; i < mark_names.length; ++i) { performance.clearMarks(mark_names[i]); const retained_entries = performance.getEntriesByType('mark'); const non_retained_entries = performance.getEntriesByName(mark_names[i], 'mark'); entrylist_checker.entrylist_check(retained_entries, mark_names.length - i - 1, string_mark_names, 'First loop: checking entries after removing "' + mark_names[i] + '". '); test_equals(non_retained_entries.length, 0, 'First loop: marks that we cleared for "' + mark_names[i] + '" should not exist anymore.'); } mark_names.forEach(function(name) { performance.mark(name); }); performance.clearMarks(); test_equals(performance.getEntriesByType('mark').length, 0, 'No marks should exist after we clear all.'); // Following cases test clear existed mark name that is tied for two times. mark_names.forEach(function(name) { performance.mark(name); }); mark_names.forEach(function(name) { performance.mark(name); }); for (let i = 0; i < mark_names.length; ++i) { performance.clearMarks(mark_names[i]); const retained_entries = performance.getEntriesByType('mark'); const non_retained_entries = performance.getEntriesByName(mark_names[i], 'mark'); entrylist_checker.entrylist_check(retained_entries, (mark_names.length - i - 1) * 2, string_mark_names, 'Second loop: checking entries after removing "' + mark_names[i] + '". '); test_equals(non_retained_entries.length, 0, 'Second loop: marks that we cleared for "' + mark_names[i] + '" should not exist anymore.'); } // Following cases test clear functionality when mark names are tied for two times. mark_names.forEach(function(name) { performance.mark(name); }); mark_names.forEach(function(name) { performance.mark(name); }); var entry_number_before_useless_clear = performance.getEntriesByType('Mark').length; performance.clearMarks('NonExist'); var entry_number_after_useless_clear = performance.getEntriesByType('Mark').length; test_equals(entry_number_before_useless_clear, entry_number_after_useless_clear, 'Nothing should happen if we clear a non-exist mark.'); performance.clearMarks(); test_equals(performance.getEntriesByType('mark').length, 0, 'No marks should exist when we clear all.'); done(); } </script> </head> <body onload=onload_test()> <h1>Description</h1> <p>This test validates functionality of the interface window.performance.clearMarks.</p> <div id="log"></div> </body> </html>