summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/performance-timeline/po-observe-type.any.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /testing/web-platform/tests/performance-timeline/po-observe-type.any.js
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/performance-timeline/po-observe-type.any.js')
-rw-r--r--testing/web-platform/tests/performance-timeline/po-observe-type.any.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/testing/web-platform/tests/performance-timeline/po-observe-type.any.js b/testing/web-platform/tests/performance-timeline/po-observe-type.any.js
new file mode 100644
index 0000000000..b9854cc146
--- /dev/null
+++ b/testing/web-platform/tests/performance-timeline/po-observe-type.any.js
@@ -0,0 +1,64 @@
+// META: script=performanceobservers.js
+
+test(function () {
+ const obs = new PerformanceObserver(() => {});
+ assert_throws_js(TypeError, function () {
+ obs.observe({});
+ });
+ assert_throws_js(TypeError, function () {
+ obs.observe({entryType: ['mark', 'measure']});
+ });
+}, "Calling observe() without 'type' or 'entryTypes' throws a TypeError");
+
+test(() => {
+ const obs = new PerformanceObserver(() =>{});
+ obs.observe({entryTypes: ["mark"]});
+ assert_throws_dom('InvalidModificationError', function () {
+ obs.observe({type: "measure"});
+ });
+}, "Calling observe() with entryTypes and then type should throw an InvalidModificationError");
+
+test(() => {
+ const obs = new PerformanceObserver(() =>{});
+ obs.observe({type: "mark"});
+ assert_throws_dom('InvalidModificationError', function () {
+ obs.observe({entryTypes: ["measure"]});
+ });
+}, "Calling observe() with type and then entryTypes should throw an InvalidModificationError");
+
+test(() => {
+ const obs = new PerformanceObserver(() =>{});
+ assert_throws_js(TypeError, function () {
+ obs.observe({type: "mark", entryTypes: ["measure"]});
+ });
+}, "Calling observe() with type and entryTypes should throw a TypeError");
+
+test(function () {
+ const obs = new PerformanceObserver(() =>{});
+ // Definitely not an entry type.
+ obs.observe({type: "this-cannot-match-an-entryType"});
+ // Close to an entry type, but not quite.
+ obs.observe({type: "marks"});
+}, "Passing in unknown values to type does throw an exception.");
+
+async_test(function (t) {
+ let observedMark = false;
+ let observedMeasure = false;
+ const observer = new PerformanceObserver(
+ t.step_func(function (entryList, obs) {
+ observedMark |= entryList.getEntries().filter(
+ entry => entry.entryType === 'mark').length;
+ observedMeasure |= entryList.getEntries().filter(
+ entry => entry.entryType === 'measure').length
+ // Only conclude the test once we receive both entries!
+ if (observedMark && observedMeasure) {
+ observer.disconnect();
+ t.done();
+ }
+ })
+ );
+ observer.observe({type: "mark"});
+ observer.observe({type: "measure"});
+ self.performance.mark("mark1");
+ self.performance.measure("measure1");
+}, "observe() with different type values stacks.");