зеркало из https://github.com/mozilla/gecko-dev.git
83 строки
2.7 KiB
HTML
83 строки
2.7 KiB
HTML
<!DOCTYPE HTML>
|
|
<meta charset=utf-8>
|
|
<title>PerformanceObservers: PerformanceObserverInit.buffered</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="performanceobservers.js"></script>
|
|
<h1>PerformanceObservers: PerformanceObserverInit.buffered</h1>
|
|
<p>
|
|
PerformanceObserverInit.buffered should retrieve previously buffered entries
|
|
</p>
|
|
<div id="log"></div>
|
|
<script>
|
|
async_test(function (t) {
|
|
function initTest() {
|
|
new PerformanceObserver(function (entryList, observer) {
|
|
entryList.getEntries().forEach(function(entry) {
|
|
if (shouldExclude(entry)) {
|
|
return;
|
|
}
|
|
|
|
observedEntries.push(entry);
|
|
if (observedEntries.length === entryTypes.length) {
|
|
observer.disconnect();
|
|
runTest();
|
|
}
|
|
});
|
|
}).observe({entryTypes});
|
|
|
|
// creates a `resource` entry
|
|
var img = document.createElement("img");
|
|
img.src = "./resources/square.png";
|
|
document.body.appendChild(img);
|
|
|
|
performance.mark("markName"); // creates a `mark` entry
|
|
performance.measure("measureName"); // creates a `measure` entry
|
|
}
|
|
function shouldExclude(entry) {
|
|
// exclude all `resource` entries that aren't for "square.png"
|
|
return entry.type === "resource" && entry.name.indexOf("square.png") === -1
|
|
}
|
|
function runTest() {
|
|
// this PerformanceObserver is a nop because we've already been notified about all of our `entryTypes`
|
|
var po_nop = new PerformanceObserver(function (entryList, observer) {
|
|
if (entryList.getEntries().find(function(entry) {
|
|
return !shouldExclude(entry);
|
|
})) {
|
|
assert_unreached("this PerformanceObserver callback should never be called");
|
|
}
|
|
});
|
|
po_nop.observe({
|
|
entryTypes,
|
|
buffered: false
|
|
});
|
|
|
|
// this PerformanceObserver should be notified about the previously buffered entries
|
|
const bufferedEntries = [];
|
|
new PerformanceObserver(function (entryList, observer) {
|
|
entryList.getEntries().forEach(function(entry) {
|
|
if (shouldExclude(entry)) {
|
|
return;
|
|
}
|
|
|
|
bufferedEntries.push(entry);
|
|
if (bufferedEntries.length === entryTypes.length) {
|
|
observer.disconnect();
|
|
po_nop.disconnect();
|
|
checkEntries(bufferedEntries, observedEntries);
|
|
t.done();
|
|
}
|
|
});
|
|
}).observe({
|
|
entryTypes,
|
|
buffered: true
|
|
});
|
|
}
|
|
|
|
const entryTypes = ["navigation", "resource", "mark", "measure"];
|
|
const observedEntries = [];
|
|
initTest();
|
|
}, "PerformanceObserverInit.buffered should retrieve previously buffered entries");
|
|
|
|
</script>
|