diff --git a/polygerrit-ui/app/elements/core/gr-reporting/gr-reporting.js b/polygerrit-ui/app/elements/core/gr-reporting/gr-reporting.js index 6306933399..5cd4e97924 100644 --- a/polygerrit-ui/app/elements/core/gr-reporting/gr-reporting.js +++ b/polygerrit-ui/app/elements/core/gr-reporting/gr-reporting.js @@ -142,6 +142,22 @@ }; catchErrors(); + // PerformanceObserver interface is a browser API. + if (PerformanceObserver) { + const catchLongJsTasks = new PerformanceObserver(list => { + for (const task of list.getEntries()) { + // We are interested in longtask longer than 200 ms (default is 50 ms) + if (task.duration > 200) { + GrReporting.prototype.reporter(TIMING.TYPE, + TIMING.CATEGORY_UI_LATENCY, `Task ${task.name}`, + Math.round(task.duration), false); + } + } + }); + catchLongJsTasks.observe({entryTypes: ['longtask']}); + } + + // The Polymer pass of JSCompiler requires this to be reassignable // eslint-disable-next-line prefer-const let GrReporting = Polymer({