| // META: script=performanceobservers.js | |
| async_test(function (t) { | |
| var observer = new PerformanceObserver( | |
| t.step_func(function (entryList, obs) { | |
| assert_unreached("This callback must not be invoked"); | |
| }) | |
| ); | |
| observer.observe({entryTypes: ["mark", "measure", "navigation"]}); | |
| observer.disconnect(); | |
| self.performance.mark("mark1"); | |
| self.performance.measure("measure1"); | |
| t.step_timeout(function () { | |
| t.done(); | |
| }, 2000); | |
| }, "disconnected callbacks must not be invoked"); | |
| test(function () { | |
| var obs = new PerformanceObserver(function () { return true; }); | |
| obs.disconnect(); | |
| obs.disconnect(); | |
| }, "disconnecting an unconnected observer is a no-op"); | |
| async_test(function (t) { | |
| var observer = new PerformanceObserver( | |
| t.step_func(function (entryList, obs) { | |
| assert_unreached("This callback must not be invoked"); | |
| }) | |
| ); | |
| observer.observe({entryTypes: ["mark"]}); | |
| self.performance.mark("mark1"); | |
| observer.disconnect(); | |
| self.performance.mark("mark2"); | |
| t.step_timeout(function () { | |
| t.done(); | |
| }, 2000); | |
| }, "An observer disconnected after a mark must not have its callback invoked"); |