summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/performance-timeline/po-observe.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/performance-timeline/po-observe.html
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/performance-timeline/po-observe.html')
-rw-r--r--testing/web-platform/tests/performance-timeline/po-observe.html86
1 files changed, 86 insertions, 0 deletions
diff --git a/testing/web-platform/tests/performance-timeline/po-observe.html b/testing/web-platform/tests/performance-timeline/po-observe.html
new file mode 100644
index 0000000000..a48f0f3764
--- /dev/null
+++ b/testing/web-platform/tests/performance-timeline/po-observe.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>PerformanceObservers: PerformanceObserverInit.buffered</title>
+<meta name="timeout" content="long">
+<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.entryType === "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,
+ });
+
+ // this PerformanceObserver should be notified about the previously
+ // buffered mark entry only
+ const bufferedEntries = [];
+ new PerformanceObserver(function (entryList, observer) {
+ entryList.getEntries().forEach(function(entry) {
+ if (shouldExclude(entry)) {
+ return;
+ }
+
+ bufferedEntries.push(entry);
+ if (bufferedEntries.length === 1) {
+ observer.disconnect();
+ po_nop.disconnect();
+ for (i = 0; i < bufferedEntries.length; i++) {
+ assert_equals(bufferedEntries[i].entryType, "mark")
+ }
+ t.done();
+ }
+ });
+ }).observe({
+ type: "mark",
+ buffered: true
+ });
+ }
+
+ const entryTypes = ["navigation", "resource", "mark", "measure"];
+ const observedEntries = [];
+ initTest();
+ }, "PerformanceObserverInit.buffered should retrieve previously buffered entries");
+
+</script>