1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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>
|