summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html')
-rw-r--r--testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html134
1 files changed, 134 insertions, 0 deletions
diff --git a/testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html b/testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html
new file mode 100644
index 000000000..3056ddbb4
--- /dev/null
+++ b/testing/web-platform/tests/user-timing/test_user_timing_clear_marks.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+ <title>window.performance User Timing clearMarks() 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-clearmarks"/>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="resources/webperftestharness.js"></script>
+
+ <script type="text/javascript">
+ // test marks
+ var markName1 = "mark1";
+ var markName2 = "mark2";
+ var markName3 = "markUndefined";
+ var markTestDelay = 200;
+ var entries;
+ var pass;
+
+ 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 a mark using the test delay; the mark's value should be equivalent to the loadEventStart
+ // navigation timing attribute plus the test delay
+ setTimeout(mark_test_cb, markTestDelay);
+ }
+ }
+
+ function mark_test_cb()
+ {
+ // create the test marks; only create "mark1" and "mark2", "markUndefined" is a non-existent mark
+ window.performance.mark(markName1);
+ window.performance.mark(markName2);
+
+ // test that two marks have been created
+ entries = window.performance.getEntriesByType("mark");
+ test_equals(entries.length, 2, "Two marks have been created for this test.");
+
+ // clear non-existent mark
+ window.performance.clearMarks(markName3);
+
+ // test that "mark1" still exists
+ entries = window.performance.getEntriesByName(markName1);
+ test_true(entries[0].name == markName1,
+ "After a call to window.performance.clearMarks(\"" + markName3 + "\"), where \"" + markName3 +
+ "\" is a non-existent mark, window.performance.getEntriesByName(\"" + markName1 + "\") " +
+ "returns an object containing the \"" + markName1 + "\" mark.");
+
+ // test that "mark2" still exists
+ entries = window.performance.getEntriesByName(markName2);
+ test_true(entries[0].name == markName2,
+ "After a call to window.performance.clearMarks(\"" + markName3 + "\"), where \"" + markName3 +
+ "\" is a non-existent mark, window.performance.getEntriesByName(\"" + markName2 + "\") " +
+ "returns an object containing the \"" + markName2 + "\" mark.");
+
+ // clear existent mark
+ window.performance.clearMarks(markName1);
+
+ // test that "mark1" was cleared
+ entries = window.performance.getEntriesByName(markName1);
+ pass = true;
+ for (var i in entries)
+ {
+ pass = false;
+ }
+ test_true(pass,
+ "After a call to window.performance.clearMarks(\"" + markName1 + "\"), " +
+ "window.performance.getEntriesByName(\"" + markName1 + "\") returns an empty object.");
+
+ // test that "mark2" still exists
+ entries = window.performance.getEntriesByName(markName2);
+ test_true(entries[0].name == markName2,
+ "After a call to window.performance.clearMarks(\"" + markName1 + "\"), " +
+ "window.performance.getEntriesByName(\"" + markName2 + "\") returns an object containing the " +
+ "\"" + markName2 + "\" mark.");
+
+ // clear all marks
+ window.performance.clearMarks();
+
+ // test that all marks were cleared
+ entries = window.performance.getEntriesByType("mark");
+ pass = true;
+ for (var i in entries)
+ {
+ pass = false;
+ }
+ test_true(pass,
+ "After a call to window.performance.clearMarks(), " +
+ "window.performance.getEntriesByType(\"mark\") returns an empty object.");
+
+ done();
+ }
+ </script>
+ </head>
+ <body onload="onload_test();">
+ <h1>Description</h1>
+ <p>This test validates that the performance.clearMarks() method is working properly. This test creates the
+ following marks to test this method:
+ <ul>
+ <li>"mark1"</li>
+ <li>"mark2"</li>
+ </ul>
+ After creating each mark, performance.clearMarks() is called three times. First, it is provided with a name
+ of "markUndefined", a non-existent mark, which shouldn't change the state of the Performance Timeline. Next,
+ it is provided with a name of "mark2", after which, this mark should no longer be present in the Performance
+ Timeline. Finally, performance.clearMarks() is called without any name provided. After this call, no marks
+ 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>