3 <title>PerformanceObservers: PerformanceObserverInit.buffered
</title>
4 <meta name=
"timeout" content=
"long">
5 <script src=
"/resources/testharness.js"></script>
6 <script src=
"/resources/testharnessreport.js"></script>
7 <script src=
"performanceobservers.js"></script>
8 <h1>PerformanceObservers: PerformanceObserverInit.buffered
</h1>
10 PerformanceObserverInit.buffered should retrieve previously buffered entries
14 async_test(function (t
) {
16 new PerformanceObserver(function (entryList
, observer
) {
17 entryList
.getEntries().forEach(function(entry
) {
18 if (shouldExclude(entry
)) {
22 observedEntries
.push(entry
);
23 if (observedEntries
.length
=== entryTypes
.length
) {
24 observer
.disconnect();
28 }).observe({entryTypes
});
30 // creates a `resource` entry
31 var img
= document
.createElement("img");
32 img
.src
= "./resources/square.png";
33 document
.body
.appendChild(img
);
35 performance
.mark("markName"); // creates a `mark` entry
36 performance
.measure("measureName"); // creates a `measure` entry
38 function shouldExclude(entry
) {
39 // exclude all `resource` entries that aren't for "square.png"
40 return entry
.entryType
=== "resource" &&
41 entry
.name
.indexOf("square.png") === -1;
44 // this PerformanceObserver is a nop because we've already been notified about all of our `entryTypes`
45 var po_nop
= new PerformanceObserver(function (entryList
, observer
) {
46 if (entryList
.getEntries().find(function(entry
) {
47 return !shouldExclude(entry
);
49 assert_unreached("this PerformanceObserver callback should never be called");
57 // this PerformanceObserver should be notified about the previously
58 // buffered mark entry only
59 const bufferedEntries
= [];
60 new PerformanceObserver(function (entryList
, observer
) {
61 entryList
.getEntries().forEach(function(entry
) {
62 if (shouldExclude(entry
)) {
66 bufferedEntries
.push(entry
);
67 if (bufferedEntries
.length
=== 1) {
68 observer
.disconnect();
70 for (i
= 0; i
< bufferedEntries
.length
; i
++) {
71 assert_equals(bufferedEntries
[i
].entryType
, "mark")
82 const entryTypes
= ["navigation", "resource", "mark", "measure"];
83 const observedEntries
= [];
85 }, "PerformanceObserverInit.buffered should retrieve previously buffered entries");