diff --git a/src/browser/tests/performance_observer/performance_observer.html b/src/browser/tests/performance_observer/performance_observer.html index 7b5b6c9e..efa90e80 100644 --- a/src/browser/tests/performance_observer/performance_observer.html +++ b/src/browser/tests/performance_observer/performance_observer.html @@ -69,3 +69,31 @@ + + diff --git a/src/browser/webapi/PerformanceObserver.zig b/src/browser/webapi/PerformanceObserver.zig index ad130c97..cd6a672e 100644 --- a/src/browser/webapi/PerformanceObserver.zig +++ b/src/browser/webapi/PerformanceObserver.zig @@ -113,6 +113,18 @@ pub fn observe( // Update interests. self._interests = interests; + + // Deliver existing entries if buffered option is set. + if (options.buffered) { + for (page.window._performance._entries.items) |entry| { + if (self.interested(entry)) { + try self._entries.append(page.arena, entry); + } + } + if (self.hasRecords()) { + try self.dispatch(page); + } + } } pub fn disconnect(self: *PerformanceObserver, page: *Page) void {