// META: timeout=long // META: script=/resources/test-only-api.js // META: script=resources/pressure-helpers.js 'use strict'; pressure_test(async (t, mockPressureService) => { const iframe = document.createElement('iframe'); document.body.appendChild(iframe); iframe.contentWindow.focus(); await new Promise(resolve => { const observer = new PressureObserver(resolve); t.add_cleanup(() => { observer.disconnect(); iframe.remove(); }); observer.observe('cpu'); mockPressureService.setPressureUpdate('cpu', 'critical'); mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0); }); }, 'Observer in main frame should receive PressureRecord when focused on same-origin iframe'); pressure_test(async (t, mockPressureService) => { const iframe = document.createElement('iframe'); document.body.appendChild(iframe); // Focus on the main frame to make the iframe lose focus, so that // PressureObserver in the iframe can't receive PressureRecord by default. // However, if the iframe is same-origin with the main frame and the main // frame has focus, PressureObserver in iframe can receive PressureRecord. window.focus(); await new Promise(resolve => { const observer = new iframe.contentWindow.PressureObserver(resolve); t.add_cleanup(() => { observer.disconnect(); iframe.remove(); }); observer.observe('cpu'); mockPressureService.setPressureUpdate('cpu', 'critical'); mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0); }); }, 'Observer in iframe should receive PressureRecord when focused on same-origin main frame');